线性决策规则和广义决策规则的python包

pyldr的Python项目详细描述


用法:用户需要向sim提供类algs和模拟器。ALGS应该继承自ALGS。在下面的例子中,我们将分段线性(algs)和sim-resolve-first(simulator)提供给sim。sim.update()将求解模型,sim.avg(n)返回模拟结果。

示例:

从SIM卡导入*

从sim_resolve_first import*

从分段线性导入*

case=sim_resolve_first()

algs=分段线性(

sim=sim(大小写,algs)

sim.update()

#sim.train_mab()

打印模拟平均值(1000)

ALG和模拟器的结构:

SIM卡:

模拟器的唯一要求是有一个sim()函数来返回一个实现。如果有任何参数,则应在set_para()中实现。例如sim_resolve_first.py和sim_alp.py。

警报:

您应该提供的接口包括lift_value()、relation()、strategy()和update()。此外,还应该在类中描述提升方法。

分段线性示例:

对于范围内的t(self.t):

for j in range(self.J):

for k in range(self.div_num):

self.div_axis[t,j,k] = self.low_bound[t,j] + (self.up_bound[t,j]-self.low_bound[t,j])/float(self.div_num - 1) * k

self.xi[t,j,k] = self.script.add_var(0,self.div_axis[t,j,k])

对于范围内的t(self.t):

for j in range(self.J):

left = {}

for k in range(self.div_num):

left[self.xi[t,j,k]] = 1

右={}

右[自身常数]=1

self.script.add_lin_eq(左,右)

对于范围内的k(self.div_num):

self.script.add_lin_greater({self.xi[t,j,k]:1},{self.constant:0})

对于范围内的t(self.t):

for j in range(self.J):

left = {self.xi[t,j]:1}

right = {}

for k in range(self.div_num):

right[self.xi[t,j,k]] = self.div_axis[t,j,k]

self.script.add_lin_eq(左,右)

提升值(数据):

返回实现的提升值。

关系():

为项目设置依赖性self.p。例如,如果决策x(t,j)依赖于提升向量的前三个元素,那么self.p[t,j]={1,2,3}

策略(t,历史,x):

具有历史和优化决策变量x的阶段t的回报策略。

update():

更新提升方法。

分段线性py和三线性py是algs的例子。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java以编程方式最小化JInternalFrame?   java使用JsonPath将不均匀列表提取为类型化对象   spring如何将java/resources文件获取到InputStream?   Java逻辑错误并不总是存在   java Firebase,更新特定字段   Java stream groupby并同时加入以进行csv导出   java安卓:如果出现任何声音,监听器将录制声音   java如何从多个文件中轮询最后修改的文件并发送到apache camel中的目标端点?   java是否返回多个比较器?   JavaBean IO:Date MMM在CAPS中不解析   当JButton从另一个类单击时,java正在更新JLabel   基类中子类的Java泛型初始化   jakarta ee Java ee制作一个以毫秒为间隔的计时器来发送数据包   json Windows Azure日期格式转换为Java日期