我有一个相当基本的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)
我需要将u
和t
的总和最小化,这是怎么回事?
答案 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)