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

整数规划中突破阈值后属性变化的条件变量建模求助——产品B生产工时约束构建问题

整数规划中突破阈值后属性变化的条件变量建模求助——产品B生产工时约束构建问题

看起来你已经找对了核心方向——用两个变量拆分不同阈值下的生产,是处理这类分段属性问题的标准操作!不过约束条件的构建确实需要调整下细节,我来帮你梳理清楚:

首先先把变量定义明确,避免歧义:

  • X_B1:产品B在≤110单位范围内的产量(总产量≤110时,X_B1就是总产量;总产量>110时,X_B1固定为110)
  • X_B2:产品B超过110单位的额外产量(总产量>110时为正整数,否则必须为0)
  • w_B:二进制决策变量(取值0或1),用来标记是否触发了超阈值生产:w_B=1代表总产量超过110,w_B=0则总产量≤110
  • M:一个足够大的正数(不需要精确,只要比理论上X_B2的最大可能值大就行,比如取200就完全够用,因为总工时730最多能生产约235单位,X_B2最多125)

接下来是关键的约束条件构建:

  1. X_B1的范围约束:

    • 不管有没有超阈值,X_B1最多只能到110:X_B1 ≤ 110
    • 当触发超阈值生产(w_B=1)时,必须把前110单位的产能拉满:X_B1 ≥ 110 - M*(1 - w_B)
      解释:当w_B=1时,(1-w_B)=0,约束变成X_B1 ≥110,结合上面的X_B1 ≤110,就强制X_B1=110;当w_B=0时,M*(1-w_B)是很大的数,约束自动失效,X_B1可以在0到110之间自由取值。
  2. X_B2的触发约束:

    • 只有在超阈值时(w_B=1),X_B2才能大于0,否则必须为0:X_B2 ≤ M*w_B
      解释:当w_B=0时,约束变成X_B2 ≤0,结合非负约束就强制X_B2=0;当w_B=1时,约束放开,X_B2可以取合理的正数值。
  3. 总工时约束:

    • 把两部分的生产工时加起来,不能超过总工时上限730:2.1*X_B1 + 3.1*X_B2 ≤ 730
  4. 非负与整数约束:

    • X_B1 ≥ 0,X_B2 ≥0,且两者均为整数(如果产量允许小数可去掉整数要求)
    • w_B ∈ {0, 1}

最后是你的目标函数,因为每单位利润都是25,所以直接最大化总利润即可:
Maximize Z = 25*(X_B1 + X_B2)

这样一套约束下来,就能准确描述产品B的生产规则啦,你原来的约束思路有点绕,拆分变量后直接按分段工时相加会更直观~

备注:内容来源于stack exchange,提问作者Yago Tobio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:39:31