首页 > 解决方案 > 如何为条件定义一组线性约束:“如果 x1 ≤ 0,则 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。我不知道如何在不使用严格不等式的情况下更改它,这是不可能的。任何人都可以帮忙吗?

标签: linear-algebralinear-programmingalgebra

解决方案


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

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

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


推荐阅读