最优数值分配问题:已知参数下h1、r1、h2、r2的求解方案问询
问题描述
核心数学关系
TL = L1*C1 + L2*C2 TL = h1*r1 + h2*r2 hMAX>=r1>r2
参数与变量说明
- 已知参数:TL、L1、C1、L2、C2、hMAX
- 需要求解的变量:h1、r1、h2、r2
优化目标
- 优先最小化
r1 + r2 - 在满足上述目标的基础上,最小化
h1与h2的差值
变量约束条件
- h1 必须是 L1 和/或 L2 的非负整数线性组合,形式如下:
其中a、b为非负整数h1 = a*L1 + b*L2 - h2、r2 的取值可以为0
现有实现及问题
我采用了以下代码逻辑实现求解:
h1 = min(int(hMAX/L1), C1)*L1 r1 = int(L1*C1/h1) r2 = math.ceil(TL/hMAX)-r1 h2 = (TL-h1*r1)/r2
该方案在多数输入场景下能得到有效结果,但部分案例会失效,例如:
L1 = 106 C1 = 5 L2 = 96 C2 = 2 hMAX = 220
内容的提问来源于stack exchange,提问作者user2296309
相关产品推荐
相关产品推荐

