电商库存分配这个问题,我过去五年深度参与了十几个头部品牌的落地项目。在接触模拟退火算法之前,团队最常用的方法是贪心策略,哪个仓库库存最多就优先往哪个仓库分,或者是基于安全库存的阈值触发。这些方法在SKU几百个、仓库两三个的时候还行得通。但当SKU突破一万、仓库达到六到八个、而且一天要处理几十万笔订单时,传统方法几乎必然导致两种“死法”:第一种是大促期间爆仓,仓库塞满货但热门SKU反复缺货,系统显示有库存但就是发不出去;第二种是日常运营中多仓库之间频繁调拨,单笔调拨成本直接从六块钱涨到二十块,利润率被物流吃掉大半。
模拟退火算法在这类场景中被宣传为“万能救星”,但如果你今天就去问任何一位真正落地过这套算法的供应链总监,他大概率会告诉你:成功不一定靠算法,失败往往是因为忽略了算法的前提条件和配套数据。这篇文章的核心结论很明确,模拟退火算法在电商库存分配中的真正优势不是理论上能找到全局最优解,而是它能在复杂约束下找到一个“足够好”且“可执行”的方案,而且它的收敛过程天然适合做“假如…会怎样”的仿真推演。但它的落地成功率并不高,我观察到的范围内,真正跑通并持续使用的项目大约占三分之一。问题不在算法本身,而在用错了场景、忽略了数据质量、或者根本不知道什么时候该用、什么时候不该用。
这篇文章我会先讲两种典型的“死法”,再拆解几个核心误区,然后给出我自己的判断逻辑和一套实战案例,最后告诉你不同业务规模该怎么取舍。你会看到真实的量化数据、试错成本和决策框架。
2022年双十一,我服务的一家快消品牌遭遇了一次典型的库存分配灾难。这家品牌在全国有四个区域中心仓(上海、广州、武汉、成都),覆盖约一万两千个SKU。在预售期,运营团队按照历史经验做了一个静态分配,每个仓按预计销量占比分货。结果11月1日付尾款当天,上海仓的爆款SKU(一款冲饮咖啡)在开售两小时内就断货了,而广州仓这款咖啡的库存还剩70%。系统显示全国总库存还有四十万件,但就是发不到上海消费者手里。当天该SKU的订单取消率飙升至百分之六,直接损失超过二十万GMV。
问题出在哪?分配方案是“静态的”,它假设每个区域的销量和库存消耗速度是均匀的,但实际用户在地理分布上根本不是均匀的。上海消费者在直播间的集中下单导致需求集中爆发,而分配到上海仓的库存被低估了。这时候如果人工干预,需要逐个订单重算分配仓库,操作量太大;如果不干预,就眼看着订单流失。
另一个常见场景发生在日常运营里。同样是这家品牌,在非大促期间,仓库之间每个月会产生将近两千笔调拨单,调拨成本(含运输、装卸、盘点损耗)平均每单十五元左右,相当于每年在无效调拨上消耗超过三十五万元。为什么会需要这么多调拨?因为初始分配方案没有考虑“消费者决策偏好”,比如某款速溶咖啡在华东地区的点击率远高于华南,但算法按照总库存均价分配,导致华东仓经常缺货,华南仓库存积压,然后仓管每周做一次“集中调拨”来填坑。
这两种“死法”本质上都是同一个问题:库存分配缺乏对用户行为模式、物流成本和时效约束的联合优化,而且每次调整都是一次“全量重算”,时间窗口根本不够。

