我的问题是,是否有将以下内容表示为线性约束的技巧?
S_j=max{ a_j,S_i+t_ij }
其中a_j和t_ij是常量
非常感谢你提前
发布于 2013-10-29 02:09:08
是的,您可以通过引入新的二进制变量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约束。
https://stackoverflow.com/questions/19606723
复制相似问题