【问题标题】:pyomo: Connector for blocks not workingpyomo:块连接器不工作
【发布时间】: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


    【解决方案1】:

    在将模型发送到求解器之前,您是否应用了 expand_connectors 转换?

    TransformationFactory('core.expand_connectors').apply_to(m)
    

    【讨论】:

    • 成功了,非常感谢!不幸的是,“本书”中没有关于如何应用连接器的信息。对下一版很有帮助。
    猜你喜欢
    • 2018-05-15
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2014-01-13
    • 2016-03-11
    相关资源
    最近更新 更多