如何在 pyomo 中一次放置多个约束?
How to put multiple constraints at once in pyomo?
我想一次输入很多约束条件。
我的约束如下。
def ss1_rule(model):
return model.ss[1,1] - model.sss[1,1] <= 0.0
model.ss1 = Constraint(rule=ss1_rule)
def ss2_rule(model):
return model.ss[1,1] - model.sss[2,1] <= 0.0
model.ss2 = Constraint(rule=ss2_rule)
def ss3_rule(model):
return model.ss[1,1] - model.sss[3,1] <= 0.0
model.ss3 = Constraint(rule=ss3_rule)
有什么方法可以一次性进入正则约束吗?
谢谢。
有多种方法可以实现这一点。您要使用 Set
或 RangeSet
.
model.my_set = Set(initialize=[1, 2, 3])
def ss_rule(model, s):
return model.ss[1, 1] = model.sss[s, 1] <= 0.0
model.ss = Constraint(model.my_set, rule=ss_rule)
或使用快捷符号的等价物:
model.my_set = Set(initialize=[1, 2, 3])
@model.Constraint(model.my_set)
def ss_rule(model, s):
return model.ss[1, 1] = model.sss[s, 1] <= 0.0
我想一次输入很多约束条件。 我的约束如下。
def ss1_rule(model):
return model.ss[1,1] - model.sss[1,1] <= 0.0
model.ss1 = Constraint(rule=ss1_rule)
def ss2_rule(model):
return model.ss[1,1] - model.sss[2,1] <= 0.0
model.ss2 = Constraint(rule=ss2_rule)
def ss3_rule(model):
return model.ss[1,1] - model.sss[3,1] <= 0.0
model.ss3 = Constraint(rule=ss3_rule)
有什么方法可以一次性进入正则约束吗?
谢谢。
有多种方法可以实现这一点。您要使用 Set
或 RangeSet
.
model.my_set = Set(initialize=[1, 2, 3])
def ss_rule(model, s):
return model.ss[1, 1] = model.sss[s, 1] <= 0.0
model.ss = Constraint(model.my_set, rule=ss_rule)
或使用快捷符号的等价物:
model.my_set = Set(initialize=[1, 2, 3])
@model.Constraint(model.my_set)
def ss_rule(model, s):
return model.ss[1, 1] = model.sss[s, 1] <= 0.0