linear-programming - 将条件约束转换为线性规划的线性约束
问题描述
我有两个变量:C 是二进制的,X 是非负的
如果 C = 0,则 X = 0;如果 C = 1 则 X = X(意味着对 X 没有约束)
我应该如何将此条件约束格式化为 LP 的线性约束?
解决方案
请注意,严格来说 LP 模型仅包含连续变量。所以我们假设这是一个用 MIP 求解器求解的 MIP 模型。
以下是解决此问题的三种方法,具体取决于求解器的能力。
(1) 如果您使用支持指标约束的求解器,您可以简单地使用:
c=0 ==> x=0
(2) 对于其他求解器,您可以使用:
x <= M*c
其中 M 是 x 的(尽可能紧的)上界。
(3) 最后,如果你的求解器支持 SOS1 (Special Ordered Sets of type 1) 集,你可以使用:
d = 1-c
{d,x} ∈ SOS1
d >= 0
(1) 和 (3) 的优点是不需要界限。如果你对 x 有一个好的、严格的界限,那么 (2) 是一个不错的选择。
推荐阅读
- javascript - 在 Jest 中模拟文件加载期间调用的函数
- javascript - 如何使用传递的构造函数参数创建单例类实例?
- python - 箱线图上方和下方的数字
- aws-lambda - java lambda不要在aws x射线上写
- python - 在python中的对象内展平对象
- google-apps-script - Google Scripts 中是否有使用 Google Sheets 和 Google Docs 创建富 HTML 文本电子邮件的功能?
- java - 什么是在类数据字段中声明 Scanner 变量时没有资源泄漏?
- azure - Azure AKS 应用程序网关入口和 Istio 入口网关
- python - 如何在 jupyter notebook 上的 pd.DataFrame 对象上显示新添加的属性
- r - R - 对 tidyverse 数据框的列进行类型检查时出现意外行为