linear-algebra - 如何为条件定义一组线性约束:“如果 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。我不知道如何在不使用严格不等式的情况下更改它,这是不可能的。任何人都可以帮忙吗?
解决方案
X2 - M * X1 * B1 ≤ 0
对我来说看起来是非线性的。这是我的建议:
x1 ≥ 0.001 - 10.001*b
x2 ≤ 10*(1-b)
b ∈ {0,1}
当 x1=0 时,0.001 用于强制 b=1。
推荐阅读
- openshift - OpenShift 支持任意用户 ID
- jquery - 而不是通过多父遍历来定位e.target的祖先
- amazon-web-services - 自动创建 AWS IAM 用户、内容、SQS 队列和相关权限?
- arrays - Ansible 从寄存器解析 JSON 数组
- reactjs - React 路由器入门
- android - 如何在奥利奥的锁定屏幕上绘制视图?
- powerbi - 使用 PowerBI 中的 DAX 测量最近值的总和
- git - 带有 vim-fugitive 的 nnoremap 命令
- actions-on-google - 用于百叶窗的谷歌智能家居命令
- c# - Xamarin 与 PCLStorage - 在哪里放置 SQLite3 文件?