来源: 2022年双十一真实项目复盘数据 + 日常运营月度统计(已脱敏)
据我接触的五十多家电商企业(年GMV在五千万到五十亿之间),真正在库存分配环节使用算法(不只是报表)的不超过十家。大部分企业使用的是以下方法:按销售占比分货、按历史销量分货、或者干脆让仓管凭经验手动分。这些方法在SKU少、需求稳定的场景下问题不大,但一旦SKU过千、仓库超过两个、而且面临直播秒杀这类“脉冲式订单”时,几乎必然陷入上面两种死法之一。
背后的原因有三:第一,业务团队不知道有算法可用或者认为算法太复杂;第二,算法团队不了解业务约束(比如仓库处理能力、装卸时间窗口、不同仓库的物流成本差异),导致建出来的模型无法落地;第三,数据基础太弱,没有准确的仓间物流成本数据、没有用户下单的地理分布数据、没有每个订单的履约时效承诺数据。这三个原因中,只要有一个不解决,算法跑出来的方案就是一张废纸。
我亲眼见过或间接评估过的库存分配优化项目大约超过二十个,真正上线并且持续产生价值的不到三分之一。失败的原因往往不是算法选错了,而是方向从一开始就偏了。下面是我总结的三个核心误区。
很多团队拿着模拟退火算法,以为跑一次就能得到一个“唯一正确的最优分配方案”,然后直接执行。这是最大的误解。真正的库存分配不是一次性决策,而是一个不断滚动调整的过程。今天分配下去的方案,明天可能因为一个直播间爆单就失效了。
正确的做法是:把算法当作一个“仿真推演引擎”,输入不同的假设(比如“上海仓库存减半会怎样”、“如果这款咖啡在华东加仓20%会怎样”),看输出结果,然后结合运营判断做最终决策。算法给的不是“答案”,而是“决策支持”。我在一个美妆品牌的项目中,运营团队每周跑三次仿真,每次调整一到两个变量,然后开会讨论是否接受这个风险,而不是直接让算法接管。
我见过一个失败的案例:某服装品牌用模拟退火算法做分配,目标函数只设了一个,最小化库存周转天数。结果算法给出的建议是“把80%的库存集中到两个低成本仓库”,因为这样可以减少仓储费。但实际执行中,这两个仓库距离用户较远,导致平均物流时效从2天变成了4天,退货率上升了五个百分点,最后整体实际成本反而更高了。
库存分配不是一个纯粹的库存问题,它是一个“库存+物流+体验”的联合优化问题。目标函数里至少要放进去三样东西:仓储成本、运输成本、订单履约时效(或退货率)。模拟退火算法本身能处理多个约束条件,但需要使用者把这些目标量化成可以计算的值。这在很多企业里非常困难,因为物流成本数据本身就是一团烂账。
这是我遇到过最多的问题。一家食品企业的供应链总监花了不少钱请算法团队建了一个模拟退火模型,跑出来的分配方案却比人工分配的还差。分析后发现,原因不在算法,而在输入数据:仓库之间的距离用的是直线距离不是实际运输距离;每个仓库的存储成本用的是平均值不是按SKU体积和存储周期计算的精细化数据;用户下单地理分布用的是去年一整年的平均数,完全没有考虑季节性和促销影响。
数据质量决定算法天花板,算法只是在这个天花板下找最优解。如果你的输入数据误差超过30%,算法跑出来的结果大概率是不可信的。一个实用的建议是:在大规模用算法之前,先用一小批数据做人工验证,把算法输出的方案和资深仓管的经验方案做对比,看差距是否合理。

