如何在pyomo中同时放置多个约束?

时间:2018-02-06 02:21:13

标签: python constraints 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)

有没有办法一次输入常规约束?

谢谢。

1 个答案:

答案 0 :(得分:0)

有各种方法可以实现这一目标。您想使用SetRangeSet

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