东升西落

竤泉 · 库存与预测 · 6870 字

你们公司的备件库在哪?多半在总部那栋楼里。

我们那七座厂也一样:杭州、成都、厦门,库在杭州。它在那个城市里躺了很多年,没人问过它该不该挪。

后来我把它敲进 Excel,七行坐标、七个消耗数。我原以为算出来的那个点就是最省的——它比杭州还贵 19%。

但算完以后,我改了三件事。这篇就讲这三件事。


先说那个场景。

厦门那座厂的一台刻蚀机停了,等一个石英件。

刻蚀机上的石英件是消耗件,跑一阵就得换。件在六百多公里外的中心库里,安稳地躺在货架上。它不缺,它也没坏。它只是不在该在的地方。

把它运过去,最快十几个小时。可一台量产的刻蚀机停在那儿,是按小时算损耗的——这不是一笔运费账,这是一笔停线账。

那时候我在一家半导体制造企业做供应链,七座厂的备件采购我参与其中。中心库放哪儿,我参与了,但没算过。

为什么不算?因为当年没人觉得这是个能算的问题。理由一句话就够了:库跟着管理团队走。 管理团队在总部那个城市,库就在那个城市。

这个理由不荒唐,它只是没被验证过。


2021 年,整个行业都在抢设备、抢料,这件事被顶到了我面前。

真正让我记住那一年的是石英件——机台上一种看着不起眼的消耗件,却是最难受的一类料:

12 英寸的石英管道,公开报价约一万九千五一件。而它的寿命差得很远:扩散、氧化工艺上能用一到两年,CVD 工艺下只有三到六个月,有些石英仪器十天到三个月就得换。进口石英原料的备货周期,更是三到六个月。

贵、耗得快、还买不到。 一万九的东西,最快十天报废;你想补货,得提前半年。

不光是石英件。那一年,全球半导体设备的交期,从疫情前的三到六个月,先被拉到十二到十八个月,再被拉到十八到三十个月。晶圆厂有钱买设备,也拿不到。台积电、联电、中芯国际、格芯这些厂的扩产计划,整体往后推了两到九个月——2023 年全球晶圆代工产能的年增率,从原来预期的 10%,收敛到 8%。

产能不是被钱卡住的,是被时间卡住的。

那一刻我才反应过来:备件库放哪儿,从来不是一道运费题。

于是我打开了 Excel。


把七座厂画在一张平面图上:横轴一个坐标,纵轴一个坐标。每座厂每年吃掉多少备件金额,就是它的权重——消耗多的厂,说话响。

然后求一个“加权平均位置”:把所有厂的位置,按各自的消耗量加权,平均一下。 这就是重心法,行业里通行的选址算法之一。算法只有一句话:坐标乘消耗,全部加起来,再除以消耗总和。

图 1 重心法怎么算:坐标乘消耗、全部加起来、除以消耗总和。圆圈越大=消耗越多=说话越响。

七座厂按城市合并,权重是这样:杭州 70、成都 35、厦门 30,合计 135。重心落在 1106、507——它被成都那两座厂往西拉了一截。

下面出现的坐标、消耗、到场时间都是示意的数字,只为讲清方法;你换成自己的数,方向不会变。

第一件事,是仓库位置该跟着什么走。

到这里,我跟所有人一样,以为答案就是它了:把库搬到重心去,运费最低。

结果模型第一句话就把我按住了。

图 2 四个候选点:算出来的重心不是最省的那个;但它是唯一能让所有厂按时到齐的那个。

重心那个点的加权总距离是 88,382,而杭州是 74,246——重心比杭州贵 19%。

这个数怎么来的?规则一句话:它到每座厂的距离,乘上那座厂一年的消耗,全部加起来。

拿杭州算一遍:它到成都有 1,544 公里,成都一年吃掉 35 万备件——这一项就是五万四;到厦门 674 公里乘 30,是两万;到它自己,零。三项相加,74,246。

换重心坐进去,同一条规则再来一遍:到杭州那一项三万二,到成都三万九,到厦门一万七——加起来 88,382。

我算了半天求出来的那个点,运费不是最低的。

为什么?因为重心法最小化的,是加权距离的平方,不是你付的运费。你付运费按距离算,模型找点按距离的平方算。这两件事只有在所有厂都挤在一个点上时才会重合;厂一散开,它们就分家。

目标函数和算法,从来不是一回事。 别人给你一个“最优解”的时候,先问它最优的是什么。

那杭州为什么最省?

因为杭州的消耗占了总消耗的一半以上。而杭州到它自己的距离,是零。消耗最大的那个城市,自带“零距离”红利。

所以模型绕了一整圈,算出来的运费最优解,就是“哪儿消耗大放哪儿”——也就是总部。跟当年拍脑袋的结论,一模一样。

