假设有两个连续变量的数学优化问题:
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是指示性的。
是否有针对类似问题的直接建议或论文/书籍?
发布于 2022-01-29 18:06:30
我想这会成功的..。
我是这么想的。您需要注意三个状态,它们是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_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_ubhttps://stackoverflow.com/questions/70900616
复制相似问题