4. 配料与混合问题建模实战
配料与混合问题是一类非常典型的线性规划应用:把若干种原料按一定比例混合,得到满足成分要求的产品,同时让总成本最低。饲料配方、合金熔炼、食品调配、肥料复配、汽油调和都属于这一类。它和前面章节的生产计划问题有一个关键区别——决策变量往往不是“生产多少件产品”,而是“每种原料用多少”,约束的重点也从产能转向成分比例与原料供应上限。
本节以饲料配方为例展开。设某饲料厂需要配制 1 吨(1000 kg)育肥猪配合饲料,可选原料有玉米、豆粕、麸皮、磷酸氢钙和预混料五种。每种原料都含有蛋白质、粗纤维、钙、磷等成分,且价格不同。目标是:在满足营养标准的前提下,使每吨饲料的原料成本最低。
一、把“配方”翻译成决策变量与参数
建模第一步是明确决策变量。设 x₁、x₂、x₃、x₄、x₅ 分别表示每吨饲料中玉米、豆粕、麸皮、磷酸氢钙、预混料的用量(单位:kg)。由于是配制 1 吨,五个变量之和必须等于 1000,这是一个等式约束。
接着整理参数。示例假设如下(数据为教学假设,非实测):玉米价格 2.6 元/kg、蛋白质含量 8.5%;豆粕价格 4.2 元/kg、蛋白质 43%;麸皮价格 1.8 元/kg、蛋白质 15%;磷酸氢钙价格 3.5 元/kg、钙 23%;预混料价格 12 元/kg。营养标准要求:蛋白质不低于 16%,粗纤维不高于 6%,钙含量在 0.6%~1.0% 之间。此外,受库存限制,豆粕每吨饲料最多用 250 kg,麸皮最多用 150 kg。
这里要特别注意单位统一。价格按元/kg,用量按 kg,则目标函数直接得到元/吨;成分比例若用百分比,需要把“含量百分比 × 用量”与“标准百分比 × 1000”对齐。建议统一把约束右端写成“每吨饲料中该成分的质量(kg)”,例如蛋白质不低于 160 kg、钙在 6~10 kg 之间,这样能避免百分比与质量混算。
二、写出完整模型
目标函数为成本最小化:
min Z = 2.6x₁ + 4.2x₂ + 1.8x₃ + 3.5x₄ + 12x₅
约束条件包括总量约束、蛋白质下限、粗纤维上限、钙区间、原料供应上限以及非负约束。以蛋白质为例,各原料蛋白质贡献之和应不低于 160 kg:
0.085x₁ + 0.43x₂ + 0.15x₃ ≥ 160
x₁ + x₂ + x₃ + x₄ + x₅ = 1000
x₂ ≤ 250
x₃ ≤ 150
6 ≤ 0.23x₄ ≤ 10
x₁, x₂, x₃, x₄, x₅ ≥ 0
粗纤维约束需要各原料的纤维系数,示例中假设玉米 2%、豆粕 6%、麸皮 10%,则 0.02x₁ + 0.06x₂ + 0.10x₃ ≤ 60。钙约束只由磷酸氢钙提供,因此直接写成 6 ≤ 0.23x₄ ≤ 10,即 x₄ 约在 26~43 kg 之间。这个区间约束在求解时通常拆成两条不等式。
三、求解与结果解读
把上述模型输入求解器(如 Excel 规划求解、Python 的 scipy.optimize.linprog 或 PuLP),可以得到一组示例最优解。假设求解结果为:玉米 620 kg、豆粕 250 kg、麸皮 90 kg、磷酸氢钙 30 kg、预混料 10 kg,总成本约 2.6×620 + 4.2×250 + 1.8×90 + 3.5×30 + 12×10 = 1612 + 1050 + 162 + 105 + 120 = 3049 元/吨。此时蛋白质为 0.085×620 + 0.43×250 + 0.15×90 = 52.7 + 107.5 + 13.5 = 173.7 kg,满足不低于 160 kg 的要求;钙为 0.23×30 = 6.9 kg,落在 6~10 kg 区间内。
这个结果说明:豆粕用满了 250 kg 的供应上限,因为它是蛋白质的主要来源;玉米作为能量原料承担了剩余的大部分质量;磷酸氢钙的用量由钙下限决定,接近区间下沿。若把豆粕上限放宽到 300 kg,成本可能进一步下降,因为可以少用价格较高的预混料或调整结构——这正是灵敏度分析要回答的问题。
四、解的有效性分析
线性规划给出的是“数学最优解”,但配料问题还必须做有效性检查,否则配方可能无法落地。常见检查点有四个。
第一,约束是否被正确表达。比例约束最容易出错:把“蛋白质不低于 16%”写成 0.085x₁ + 0.43x₂ + 0.15x₃ ≥ 16,而右端实际应为 160(因为总量是 1000 kg)。这类量纲错误会让解看起来合理却完全错误。建模后应回代验算每个约束的左右端数值。
第二,供应上限与总量约束是否冲突。如果所有原料的上限之和小于 1000 kg,模型必然不可行。本例中五种原料上限之和远大于 1000,因此可行。实际中还要检查某种关键原料是否被“卡死”,导致其他成分被迫超标。
第三,最优解是否过度依赖单一原料。若解中某原料占比极高,需评估其供应稳定性与价格波动风险。线性规划假设参数确定,但现实中豆粕价格波动很大,配方应留有一定弹性。
第四,影子价格的经济含义。求解器通常会给出约束的对偶值。若蛋白质约束的影子价格为正,说明每提高 1 kg 蛋白质下限,成本会增加相应金额;若某原料上限约束的影子价格为正,说明放宽该上限能降低成本。这些信息比单纯看“总成本”更有决策价值。
最后要强调,配料模型的价值不在于一次算出某个数字,而在于建立“原料—成分—约束—成本”的可计算关系。当原料价格、营养标准或库存发生变化时,只需修改参数重新求解,就能快速得到新配方。把模型做成参数化表格,配合回代验算与影子价格解读,才是配料与混合问题建模的完整闭环。