线性规划中的约束

时间:2016-11-15 22:51:44

标签: linear-programming integer-programming

我正在尝试为问题写一个约束:

如果a => 0,且b => 0,则a = b。

到目前为止,我写过, 让

u >= a-b
u >= b-a

现在,如果a> 0和b> 0,我需要确保u = 0,但似乎无法弄明白。
你能不能给我一个提示。

2 个答案:

答案 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)

我认为你的意思是:

  

如果是&gt; 0和b> 0然后a = b

或者换一种方式

  

a = b或a = 0或b = 0

让我试试:

enter image description here

我假设a和b是非负变量,但是如果我们允许a和b的负值,它也会起作用。

该问题已编辑为:

  

如果a> = 0且b> = 0则a = b

这意味着a和b是自由变量和

  

a = b或a <0或b <0

当然,通过在前两个不等式中加入一个小的容差项,可以很容易地调整上述内容。但是,我们也可以使用标准变量拆分技术更明确地对此进行建模:

enter image description here