[Pyomo]如何通过循环生成约束
全部 我想创建一组约束,如下所示:[Pyomo]如何通过循环生成约束,pyomo,Pyomo,全部 我想创建一组约束,如下所示: import pyomo.environ as pyo model = pyo.ConcreteModel() Ngen = 5 Pmax = [40, 170, 520, 200, 100] model.Ngen = pyo.Set(dimen=Ngen) model.Pg = pyo.Var(model.Ngen) def Co1(model): return ((model.Pg[ii] for ii in model.Ngen) <=
import pyomo.environ as pyo
model = pyo.ConcreteModel()
Ngen = 5
Pmax = [40, 170, 520, 200, 100]
model.Ngen = pyo.Set(dimen=Ngen)
model.Pg = pyo.Var(model.Ngen)
def Co1(model):
return ((model.Pg[ii] for ii in model.Ngen) <= (Pmax[jj] for jj in range(Ngen)))
model.Co1 = pyo.Constraint(rule=Co1)
Pg[0]线索在于,约束是在一个集合上定义的。Pyomo允许您将
args
传递给定义该约束集的Constraint
构造函数
因此,您的最后一行应该如下所示:
model.Co1=pyo.Constraint(model.Ngen,rule=Co1)
第二个问题是约束表达式本身。既然这是针对集合定义的,那么您只需要用给定的索引(比如i
)来表示约束,因为规则
还需要与约束
的每个集合
的每个索引相关的参数:
def Co1(i型):
返回模型.Pg[i]