You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

线性规划:构造连续变量对应的正、负、零二进制变量求助

大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)

添加两个约束实现双向强制:

  1. 强制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。

  2. 强制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对称的逻辑,添加两个约束:

  1. 强制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。

  2. 强制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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:22:53