但这两个“一样”,不是一回事。

拍脑袋是不知道。算过,是知道之后仍然这么选。 前者的风险在于:厂的位置、消耗的比例一旦变了,你不会有一点感觉,因为你的依据从来不是数字。后者的价值在于:你知道这个结论靠什么成立——它靠的是“消耗高度集中”这个前提。前提一变,答案会立刻翻。

所以你的仓网是怎么来的?

如果它跟着管理团队、跟着历史、跟着某一次搬迁走,那它是长出来的。如果它跟着你每年重算一次的消耗分布走,那它是算出来的。

长出来的不一定错,但你得知道它是长出来的。


第二件事,是时效。这次要看的不只是厦门那座厂,是全部七座厂。

先回头看一眼那张四个候选点的图。它底下还有一行小字:最省钱的那个,到得最慢。

那句话要读两遍。它说的不是“最省钱的不能用”,而是——同一张图上有两个第一名。

比钱:杭州 74,246(1.00×),重心 88,382(1.19×),杭州赢。

比时间:重心到最远的一座厂 18.5 小时,杭州 25.7 小时,厦门 25.1 小时——重心快 7 个多小时。

这两个第一名,来自同一个东西——上一节说的那个“距离的平方”。它惩罚远端惩罚得最狠,所以它盯的不是总账,是最坏的那一单。而仓网要回答的第二个问题,正好就是那一个:最远的那座厂,能不能按时到。

四个候选点里,只有它一个,能让所有厂在 24 小时内到齐。

所以重心不是算错的那个点,它是另一个问题的正确答案。

运费让你去一个地方,时效要你在中间。两个约束,指向两个不同的点。

这种情况下,最差的回答是“那到底放哪儿”。因为无论你选哪个,你都牺牲了另一个。

这时候不要选点,要分层。

中心库继续放在运费最优的地方——它管量大、常用、等得起的那一类件。至于救急小库放在哪座厂,先别急着按“谁最远”来定。

最远的那两座是封装厂,用不上石英件这一类;真正要用、而且用得快的是厦门那座厂。所以那个小库该放在厦门。决定它在哪儿的是“哪个厂用等不起的件”,不是“哪个厂最远”。


救急小库里放什么?这是第三件事。

不是“重要的件”,也不是“贵的件”。是三条同时成立的件:

单价高,交期长,缺了会停线。

少一条,它就不值得单独占一个库位:单价高但到处买得到、今天下单明天到,中心库就够了。

回头看石英件:一万九千五一件,进口原料备货三到六个月,寿命短的那批十天到三个月就得换。

三条全中。

所以七座厂、三个城市,那个救急小库里真正该长期躺着的品类,其实没几个。它不解决运费,它解决的是“等不起”。


收尾,三个问题,你自己回答。

你的中心库现在放的那个地方,是算出来的,还是长出来的?

哪座厂在用等不起的件?从中心库调一次件到那座厂,要多长时间?

你的库位里,有多少件真的满足“贵、慢、停”三条?

三个问题答完,你大概就知道那笔钱该花在哪儿了。

答不上来也没关系。我把这次用的那张计算表整理好了:换成你自己的厂、坐标和消耗,它会自动告诉你重心在哪儿、哪个候选点最省、最远那座厂几小时能到。


这一回我又踩了个坑:把公式算出来的那个点,当成了最省的那个点。24 年下来,坑我替你踩了不少,以后的日子,咱们一个一个填。

表能告诉你哪个点最省,但告诉不了你这个答案能撑多久。下次我把那一步补上。


数据来源

文中选址模型涉及的坐标、消耗权重、到场速度与可容忍时间均为示意的教学值,用于说明方法;请以自身工厂数据替换后重算。

注:为什么“加权平均”就是“距离平方最小”

重心法要找的那个点,可以写成一句话——让“到每座厂的距离的平方,按那座厂的消耗加权、全部加起来”最小。

平方有个好处:它把横坐标和纵坐标拆开、互不相干,于是可以分开各求一次极值;求出来的结果,恰好就是“坐标按消耗的加权平均”。所以加权平均不是谁随手定下的算法,它就是这个“平方距离和最小”目标的唯一答案——解唯一,不会有两个点并列最优。

那为什么不用距离本身?因为“距离的平方和最小”能一步算出来、解唯一;换成“距离的和最小”,最优解会变成一整段区间(不再唯一),只能靠计算机一步步逼近。代价是:平方对特别远的点罚得最狠——这正是重心“输了运费、赢了时效”的根源。

对应小说:无(纯方法论+故事体)
← 全部笔记
← 第 5 篇第 7 篇 →
《东升西落》· © 2026 Larry Qi|原载于 larryqi.com。欢迎转载,请注明出处并保留原文链接;商业用途请联系授权。