我的问题是,是否有一种技巧可以将以下内容表达为线性约束?
S_j = max {a_j,S_i + t_ij}
其中a_j和t_ij是常量
非常感谢提前
答案 0 :(得分:0)
是的,你可以通过引入一个新的二进制变量y_j(0或1)和几个线性约束来实现这一点。
我们可以将您的约束重写为:
Sj = a if a > Si + T
Sj = Si + T if a < Si + T
Sj = a y_j + (Si + T) (1 - yj) .....(1)
如果a更大,那么假设y_j = 0
如果a小于Si + T ,则y_j = 1
M y_j + a - (Si + T) > 0 ....(2)
where M is a big number, much bigger than a or Si or T.
如果y_j为1,则通常满足上述约束,并且Sj将等于a。
如果y_j为0,则a必须更大才能满足约束,Sj = Si + T
在您的表述中,只需包含(1)和(2),您就会强制执行max
约束。