微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们可以在 Pyomo 的规则中定义约束或扩展约束列表吗?

如何解决我们可以在 Pyomo 的规则中定义约束或扩展约束列表吗?

对于一个问题,我需要在一些特定的时间点定义多个约束,我想知道这样的事情是否可能:

def rule_c(m,t):
    if x[t] == 0:              # x is not a variable,but a kNown parameter (dictionary)
       return Constraint.skip()
    elif (x[t] == 1) & (x[t-1] == 0):
       m.new_constraint = Constraint(rule= lambda m: m.var[t] == 0.3)
    elif (x[t] == 1) & (x[t+1] == 0):
       m.new_constraint_2 = Constraint(rule= lambda m: m.var[t] == 0.8)
    return m.var[t+1] == m.var[t] + m.other_var[t]/100
model.constraint = Constraint(model.T,rule = rule_c)

或者是否可以使用 ConstraintList?

m.new_constraint = ConstraintList()
m.new_constraint_2 = ConstraintList()
def rule_c(m,t):
    if x[t] == 0:
       return Constraint.skip()
    elif (x[t] == 1) & (x[t-1] == 0):
       m.new_constraint.add(m.var[t] == 0.3)
    elif (x[t] == 1) & (x[t+1] == 0):
       m.new_constraint_2.add(m.var[t] == 0.8)
    return m.var[t+1] == m.var[t] + m.other_var[t]/100
model.constraint = Constraint(model.T,rule = rule_c)

如果您希望我提供有关问题的更多详细信息,请告诉我!包括常量作为示例,这里的 x 是一个已知的字典。

如果您有其他技巧,请告诉我!我可以把它分成 2 条规则吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。