线性规划:构造连续变量对应的正、负、零二进制变量求助
大M法构造二进制变量的约束方案
给定连续变量 x ∈ [-M, M],要构造二进制变量p、n、z满足你的定义,需要通过互斥约束+双向强制约束解决单向强制的问题,具体方案如下:
基础互斥约束
三个变量互斥且覆盖所有可能情况:
p + n + z = 1 p, n, z ∈ {0, 1}
正二进制变量p的约束(x>0时p=1,x≤0时p=0)
添加两个约束实现双向强制:
强制x>0时p必须为1,同时p=0时x必须≤0:
x ≤ M*p逻辑:若x>0,左边x>0,右边M*p≥0,要满足不等式则p必须为1;若p=0,右边为0,不等式直接限制x≤0。
强制p=1时x必须>0(避免p=1但x≤0的无效情况):
x ≥ ε - M*(1-p)其中
ε是极小正数(如1e-6,可根据模型精度调整)。逻辑:当p=1时,1-p=0,不等式变为x≥ε>0,确保x为正;当p=0时,ε-M略大于-M,而x≥-M,不等式自动成立,不影响x≤0的情况。
负二进制变量n的约束(x<0时n=1,x≥0时n=0)
采用和p对称的逻辑,添加两个约束:
强制x<0时n必须为1,同时n=0时x必须≥0:
x ≥ -M*n逻辑:若x<0,左边x<0,右边-M*n≤0,要满足不等式则n必须为1;若n=0,右边为0,不等式直接限制x≥0。
强制n=1时x必须<0:
x ≤ -ε + M*(1-n)逻辑:当n=1时,
1-n=0,不等式变为x≤-ε<0,确保x为负;当n=0时,-ε+M略小于M,而x≤M,不等式自动成立,不影响x≥0的情况。
零二进制变量z的约束(x=0时z=1,否则z=0)
结合互斥约束,添加两个约束强化:
x ≤ M*(1-z) x ≥ -M*(1-z)
逻辑:当z=1时,1-z=0,两个不等式合并为0 ≤ x ≤ 0,即x=0;当z=0时,1-z=1,不等式退化为x的原始约束-M ≤ x ≤ M,无额外限制。
验证所有场景
- 当x>0:
x ≤ M*p强制p=1,结合互斥约束得n=0、z=0,符合要求; - 当x<0:
x ≥ -M*n强制n=1,结合互斥约束得p=0、z=0,符合要求; - 当x=0:若p=1则
x≥ε不成立,若n=1则x≤-ε不成立,因此只能z=1、p=n=0,符合要求。
内容的提问来源于stack exchange,提问作者Archie
相关产品推荐
相关产品推荐

