如何在 Pyomo 中获取约束中的所有变量?
How to get all variables in a constraint in Pyomo?
我的问题很简单。给定 Pyomo 约束,我如何轻松提取出现在约束中的变量?
这个问题已经被问过几次了。我相信 Pyomo 内部结构已被修改,建议的解决方案不再有效。
How to get variables of a constraint in 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
中的变量。
第二个link的正确解是:
identify_variables()
仍然存在,但看起来已移至 pyomo.core.expr.visitor
。
将它提升到 pyomo.core.expr
命名空间可能是值得的。
我的问题很简单。给定 Pyomo 约束,我如何轻松提取出现在约束中的变量?
这个问题已经被问过几次了。我相信 Pyomo 内部结构已被修改,建议的解决方案不再有效。
How to get variables of a constraint in 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
中的变量。
第二个link的正确解是:
identify_variables()
仍然存在,但看起来已移至 pyomo.core.expr.visitor
。
将它提升到 pyomo.core.expr
命名空间可能是值得的。