我已经与Pyomo建立了一个问题,它优化了CHP单元的控制策略,该控制策略以下列方式(非常粗略地)布局:
class Problem
def OptiControl
<Pyomo Concrete model formulation>
return (model.obj.value())
问题类存在,因为我正在研究几种控制策略方法,所以我通过使用(例如)b = problem1.OptiControl()
来调用它们。
问题在于,如果我尝试返回目标的值,我的脚本会被卡住,当我按Ctrl + C时,我得到(' Signal', 2, 'recieved, but no process queued')
。此外,如果我写model.write()
脚本正常结束但IPython中没有显示任何内容。尝试打印model.obj.value()
也不起作用。
我认为这与我在一个函数中调用Pyomo的事实有关,因为该模型之前成功运行,但我不知道如何绕过它。
编辑:将值写入文件也不起作用。如果它有帮助,这是我解码模型的代码的摘录:
opt = SolverFactory("glpk") # Choose solver
solution = opt.solve(model) # Solve model
model.write()
with open('ffs.txt','w') as f:
model.obj.expr()
for t in model.P:
f.write(model.f["CHP",t].value)
答案 0 :(得分:0)
我最后通过将我的模型重写为AbstractModel来解决这个问题,将我的数据写入.dat文件并读取它(笨重,但我现在需要结果,所以必须完成)。出于某种原因,它现在可以正常工作,并且可以完成我所期望的一切。
事实证明我的问题是不可行的,这可能会增加我的问题,但至少使用这种方法,我可以使用results.write()
,我能够找到以前不是这种情况。< / p>