从函数返回Pyomo优化的结果

时间:2017-09-04 12:01:05

标签: python optimization pyomo

我已经与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)

1 个答案:

答案 0 :(得分:0)

我最后通过将我的模型重写为AbstractModel来解决这个问题,将我的数据写入.dat文件并读取它(笨重,但我现在需要结果,所以必须完成)。出于某种原因,它现在可以正常工作,并且可以完成我所期望的一切。

事实证明我的问题是不可行的,这可能会增加我的问题,但至少使用这种方法,我可以使用results.write(),我能够找到以前不是这种情况。< / p>