首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非线性变量关系的线性约束

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

Stack Overflow用户
提问于 2022-01-28 21:43:20
回答 1查看 68关注 0票数 2

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

代码语言:javascript
复制
0 <= x <= 1
0 <= y <= 1000

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

代码语言:javascript
复制
when   0 <= y < 200      then   x = 0
when   y = 200           then   0 <= x <= 1
when   200 < y <= 1000   then   x = 1

数字200和1000是指示性的。

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

EN

回答 1

Stack Overflow用户

发布于 2022-01-29 18:06:30

我想这会成功的..。

我是这么想的。您需要注意三个状态,它们是y域上的3个分区。因此,2个二进制变量可以捕获这3种状态。为了保持线性,你需要处理非严格的不等式。因此,请定义:

代码语言:javascript
复制
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的真值表设置了分区。

代码语言:javascript
复制
y        y<200    200<=y<=1000    y>1000
y_lb       0    |      1        |    1
y_ub       1    |      1        |    0

现在我们可以很容易地将真值表链接到约束x

代码语言:javascript
复制
x ∈ Reals
x <= y_lb
x >= 1 - y_ub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70900616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档