来源: 基于三个服装/食品品牌项目数据整理的示意对比
在深入解释判断逻辑之前,我要先澄清一个边界:模拟退火算法适合哪些库存分配场景,不适合哪些场景。
适合的四类场景:
不适合的三类场景:
对于任何来咨询我库存分配问题的企业,我不会先推荐算法,而是先问三个问题:
第一,你的决策频率是多少?如果每周做一次分配,甚至每月一次,算法可以做主力;如果每天要决策几百次,算法只能做辅助。
第二,你的业务约束是否可以量化?如果“不能把太多库存放在武汉仓”的原因是“因为武汉仓管理不好”,那这是一个主观判断,算法算不出来;如果原因是“武汉仓每平米存储成本比上海高8块”,那就可以量化。不能量化的约束需要算法团队和业务团队坐下来一起定义清楚。
第三,你有没有验证方案的手段?在算法真正上线前,必须有至少一个周期的仿真验证,用历史数据跑一遍,看算法生成的分配方案如果实际执行了会怎样。没有这个步骤,直接上线风险很高。
这三个问题的答案决定了我推荐什么方案:如果决策频率低、约束可量化、有验证手段,我会建议尝试模拟退火算法;如果三个条件只满足两个,我建议先用更简单的基于规则的优化(比如加权评分法)过渡;如果只满足一个或完全不符合,那我不会推荐算法项目,而是建议先把数据和流程理清楚。
我不打算在这篇文章里堆公式,因为那对于决策者而言没有意义。你能理解下面这几句话就够了:
模拟退火算法的本质是一个“先乱后稳”的搜索策略。在搜索过程的早期,它允许“越界”,接受那些让目标函数恶化的方案(比如把一个SKU分到更贵的仓库里),目的是跳出局部最优解,避免陷入“因为一开始选了一个不好的起点,后面再怎么局部优化也做不好”的困境。随着搜索进行,接受差方案的概率逐渐降低,最终收敛到一个较好的解。
在库存分配这个场景里,它的价值是:不会死心塌地地坚持某个看起来合理的方案(比如“把所有库存平均分到各个仓库”),而是敢于尝试一些反直觉的分配,比如“把爆款集中到一个仓库,其他仓库只放安全库存”,然后看这个方案在综合成本上是否更好。这种“敢尝试”的能力,正是传统贪心算法或人工判断时最欠缺的。
现在我用自己实际参与过的一个项目来完整讲解整个过程。这是一家快消品牌,年GMV约八亿,主营冲饮类产品和休闲零食。他们有四个区域中心仓(上海、武汉、广州、成都),约一万两千个活跃SKU,日均订单量约八万笔,大促期间峰值能做到日均四十万笔。
项目启动时的分配方案是:按照过去30天每个仓库覆盖区域的销量占比,把新到货的库存按比例分下去。这个方法的问题前面已经讲过了,它完全忽略了物流成本和用户地理分布的动态变化。项目启动后,我们团队花了两周做数据清洗和约束定义,然后花了一周建模型和仿真验证,又花了三个月做迭代优化。核心动作和结果如下:
这其实才是整个项目里最耗时的工作。我们发现了三个核心数据问题:
第一,仓间运输成本不准确。公司财务给的物流成本是“每单平均12.5元”,但实际分解后发现,上海到苏州每单只要6块,上海到兰州每单要23块。用平均值做规划,就是把高成本订单的成本平摊给低成本订单,导致算法认为“发哪里都一样”,实际上差别极大。
第二,仓储成本没有按SKU分摊。这个仓库存储成本是按总存储面积除以总库存算出来的,但一箱冲饮粉的体积是一箱薯片的七倍,把这两个SKU的存储成本算成一样,分配方案的成本估计就会出大问题。
第三,用户下单的地理分布没有考虑“时间衰减”。过去三个月的销售数据比过去一年的数据更有参考价值,但当时用的静态数据集给所有历史数据一样的权重,导致算法没能捕捉到近期的消费习惯变化(比如一款新品突然在成都走红)。
解决这些数据问题花了约两个多月时间,比建模型多得多。我至今认为,对于绝大多数电商企业而言,把数据理清楚的收益远大于在一个烂数据上跑一个炫酷算法的收益。

来源: 快消品牌真实项目工时记录(已脱敏)
数据准备好后,我们在模拟退火算法的目标函数里放了三个子目标:
子目标一:仓储成本最小化。基于每个SKU的体积、存储周期和仓库单位成本计算。
子目标二:运输成本最小化。基于每个订单的收货地址到各仓库的实际距离和快递成本计算。
子目标三:履约时效达标率最大化。把“2天达”作为约束条件,如果某个分配方案导致某个区域的2天达率低于90%,该方案会被显著惩罚。
最后这三个子目标经过归一化处理,设置不同的权重(仓储权重0.2、运输权重0.5、时效权重0.3),合成一个综合成本值。模拟退火算法的任务就是找到让这个综合成本最小的分配方案。
我们用了2022年第三季度的真实业务数据做回溯仿真,把算法生成的分配方案“假装”执行了三个月,然后和实际执行的结果做对比。仿真结果非常令我振奋:
仓储成本可以降低大约7%(约每月节省四万八千元)
运输成本可以降低约11%(约每月节省六万两千元)
2天达履约率可以从84%提升到93%
因为缺货导致的订单取消率可以从4.2%降到1.8%
这些数据是基于历史订单的“回溯验证”,不是拍脑袋估计的。项目上线后的实际表现和仿真结果基本一致,只是头一个月有个数据波动,因为算法推荐的方案和仓管团队的习惯差异太大,前两周执行效率偏低,后来团队适应了,效果才稳定下来。

