Warm tip: This article is reproduced from serverfault.com, please click

其他-如何为条件定义一组线性约束:“如果x1≤0,则x2≤0”?

(其他 - How can I define a set of linear constraints for the condition: "if x1 ≤ 0, then x2 ≤ 0"?)

发布于 2020-12-10 13:33:01

正如问题所暗示的,我正在尝试在[-10,10]中用x1,x2定义条件“如果x1≤0,则x2≤0”的线性约束。我尝试这样做,其中B1是一个二进制变量,M是一个非常大的数字:

X2-M * X1 * B1≤0

X1≤11 * B1

-11 * B1≤X1

这个想法是,如果x> 0,则b1 = 1;如果x1≤0,则b1 = 0。但是,这是不正确的,因为当x1 = 0时,我们认为b1可以是0或1。我不知道如何在不使用严格不等式的情况下更改它,这是不可能的。有人可以帮忙吗?

Questioner
Kevin Lucas
Viewed
0
Erwin Kalvelagen 2020-12-10 22:41:43

X2 - M * X1 * B1 ≤ 0对我来说似乎是非线性的。这是我的建议:

    x1 ≥ 0.001 - 10.001*b
    x2 ≤ 10*(1-b) 
     b ∈ {0,1}

当x1 = 0时,0.001强制b = 1。