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

线性规划中如何实现MAX(x-100,0)*20成本计算?Excel求解器报错求助

线性规划中实现分段成本函数的解决方案

要实现cost = MAX(x - 100, 0) * 20这类分段线性成本的线性规划建模,完全可以通过混合整数线性规划(MILP)实现,你之前的问题出在约束设置不完整,且未正确启用Excel求解器的整数规划功能,导致系统判定为非线性问题。以下是具体修正方案:

1. 简化变量定义

不需要两个二进制变量,单个二进制变量即可实现逻辑控制:

  • 定义连续变量s,用来等价表示MAX(x - 100, 0),最终成本为20*s(直接纳入目标函数)。
  • 定义二进制变量y:当x > 100时y=1,当x ≤ 100时y=0。

2. 添加完整线性约束

给变量间添加以下线性约束,确保s和y与x的逻辑绑定:

  • s ≥ x - 100:保证当x > 100时,s至少等于x-100,符合MAX函数的下限要求。
  • s ≤ M * y:M是一个足够大的正数(需大于x的最大可能取值,比如如果x最大不超过1000,就设M=1000)。当y=0(即x ≤100)时,这个约束强制s=0,符合MAX(0)的要求。
  • x ≤ 100 + M*(1 - y):当y=0时,约束简化为x ≤100;当y=1时,M*(1-y)=0,约束自动失效,允许x超过100。
  • s ≥ 0:确保s非负,符合MAX函数的输出特性。

3. Excel求解器设置修正

  • 在求解器中,将二进制变量y的约束类型设为二进制(而非普通整数)。
  • 目标函数设置为包含20*s的表达式(若有其他成本项,直接累加即可)。
  • 选择求解方法为混合整数线性规划(部分Excel版本中,当存在二进制/整数变量时,求解器会自动切换到对应模式,若未自动切换,需手动选择)。

问题根源解释

你之前仅设置了y1+y2=1的逻辑约束,但未添加x与y1/y2之间的数值绑定约束,Excel无法识别变量间的线性依赖关系,因此判定为非线性问题。通过上述完整的线性约束,所有变量关系均为线性,求解器会正确识别为混合整数线性规划问题。

内容的提问来源于stack exchange,提问作者tcotts

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:20:34