非线性变量关系的线性约束



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

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是指示性的。

是否有任何针对类似问题的直接建议或论文/书籍?

我认为这会奏效。。。

以下是我的看法。您有3个需要注意的状态,即y域上的3个分区。因此,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_lby_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

相关内容

  • 没有找到相关文章

最新更新