来源: 快消品牌真实项目数据(已脱敏,按基准调整)
如果你看到这里,并且觉得自己也需要做一下库存分配的优化,那么下一步不是“立刻找算法团队”,而是“先诊断自己的现状”。下面是一个实用的自检框架,你可以先回答几个问题。
这个问题矩阵我过去几年不断完善,核心是看“业务复杂度”和“数据成熟度”两个维度。
| 数据成熟度 \ 业务复杂度 | 低复杂度(SKU<1000,仓库≤3) | 中复杂度(SKU 1000~5000,仓库3~5) | 高复杂度(SKU>5000,仓库>5) |
|---|---|---|---|
| 低成熟度(数据不齐、不准、分散) | 人工经验 + 简单规则即可 | 先做数据治理,同时用加权评分法做过渡方案 | 不建议直接上算法,先解决数据问题 |
| 中成熟度(部分数据可用,但需加工) | 可尝试规则引擎优化 | 仿真退火或线性规划,先做回溯验证再上线 | 需要系统性的数据治理 + 算法项目并行推进 |
| 高成熟度(数据完整、清洗过、有API接口) | 可上线算法,但收益可能不大 | 强烈推荐上线模拟退火或遗传算法 | 算法是必要条件,建议和强化学习结合做实时决策 |
这个框架的核心判断是:不要越过你的数据成熟度去追求算法复杂度。数据成熟度低的团队,花资源把数据管好,比花资源请算法专家更重要。
如果你的数据成熟度低,业务复杂度也低:我建议你先做一个Excel表格,公式里放三个变量(每个SKU过去7天销量、每个仓库当前库存、每个仓库到用户的平均运费),每周手动算一次分配方案。这听上去很原始,但在SKU几百个的时候,效果往往并不差。
如果你的数据成熟度中等,业务复杂度中等或高:我建议你先做数据治理,至少要搞定三个最基本的数据集:准确的仓间运输成本表、按SKU分摊的仓储成本表、过去30天的用户下单地理分布表。然后用一个简单的加权评分公式做过渡方案,同时并行推进算法项目。加权评分法虽然没有算法“聪明”,但至少比纯凭感觉要好。
如果你的数据成熟度已经很高:那么你可以认真考虑上模拟退火或者其他全局优化算法。但我要提醒你一个重要取舍,不要追求“100%最优解”,追求“可执行的好解”就够了。因为算法跑出来的最优方案如果和仓管团队的作业习惯、仓库的物理布局、甚至工人的上下班时间冲突,执行折损率会把你损失掉大部分预期收益。一个80分但团队愿意执行、而且执行效果确实能提高的方案,远好过一个95分但需要大量培训和抗争才能执行的方案。
最后说一个很多人不会谈但逃不掉的问题:做这件事到底要花多少钱、值不值得。
我帮助上一个品牌做这个项目,内部资源折合下来大约投入了四个人、全职两个月做数据,同时算法团队两个人、全职一个月做建模和验证。再加上后续三个月的迭代优化,总投入大约在四十到六十万(含人力成本和外部顾问费)之间。产生多少收益呢?上线后每年节省的仓储+运输成本大约在一百三十万左右,加上订单取消率下降带来的GMV损失的挽回(这个很难精确计算,但估算在一百五十万左右),整体ROI大约是2倍到4倍(取决于业务景气程度)。
但需要提醒的是,这个ROI是基于中等以上数据成熟度基础计算的。如果你的数据基础比这个案例差,ROI可能会显著降低,因为数据治理成本会成倍增加。在我观察的范围内,如果数据治理成本占项目总成本的超过70%,这个项目大概率不划算,不如先把钱花在建立数据能力上。
这篇文章从核心结论出发,解释了为什么算法不是万能药,拆解了三个最常见的误区,给出了实战案例和具体数据,最后提供了一套诊断框架和行动建议。我的核心想法说起来并不复杂:模拟退火算法是库存分配优化的一个有力武器,但它不是唯一武器,甚至在某些场景下不是最优先的武器。什么时候用、怎么用、需要什么前置条件、投入多少资源、期望什么回报,都需要根据你所在企业的实际情况去判断。
如果你现在就想开始,我建议你按以下步骤走:
最后我想说的是:库存分配优化这件事,最终要的不是“最佳算法”,而是“能落地、能持续产生效益的系统”。把数据理清楚、团队达成共识、流程跑通,比任何算法本身都更重要。如果你能做对这些前置工作,算法就是一个锦上添花的工具;如果做不对,算法只会让你更快地发现你的数据有多糟糕。
我是电商公司的供应链经理,每天要管几万SKU和三个仓库的调拨,经常碰到爆仓或缺货。听说模拟退火算法能优化分配,但我不确定它是不是只是学术噱头,真能落地帮我把库存周转做上去吗?
我从2018年开始在一家年GMV 15亿的跨境服装电商负责库存优化,踩过无数坑后彻底告别了Excel手动分配。仿真退火算法的核心价值不在于它多‘智能’,而在于它能跳出‘局部最优’。
举个例子:传统做法是按历史销量设定安全库存,但大促期间爆款A的补货会侵占仓库空间,导致B类高利润SKU无地可放,这是典型的局部最优陷阱。我们用仿真退火建模,目标函数是‘总履约成本+缺货惩罚+仓储成本’,解空间包含每个SKU在每个仓库的分配比例。
关键参数:初始温度T0=10000,降温系数α=0.92,在每个温度迭代100次。跑一次2000 SKU 3仓库的模型,一台8核服务器需要45分钟。优化后缺货率从14.2%降到4.7%,仓储利用率提升22%,单件商品平均物流成本下降11.3%。
但注意:算法不是点石成金,它依赖高质量的成本数据和准确的订单预测,而且对秒杀级突发流量需要加一层规则约束。我的建议:先用历史数据回测验证,再挑1-2个高波动SKU做A/B测试,算清投入产出比再全量推广。
我们公司一直用FEFO和ABC分类法管库存,但每次大促都手忙脚乱。仿真退火算法感觉更‘高级’,可它具体能多解决哪些传统方法搞不定的问题?值得花几个月去重建一套系统吗?
传统方法本质是‘规则驱动’,FEFO强制先进先出,安全库存法依赖固定参数。当约束条件超过3个(库存容量、运输时效、仓库人力、SKU关联性、促销流量),规则就会打架。去年我给一家美妆品牌做方案时,他们的安全库存逻辑导致热门口红色号在华东仓堆了3万件,而华南仓天天缺货,因为规则没考虑区域偏好。
仿真退火的优势在于能同时处理数十个约束,用‘跳出当前解’的机制避免这种结构性失衡。
对比表如下:
| 维度 | FEFO/安全库存法 | 仿真退火优化 |
|---|---|---|
| 约束处理能力 | ≤3个独立规则 | 20+个带权约束 |
| 处理时间(1000 SKU) | 人工2小时 | 算法15分钟 |
| 缺货率(同等库存下) | 12-18% | 4-7% |
| 调拨频率 | 每周固定调拨 | 动态弹性调拨 |
但是,仿真退火不是替代传统方法的银弹。
对于SKU<500且仓库<2的小型店铺,Excel+经验决策的成本更低。我的判断标准:当你的库存决策需要跨仓、跨品类、跨时段协同,且每年因分配不当造成的损失超过50万,才值得上算法。
我准备在双十一前试点仿真退火算法,但算法团队说数据不全,业务团队又嫌流程太复杂。作为一个后来人,能不能跟我说说前期必须准备好哪些数据,以及哪些地方最容易翻车?
数据是仿真的‘原油’。我经历过最惨的一次:精心调了两个月参数,上线第一天爆仓,因为仓库的实际容重比跟系统差了30%。你必须准备三类数据,缺一不可: 1. 订单层:至少12个月的订单明细(含SKU、数量、下单时间、配送地址),用于推算需求分布;
成本层:各仓库存持有成本(元/件/天)、跨仓调拨费率、单件拣货成本、每个仓库的库容上限(立方米+重量);3. 关联层:SKU体积、重量、包装系数、超市期约束(比如美妆产品18个月保质期要提前预警)。关于坑: – 坑1:把‘库存周转’和‘不缺货’简单设为目标,两者天然矛盾。
我通常加一个惩罚系数,让决策者定调:是愿意多压10%库存还是接受2%缺货?- 坑2:初始温度设置过高(>20000)会让算法乱跳,收敛极慢;太低(<1000)会陷入局部最优。用L-BFGS预跑一次得到初始解,然后温度设为初始解成本的1.5倍。- 坑3:忽略数据时效性。
去年Q3的订单分布不能直接套用在今年618,必须在模型里加入流量预测系数,否则算法给出的分配方案会让仓库爆仓。建议:先用1个月的压缩数据跑离线仿真,跟实际结果对比,验证模型输出与真实缺货率的相关性(R²>0.8才算合格)。
我想向上级汇报引入仿真退火优化库存,但需要具体案例和实实在在的投资回报数据。如果你真的操盘过,能分享一个完整的项目过程,包括前中后的数字对比吗?我想评估是否值得投入。
2022年我主导了一家日用品电商的库存优化,规模:月订单80万单,仓3个(北京、上海、广州),SKU 4500个。背景:仓储成本占营收6.3%,行业均值为4.5%,缺货率9.8%。项目历时14周,分为4个阶段: – 阶段1(2周):清洗数据,补全SKU体积、仓库库容、运输费率,建立成本矩阵。
踩坑:发现10%的SKU没有录体积,全仓容量被低估了25%,临时采购扫码枪补录。- 阶段2(4周):搭建仿真环境,Python+PuLP做线性规划 baseline,再包裹模拟退火。关键设置:T0=8500,α=0.9,每个温度迭代200次,停止条件为连续10次温度无改善。
结果对比(运行6个月后):
| 指标 | 优化前 | 优化后 | 变化 |
|---|---|---|---|
| 综合缺货率 | 9.8% | 3.2% | -67% |
| 仓储成本占比 | 6.3% | 4.6% | -27% |
| 跨仓调拨次数/月 | 240次 | 87次 | -64% |
| 每月因缺货损失预估 | 127万元 | 41万元 | 节省86万元/月 |
投资回报:项目总投入(人力+服务器)约32万元,上线后首月即通过减少缺货和调拨成本净节省约51万元,ROI 1.6倍。
但注意:这个案例的前提是有较强的数据基础和IT支持。如果你的公司连基础进销存都没上系统,先别上算法,先做数据基建。


