2

假设有两个正连续变量的数学优化问题:

0 <= x <= 1
0 <= y <= 1000

我正在寻找一种有效的方法来以线性约束(可能使用二进制/整数变量和大 M)的形式表达以下非线性关系,因此可以使用 milp 求解器解决该问题:

when   0 <= y < 200      then   x = 0
when   y = 200           then   0 <= x <= 1
when   200 < y <= 1000   then   x = 1

数字 200 和 1000 是指示性的。

是否有解决类似问题的直接建议或论文/书籍?

4

1 回答 1

1

我认为这会奏效...

这就是我的想法。您需要注意 3 个状态,它们是y. 因此,2 个二进制变量可以捕获这 3 个状态。为了保持线性,您需要处理非严格的不等式。所以定义:

y_lb ∈ {0, 1} and let y_lb = 1 if y >= 200
y_ub ∈ {0, 1} and let y_ub = 1 if y <= 1000

所以现在我们根据 和 的真值表设置了y_lb分区y_ub

y        y<200    200<=y<=1000    y>1000
y_lb       0    |      1        |    1
y_ub       1    |      1        |    0

现在我们可以轻松地将真值表链接到约束x

x ∈ Reals
x <= y_lb
x >= 1 - y_ub
于 2022-01-29T18:06:30.287 回答