从问题到优化模型
一家小型工厂每天只有 80 个工时和 60 千克材料。产品 A 每件用 2 个工时、3 千克材料,利润 40 元;产品 B 每件用 4 个工时、2 千克材料,利润 50 元。问“怎么安排最赚钱”时,真正要解决的不是某个求导题,而是把可执行方案的集合写清楚。

图:每一条资源约束都在缩小可执行方案的范围,目标函数则比较这些方案的价值。
模型的四个零件
令 、 分别表示产品 A、B 的产量。变量不是“答案”,而是我们允许算法调整的决定。利润目标为
工时和材料带来两条硬约束:
还要有 。如果今天生产件数必须是整数,还需要 ;这一条会在第 5 章改变问题的性质。


把所有约束同时满足的点集合记作可行域。候选方案 虽然非负,但材料消耗 、工时消耗 ,所以它在边界上可行; 的工时为 80、材料为 80,不可行。可行性是目标优化之前的硬门槛。

约束系数带着单位。若 是“件”、每件用 小时,那么 才是“小时”。把每件利润误写进资源约束,或者把“最多”写成 ,会让后续所有计算失去现实含义。
从叙述到矩阵
线性模型常写成
这里 是决策向量, 是单位收益,
矩阵写法不是为了让题目显得高级,而是为了把“每种资源对每种活动的消耗”集中管理。行对应资源,列对应活动;改动模型时,先问改的是哪一行或哪一列。


线性规划要求目标和约束都是变量的一次组合;出现 、 或 就不再是线性规划,但仍可能是连续优化模型。若变量必须取整数,模型成为整数规划。分类不是标签游戏:它决定可用的几何结论和算法。
建模审计:答案出来以前就要做
可以把一次审计写成一张短清单。变量是否足以描述方案?目标方向是否与“最多/最少”一致?每条约束是否能追溯到题目中的事实?有没有遗漏非负、容量、需求下限或整数条件?代入一个明显的极端方案时,单位和数量级是否合理?
例如“至少满足 30 个订单”应写成产能 ,而不是 。如果配送量 表示从仓库 发往门店 的件数,仓库约束要对固定的 把 求和,门店需求约束则对固定的 把 求和。下标写反,模型仍然可能有漂亮的最优值,却解决了另一件事。
练习
- 某餐车售卖套餐 P 和 Q。P 每份需要 1 个面包、2 份蔬菜,利润 6 元;Q 每份需要 2 个面包、1 份蔬菜,利润 5 元。当天有 40 个面包、30 份蔬菜。写出连续线性规划模型。
- 判断约束“每周安排的夜班数不少于白班数的两倍”应写成 还是 ,并说明变量含义。
- 一个运输模型允许从仓库向门店发货,但没有写发货量非负条件。为什么这不是小问题?