Pyomo中的多索引约束或目标

时间:2017-08-31 09:41:23

标签: python optimization multidimensional-array set pyomo

我有一个相当基本的MILP,我正在尝试解决,但我的代码运行正常,我实际上没有得到任何值。我认为这是因为我的客观功能(因为将其改为微不足道的东西会产生答案):

def OPEX (m):
    return sum (m.Q_ng[u,t]*m.ng_price[t] + m.E_imp[t]*m.el_price_imp[t] - m.E_exp[t]*m.el_price_exp[t] for u in m.U for t in m.P)
m.obj = Objective(rule=OPEX)

我需要将ut的总和最小化,这是怎么回事?

1 个答案:

答案 0 :(得分:0)

我的问题最终成为我编写约束的方式。根据这本书 William E. Hart,Carl Laird,Jean-Paul Watson和David L. Woodruff:Pyomo - Python中的优化建模,您可以编写附加_rule的函数,然后在定义时您的约束只是在不使用规则的情况下将其命名为相同,例如

def BOIL_off_rule (m,t):
    return (0,m.f["BOIL",t]*Boiler_max,Boiler_max*y["BOIL",t])
m.BOIL_off = Constraint(m.P)

然而,这似乎不起作用(可能因为在书中他们使用coopr包括其他库/模块而不仅仅是Pyomo)