问题描述
对于一个问题,我需要在一些特定的时间点定义多个约束,我想知道这样的事情是否可能:
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 (将#修改为@)