提问者:小点点

如何在Pyomo中获取约束中的所有变量?


我的问题很简单。给定Pyomo约束,如何轻松提取约束中出现的变量?

这个问题已经被问了好几次了。我相信Pyomo的内部结构已经被修改,提议的解决方案不再有效。

如何在Pyomo中获取约束的变量

访问pyomo约束中出现的所有变量

最低工作测试问题:

from pyomo.environ import *

m = ConcreteModel()

m.I = Set(initialize=[i for i in range(5)])

m.x = Var(m.I,bounds=(-10,10),initialize=1.0)
m.z = Var(bounds=(-100,100), initialize=5.0)

m.con1 = Constraint(expr=m.x[0] + m.x[1] - m.x[3] >= 10)
m.con2 = Constraint(expr=m.x[0]*m.x[3] + m.x[1] >= 0)
m.con3 = Constraint(expr=m.x[4]*m.x[3] + m.x[0]*m.x[3] - m.x[4] == 0)

m.obj = Objective(expr=sum(m.x[i]**2 for i in m.I))

m.pprint()

opt = SolverFactory('ipopt')
opt.options['max_iter'] = 0
opt.solve(m, tee=True)

在本例中,我希望以编程方式检查con1中的变量。


共1个答案

匿名用户

第二个链接有正确的解决方案:访问pyomo约束中出现的所有变量

identify_variables()仍然存在,但它似乎已移动到pyomo。果心expr。访客。它可能值得推广到pyomo中。果心expr名称空间。