【发布时间】:2018-08-15 14:13:02
【问题描述】:
我正在尝试使用以下简单示例代码将两个块与 pyomo 中实现的“连接器”类连接起来。
from pyomo.environ import *
m = ConcreteModel()
# Block 01
m.block_01 = Block()
m.block_01.flow = Var(within=NonNegativeReals, bounds=(2, 10))
m.block_01.OUT = Connector(initialize= {'flow': m.block_01.flow})
# Block 02
m.block_02 = Block()
m.block_02.flow = Var(within=NonNegativeReals)
m.block_02.IN = Connector(initialize= {'flow': m.block_02.flow})
m.con = Constraint(expr=m.block_01.OUT == m.block_02.IN)
def _obj(_m):
return _m.block_01.flow + _m.block_02.flow
m.obj = Objective(rule=_obj)
“优化”后,所有变量都取其下限值(m.block_01.flow = 2 和 m.block_02.flow = 0)。所以连接器似乎没有为变量传输任何数据。
如果我正在使用:
m.con = Constraint(expr=m.block_01.flow == m.block_02.flow)
相反,它有效。然而,这不是连接器的想法,对吧?
关于问题原因的任何想法?
【问题讨论】:
标签: python-3.x pyomo