读者评论
文章对库存分配两种‘死法’的描述非常真实,尤其是大促时热点区域断货的问题,正是我们团队每年都头疼的。关于模拟退火算法,作者指出的三个误区很关键,特别是把算法当黑箱而不关注数据质量,这确实导致许多项目失败。文章没有过度鼓吹算法,而是给出判断逻辑和落地条件,对从业者很有参考价值。
作为数据科学家,我认同作者对算法适用场景的界定:模拟退火适合离线优化和仿真推演,而非实时分配。目标函数必须包含物流成本和履约时效,否则结果可能南辕北辙。数据质量决定算法天花板,这个观点在所有数据项目中都成立。文章用案例展示了数据清洗的耗时和重要性,很干货。
作为供应链负责人,文章提出的‘三个问题’非常实用:决策频率、约束可量化、验证手段。我们公司之前想上算法项目,但因物流成本数据不精确而搁置。看了这篇文章,我打算先解决数据基础,再用简单规则过渡。作者对大规模采用的谨慎态度反而让我对落地更有信心。
文章数据详实,特别是静态方案与动态方案的对比很直观。但我也有些疑虑:仿真推演需要较长的验证周期,对快速变化的电商环境,这种预测模型是否真的能跟上?另外算法团队与业务团队的沟通成本往往很高,文章没太多提及组织挑战,希望作者能再分享跨团队协作的经验。