我正在尝试为问题写一个约束:
如果a => 0,且b => 0,则a = b。
到目前为止,我写过, 让
u >= a-b
u >= b-a
现在,如果a> 0和b> 0,我需要确保u = 0,但似乎无法弄明白。
你能不能给我一个提示。
答案 0 :(得分:0)
我们可以使用二进制变量来解决问题。 我们已经有了你的下限。
u >= 0
根据二元变量x和y提供上限,我们得到
u <= M*(1 - xy)
u <= M*(1-z), where z = xy
其中M是一些任意大的数字(在某些情况下可以将M设为a和b的绝对值之和)
xy = 1
对应u =0 and thus a=b.
因此,x = 1也应对应于&gt; = 0,
并且y = 1应该对应于b> = 0
我们可以使用:
x >= 0
x <= Upper bound of a
y >= 0
y <= Upper bound of b
现在,xy = 1对应于ab&gt; = 0
现在我们使用McCormick Envelope将xy> 0转换为线性约束,线性约束给出为
设x的上界为XU,y的上界为YU。
x的下限为XL,y的下限为YL
我们得到了,
z <= XU*y + YL*x - XU*YL
z <= YU*x + XL*y - YU*XL
z >= XL*y + YL*x - XL*YL
z >= XU*y + YU*x - XU*YU
x和y的下限为0,上限为1,这简化为
z <= y
z <= x
z >= 0
z >= x + y - 1
如果有人有另一个答案,请发帖,我很乐意知道!。
答案 1 :(得分:0)