橡皮鸭和橡皮鱼抢同一台注塑机,这就是负相关:x 每多 1,y 就少 0.5。 上一版模型虽然把这条写进了约束,但很多人读模型时只看单个变量,看不到这种此消彼长。 这一篇讲三件事:负相关怎么看、假设变了最优解会不会翻、哪些假设最该先校正。
这是第 3 章的收尾。整章走了一条线:变量 → 目标 → 区域 → 新约束 → 价格变 → 假设校正。 「假设变了答案就废」这条,是第 10 章回归和第 11 章误差的共同前提, 那两章都在处理「假设错了怎么办」。
一、负相关不是坏事,是事实
两种产品共用一台机器,多做一个鸭就少做半条鱼。这个「此消彼长」就是负相关。 模型里它表现为一条斜约束:2x + 4y ≤ 400。斜率 −0.5 就是交换比。 负相关不可怕,看不见才可怕。看见它,你才知道「两个都多做」这种话是不可能实现的。
二、交换比怎么读
把约束写成 y = 100 − 0.5x,就看得很清楚:x 每加 1,y 掉 0.5。 再结合利润:鸭赚 3、鱼赚 5,那多做一只鸭的代价是少赚 0.5×5 = 2.5,净赚 0.5。 所以只要「鸭的利润 > 0.5 × 鱼的利润」,就该多做鸭。这条判断比开软件快得多。
三、假设变了,答案会不会翻
鸭的利润从 3 涨到 4.5:最优解一点没动,还是 (130, 15)——因为约束把它钉住了。 装配工时从 420 提到 480:最优解变成 (140, 30),多赚 105(百元)。 同样是「假设变」,一个动了、一个没动。判断依据是:这条假设是不是绑在最优解上。
四、哪些假设最该先校正
| 假设 | 怎么验 | 多久变一次 |
|---|---|---|
| 单价与成本 | 看合同、报价单、采购单 | 一年一次 |
| 工时上限 | 看排班表、设备维护记录 | 随订单变 |
| 原料单耗 | 看领料记录与工艺文件 | 工艺改了才变 |
优先级不是按「哪个最容易变」,是按「哪个绑在最优解上」。 绑在最优解上的假设,一动答案就全变;没绑上的,改了也只是利润数变,方案不变。
五、这一章留下的两条
一、最优化问题的三行字比软件重要。写不出变量、目标、约束,工具只会给你一个好看的空话。 二、最优解是假设的函数。假设换了,第一个动作是重算,而不是解释为什么答案变了。
六、动手 Demo:校正假设:那个负相关的旋钮
先算交换比,再改两个假设,看最优解动不动。 最后一段是这一章的落点:交换比能直接换算成「该做哪个产品」。
for x in (0, 30, 60, 90, 110, 140):
ys = [(400 - 2.0 * x) / 4, (420 - 3.0 * x) / 2, 180.0 - x]
y = max(0.0, min(ys))
print('x=%3d 最多 y=%5.1f 利润 %5.0f' % (x, y, 3 * x + 5 * y))
print()
print('交换比 0.5:多做 1 只鸭 = 少做 0.5 条鱼')
print('少赚 %.1f,多赚 3,净值 %+.1f' % (0.5 * 5, 3 - 0.5 * 5))
print('结论:只要鸭利 > 0.5 * 鱼利,就该把产能往鸭挪')
实跑输出:
--------------------------------------------------------------------
校正假设:那个负相关的旋钮
--------------------------------------------------------------------
① 两个产品其实抢同一台机器
--------------------------------------------------------------------
上一版模型把注塑和装配当成两个独立资源,实际上两种产品都要过注塑机。
所以 x 和 y 在这台机器上是此消彼长的——这就叫负相关。
注塑约束 2x + 4y ≤ 400 已经写了这件事,但很多人读模型时只看单个变量。
② 负相关长什么样
--------------------------------------------------------------------
| 鸭子 x | 最多还能做鱼 y | 利润 |
|---:|---:|---:|
| 0 | 100.0 | 500 |
| 30 | 85.0 | 515 |
| 60 | 70.0 | 530 |
| 90 | 55.0 | 545 |
| 110 | 45.0 | 555 |
| 140 | 0.0 | 420 |
x 从 0 加到 140,y 从 100 掉到 0;利润先涨后跌,在 x = 110 处到顶。
x 每多 1,注塑机上就少 0.5 条鱼的产能——这个 0.5 就是交换比。
③ 假设变了,最优解会不会翻
--------------------------------------------------------------------
假设一:鱼的价格不变,鸭的价格从 3 涨到 4.5。
最优还是 x = 130.0,y = 15.0,利润 660.0
位置没动——因为这两条约束已经把这个角钉死了,多赚的钱只是同一批货卖得贵。
假设二:装配工时从 420 提到 480(加了半班)。
最优变成 x = 140.0,y = 30.0,利润 570.0
位置变了,多赚 105.0(百元)。松哪条约束值多少钱,这里就看得见。
④ 哪些假设值得校正
--------------------------------------------------------------------
| 假设 | 怎么验 | 多久变一次 |
|---|---|---|
| 单价 | 看合同和报价单 | 一年一次 |
| 工时上限 | 看排班表 | 随订单变 |
| 原料单耗 | 看领料记录 | 工艺改了才变 |
最该先校正的,是那条「用满了」的约束背后的假设——它一分变化,利润就跟着变。
⑤ 收尾:这个模型能干什么
--------------------------------------------------------------------
它能回答「在现在的价格和产能下,怎么配最赚」。
它不能回答「要不要上新产品」「要不要换机器」——那是另一个模型的事。
模型的价值不在于它多准,在于它把「凭什么这么配」这句话变成了可检查的算式。
表格里利润在 x = 110 处到顶 555,之后掉到 420——顶点的位置就是「交换比等于利润比」的地方。 这条判别法(鸭利 vs 0.5×鱼利)比跑一遍线性规划快,适合在会议室里当场估算。
30 秒实验
- 把鱼利从 5 改成 8,临界点变成多少?最优解会挪到哪个顶点?
- 如果注塑机的单耗变成鸭 3、鱼 3(换模具更费时),交换比变成多少?
- 想一想:这一章里哪个假设一旦变化,会让整个模型作废(而不是只换个答案)?
常见误区
- 只说「两个都要多做」:共用产能时这是不可能的,负相关就是那条天花板。
- 改完假设不重算:嘴上说「价格变了」,方案还按老价格排,等于什么都没做。
- 校正最不重要的假设:优先校正绑在最优解上的那条,其他的改了也白改。
- 把模型当规律:模型是「在假设下最优」,假设一跨,结论就废。
自测三问(点开对答案)
1. 负相关在这个模型里怎么体现? —— 体现为斜着的约束线 2x + 4y ≤ 400,斜率 −0.5,就是两种产品在注塑机上的交换比。 2. 为什么鸭涨价后最优解没动? —— 因为约束(注塑、装配、保底)把这个顶点钉死了,价格只改变这个点值多少钱。 3. 该优先校正哪条假设? —— 绑在最优解上的那条。它一动,方案就变;没绑上的,改了只是利润数变。第 3 章到此结束。 下一章换成「怎么把数画出来」——最优化告诉你该做什么,图形化让别人相信你该做什么。
- ☐ (本篇完,下一篇 4.1 新军队与三份信息图)