如何为条件定义一组线性约束:"if x1 ≤ 0, then x2 ≤ 0"?
How can I define a set of linear constraints for the condition: "if x1 ≤ 0, then x2 ≤ 0"?
如问题所示,我正在尝试为条件“如果 x1 ≤ 0,则 x2 ≤ 0”定义线性约束,其中 x1、x2 在 [-10、10] 中。我试过这样做,其中 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。我不知道如何在不使用严格不等式的情况下改变它,这是不可能的。有人可以帮忙吗?
X2 - M * X1 * B1 ≤ 0
在我看来是非线性的。这是我的建议:
x1 ≥ 0.001 - 10.001*b
x2 ≤ 10*(1-b)
b ∈ {0,1}
当 x1=0 时,0.001 会强制 b=1。
如问题所示,我正在尝试为条件“如果 x1 ≤ 0,则 x2 ≤ 0”定义线性约束,其中 x1、x2 在 [-10、10] 中。我试过这样做,其中 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。我不知道如何在不使用严格不等式的情况下改变它,这是不可能的。有人可以帮忙吗?
X2 - M * X1 * B1 ≤ 0
在我看来是非线性的。这是我的建议:
x1 ≥ 0.001 - 10.001*b
x2 ≤ 10*(1-b)
b ∈ {0,1}
当 x1=0 时,0.001 会强制 b=1。