我们可以在 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 (将#修改为@)