先声明立场:我们小仓可烧不起 WES 这个钱。一套 WES 上下来,软件加实施,够我交好几年房租了。所以今天这篇不是种草,是"吃不起猪肉,还不能看看猪跑吗"——上个月我去参观了朋友在 Phoenix 的新仓,人家上了 WES,我站在大屏前面看了俩小时,回来把这套 wes wave release algorithm(WES 放波算法)琢磨明白了。结论先说:这东西没那么玄,核心逻辑我们小仓每天都在用,只是人家写成了代码,我们写在白板上。
我们小仓的放波:靠吼,真的靠吼
先讲讲我们的窘境,给大家垫个底。我们仓 3000 平,12 个人,用的 WMS 是基础版,放波功能约等于没有。每天的放波流程是这样的:早上 8 点,我站在白板前面,左边写今天各快递的截单时间,右边写昨晚积压的单量,中间画个圈——"先放 UPS 的,FedEx 的等 10 点那批,亚马逊的下午再说。"然后拿起对讲机:"兄弟们,开波了!"
这套"人肉 WES"跑了三年,翻车名场面数不胜数。最经典的是去年旺季某天,我看积压单多,一口气放了 400 单下去。结果复核台直接堵成春运——打包的人手不够,复核排队排到巷道里,UPS 的车在月台等了 40 分钟,司机脸比车尾灯还红。从那以后我学乖了:放波不是放得越多越好,是放得"刚好吃得下"最好。这个道理,WES 的算法里写得明明白白。
WES 到底是个啥:大堂经理
在讲算法之前,先用人话说说 WES 是干啥的。WMS 管的是"账"(库存、订单、库位),自动化设备(分拣机、AMR、输送线)管的是"手脚",WES 就是夹在中间的"大堂经理":楼上 WMS 说"今天有 5000 单要出",楼下设备说"我每小时只能吐 800 件",大堂经理负责排班——决定先干哪批、每批干多少、怎么分才不打架。
放波(wave release)就是大堂经理最重要的活:把订单池里的单子一批一批地放下去。放早了,货还没到齐;放晚了,截单时间过了;放多了,下游堵死;放少了,人闲着烧钱。WES 的 wave release 算法,说白了就是回答四道题。
放波算法在算的四道题
第一题:哪些单子到点了?(截单时间聚类) 算法先扫一遍订单池,按承运商截单时间分组。UPS 下午 3 点截、FedEx 4 点截、卡车 5 点走——快截单的单子优先级提到最高。这道题我们小仓也会做:白板左边那一列就是。但 WES 狠在它连"还差几件没到货的单"都算进去了:差一件的单,它会判断这件货是 10 分钟后到(等一等,放下一波)还是明天才到(拆单,先发有的)。
第二题:单子长什么样?(订单形态分组) 算法把单子按形态分成几类:单件单(一个 SKU 一件,最适合播种式分拣)、多件单(要去不同区拣)、大件单(走特殊流程)。不同形态的单子混在一个波次里,拣选员会疯——刚拣完 50 个单件单,突然来个 20 件的大单,节奏全乱。WES 会把形态相近的单子凑一波,让每条作业线干的都是"同一种活"。这招我们小仓其实也在用:单件单单独放一波,让新手去干,多件单留给老手。
第三题:吃得下多少?(容量反算) 这是最见功力的一道题。算法倒着算:分拣机每小时处理多少件、复核台有几个人、输送线会不会堵、月台有几辆车在等——倒推出"这一波最多放多少单"。Phoenix 那个仓,朋友跟我说他们的 WES 一天放 40 多波,平均每波 15 分钟释放一次,每一波的单量都是算出来的,不是拍脑袋的。对比我们那次 400 单的翻车:我们是正着放(有多少放多少),人家是倒着算(吃得下才放)。就这一正一反,高下立判。
第四题:各区忙闲均不均?(工作负载均衡) 大仓分区作业,A 区可能 10 分钟干完,B 区要干 40 分钟,整波就被 B 区拖住了。算法会微调波次构成,往快的区多塞点、往慢的区少塞点,让各区差不多同时完工。这道题我们小仓感受不深(地方小,分啥区啊),但道理相通:我排班的时候,也会把手脚快的人和慢的人搭配开,同一个道理。
| 算法在看的输入 | 我们小仓的土办法对应物 |
|---|---|
| 承运商截单时间 | 白板左列,手写 |
| 订单形态(单件/多件/大件) | Excel 透视表,每周看一次比例 |
| 设备产能(分拣/复核/输送) | 复核台几个人,心里有数 |
| 库存齐套率 | 早上盘一遍热销品 |
| 各区人力分布 | 谁快谁慢,我门儿清 |
你看,输入项我们全有,差的只是"算"这一步——人家是代码实时算,我们是脑子凭感觉算。
反常识:算法最怕的三件事
参观回来,我还跟朋友的实施顾问聊了一下午,挖到三个反常识的点:
第一,算法最怕黑盒。有些 WES 的放波逻辑是个黑箱,问它为啥这波放了这些单,它答不上来。旺季一出幺蛾子,没人敢调参数——调了也不知道会发生什么。朋友他们选型时专门要求"每条放波规则必须能说出理由",这条我 100% 赞同:看不懂的系统,等于没系统。
第二,波次不是越小越好。有人觉得波次越小越灵活,恨不得一单一波。错。每次放波都有切换成本:任务下发、人员走位、设备清线。波次太小,切换损耗吃掉所有效率 gain。最优波次大小是个 U 型曲线的最低点,WES 算的是这个点,我们小仓凭的是"放三波试试"的体感——土,但方向没错。
第三,人力波动是算法的死穴。设备产能是死的,人是活的:今天来了 12 个人,明天病了 2 个,算法按 12 个人算的波次就全错了。朋友的仓为此专门做了"人力衰减系数",缺一个人,波次单量自动打九折。看到这儿我乐了:我们小仓这套"看人下菜碟"玩了三年,大厂管这叫"动态人力系数",名字起得真贵。
穷人版放波:我们小仓的土办法 checklist
买不起 WES,但算法的思路可以白嫖。这是我根据那四道题改的"穷人版放波 checklist",贴在我们办公室墙上:
- 每天固定三个放波点(9 点、13 点、16 点),不搞随机放波——节奏固定,人就不会乱。
- 每次放波前,先看截单时间:2 小时内截单的承运商订单,全部优先。
- 单件单单独成波,给新手和临时工干;多件单成波,给老手干。
- 放波量 = 复核台人数 × 每人每小时能过的单量 × 1.5 小时——超过这个数,坚决不放。
- 大促前一周,用 Excel 透视表看一眼单件/多件比例,变了就调第 3 条的分组。
这套土办法跑下来,我们旺季再也没堵过复核台。当然,跟人家 WES 一天 40 多波的精度比不了,但我们的成本是零——零成本,零翻车,还要啥自行车。
最后说句大实话:WES 的放波算法,本质上就是把老师傅的经验写成了代码。它不会替你思考,只会替你算得更快。所以别神话它,也别怕它。把那四道题想明白,你就是你家仓库的人肉 WES——还不用交实施费。小仓有小仓的活法。
作者:小马|小仓创业者







