如何在 Pyomo 中声明目标函数和约束(抽象模型)
Posted
技术标签:
【中文标题】如何在 Pyomo 中声明目标函数和约束(抽象模型)【英文标题】:How to declare objective function and constraints in Pyomo (Abstract model) 【发布时间】:2022-01-21 13:34:24 【问题描述】:我正在学习如何在 Pyomo 中创建抽象模型并进行了建模,但是,当我可视化 pprint 时,没有声明目标函数和约束。我怎样才能解决这个问题?我附上了代码
提前致谢。
import pyomo as pyo
from pyomo.environ import *
model = AbstractModel()
model.I = Set()
model.J = Set()
model.a = Param(model.I, model.J)
model.b = Param(model.I)
model.c = Param(model.J)
model.x = Var(model.J, domain = NonNegativeReals)
def obj (model):
return sum(model.c[j]*model.x[j] for j in model.J)
model.obj = Objective(rule = obj)
def ax_constraint_rule (model, i):
return sum(model.a[i,j]*model.x[j] for j in model.J) >= model.b[i]
model.AxbConstraint = Constraint(model.I, rule = ax_constraint_rule)
model.pprint()
3 Set Declarations
I : Size=0, Index=None, Ordered=Insertion
Not constructed
J : Size=0, Index=None, Ordered=Insertion
Not constructed
a_index : Size=0, Index=None, Ordered=True
Not constructed
3 Param Declarations
a : Size=0, Index=a_index, Domain=Any, Default=None, Mutable=False
Not constructed
b : Size=0, Index=I, Domain=Any, Default=None, Mutable=False
Not constructed
c : Size=0, Index=J, Domain=Any, Default=None, Mutable=False
Not constructed
1 Var Declarations
x : Size=0, Index=J
Not constructed
7 Declarations: I J a_index a b c x
【问题讨论】:
【参考方案1】:您似乎错误地缩进了下面的语句,这会使它们成为函数的一部分。他们不是。他们调用函数...通过使它们成为函数的一部分并在 return
语句之后它们是死代码。
至少应该可以打印一些东西。然后,您将希望通过加载数据(请参阅文档)和 pprint
instance
而不是模型来创建模型的 instance
。祝你好运!
【讨论】:
非常感谢。这就是问题所在。 太棒了。如果这回答了您的问题,您可以通过点击问题旁边的复选标记来关闭问题。以上是关于如何在 Pyomo 中声明目标函数和约束(抽象模型)的主要内容,如果未能解决你的问题,请参考以下文章