仓储圈每隔一阵就会冒出”流拣选更先进、波次该淘汰”的论调。最常见的一个具体主张是:单品单件(一单一件)订单,天生就该走流拣选。

我一度也这么认为,甚至把它写进过方案。但当我把容器封箱、拣打平衡这些落地细节一个个抠到底,结论反转了:在绝大多数人工拣货的海外仓里,纯流拣选相对一套优化过的动态波次,几乎不剩什么真优势。

更要紧的是——我们争的”波次 vs 流”,很可能从一开始就是个伪命题。真正该分的,不是波次和流,是订单结构

这篇把整个推理过程摊开。


一、先讲清楚两者到底差在哪

动态汇波早就不是”固定时间一刀切”的静态波次了。一套像样的动态汇波会周期性重算(比如每 10 分钟跑一次算法)、不断纳入晚到订单、设量门槛攒够密度才下发、进入拣选即锁定、未下发的可销毁重组。它本质上是用”微波次”在逼近流式——既保留批量合并的效率,又把时延压得很低。

流拣选则是订单进来近乎实时拆成任务、持续往拣货端推、没有明显批边界。优势是时延极低、负载最平;但它对系统实时性、下游缓存、背压要求极高,而且——这点最关键——重度依赖订单密度


二、第一性原理:一切回到拣货密度

流拣选最大的隐藏前提是:订单到达率足够高且稳定。

因为”来一单拣一单”,一旦单量稀疏,拣货员就是为一两件货在仓库里来回空跑,行走时间(walk time)爆炸。而在人工成本高的市场——比如美国海外仓——walk time 几乎直接等于钱。

波次的合并优化恰恰在解决这件事:把一趟行走摊到尽可能多的订单上。

单量越稀疏、波动越大,越需要攒批;单量越饱和、越稳定,流拣选才越站得住。

记住这把尺子,下面拆解全靠它。


三、”单品单件该走流”——四个所谓优势,逐条拆

这是全文的核心。支持单品走流的人,通常会举这四条好处。我们一条条看:

① “不用播种墙”
——这是订单结构的红利,跟流还是波次毫无关系。单品单件本就不需要合单播种,无论你用流还是波次,都不进墙。动态波次照样能把单品单件单独成批、直送打包。这条好处,分线就拿到了,不归流。

② “同 SKU 一把抓、密度高”
——这是攒批带来的。而且恰恰相反:波次因为”先攒后发”,同 SKU 的聚合机会比连续流更多;流式来一单放一单,SKU 还没攒起来就发了,密度反而更低。这条,流不是赢,是输。

③ “时延低”
——流确实赢。但海外仓按天承诺(当日截单次日发),那几分钟批内时延对客户零感知。这条优势在场景里直接作废。

④ “负载平滑”
——流确实最平。但动态波次只要把波次切小切频(微波次),平滑度就能逼近流,只差一点点。

四条拆完:两条本属于分线,一条流反而输,一条几乎追平。所谓”单品流优势”,所剩无几。


四、而流还要倒贴三笔隐藏成本

拆穿了虚的优势,再看流式实打实多出来的代价:

① 容器溢出:在线封箱 vs 离线装箱。
波次是先把批算好再下发,可以在规划阶段按容器容量做装箱(离线 bin-packing),塞满刚好为止,溢出在计划期就被挡掉。流式没有预先的批边界,货连续进容器,只能边流边贪心切箱(online bin-packing)——容器利用率更差,而且件数、方数、重量任一维度先到顶就得提前封箱。一单一件下,”件数=订单数”好控,但件型一混,往往是方数或重量先于件数触顶,封箱逻辑反而更绕。

② 丢了缓冲,”超”会迁移。
单品直送打包、不过分拣机,省掉了滑道溢出——但也丢掉了分拣机顺带承担的缓冲。一旦拣货速率 > 打包速率,”超”不会消失,而是迁移到打包台前的在制品堆积。这逼着你在下发侧用回压顶:打包台饱和就限流上游。

③ 实时背压机制本身的工程复杂度。
连续流要稳,得有一整套实时容量追踪 + 背压,比波次”算好—下发—锁定”的状态机复杂得多。


五、所以,值钱的从来是”分线”,不是”流”

把单品单件从多品里拆出来——这个分线动作本身,贡献了几乎全部收益(不进墙、密度高、打包快)。而它跟”流”无关。

分线之后,单品线最优的跑法,其实仍是一条独立的、按单品特性调过参的动态波次

  • 波次切小切频(逼近流的平滑,又保留攒批的密度);
  • 封箱按容器容量(件数 / 方数 / 重量),而非按播种墙;
  • 尽量同 SKU 聚合,喂给高速打包工位;
  • 下发节奏跟打包台实时产能挂钩做回压。

工程上的好处很实在:你不需要在仓里同时养”波次引擎”和”流式引擎”两套东西。一套动态汇波引擎 + 两条参数不同的波次流(单品线 / 多品线)就够了,简单得多,效果还更好。

至于那条多品线,配合前面提过的几个优化就到位了:量门槛随 cutoff 动态降、加 aging 兜底防低峰时效崩、用”批质量”(播种墙填充率 / SKU 聚合度 / 路径密度)而非订单计数当门槛、门槛分区设置、叠加 ABC 动态分区。


六、那流拣选到底什么时候才真的赢?

有一个清晰的分界点:当你上了 A-frame / 货到人(GTP)/ AMR 这类自动化分发。

此时拣货密度不再依赖人走路,流的密度劣势瞬间消失;而这些自动化设备本来就是”流式喂料”的,连续流 + 实时分配反而最顺。这才是流拣选真正的主场。

在那之前——人工拣货、海外仓量级、按天 SLA——微波次就是更优解。


七、一张决策表

你的情况 该怎么选
人工拣货 + 按天 SLA 动态波次(微波次)
单品单件占比高 分线,单品单独成一条波次流,别上纯流
多品订单 动态波次 + 播种墙
单量稀疏 / 波动大 动态波次(攒批保人效)
单量极高且稳定 流的性价比才开始显现
已上 A-frame / GTP / AMR 流拣选(自动化的主场)

结语

“波次 vs 流”本是两种工具之争,却被讲成了先进与落后之争。

真正的功夫在两处:先按订单结构分线(单品 / 多品各走各的),再把动态波次的门槛、封箱、回压打磨到位。与其纠结要不要整仓上流拣选,不如先把手里这套动态波次调到位——投入产出比高得多。

等你哪天上了自动化,流自然会找上门。在那之前,别为一个听上去更先进的名字,去换一套更复杂、还更慢的系统。


附:如果你是”单次发车”的仓,还能再砍一刀

前面说”按天 SLA 下时延不值钱”。有一类仓把这一点推到了极致——单次发车:比如下午 3 点截单、5 点供应商提货,一天就这一趟车。

这种仓有个关键事实:所有单都上同一趟车。 一个订单 3:05 拣出来还是 4:55 拣出来,对客户毫无区别——窗口内的时延惩罚是。把这个”零”立起来,还能再砍两刀:

1. 截单后的滚动重算,关掉。
滚动重算(比如每 10 分钟重算一次)是为”订单持续到达”设计的。可你 3 点一截单,订单池就冻结了,之后再每 10 分钟重算,是对着一个不再变化的池子空转。正确做法:截单那一刻对完整的剩余池做一次充分优化(此时看得到全部,能算到最优),然后关掉滚动重算,剩下就是盯发车 deadline 执行。

2. 把优化目标彻底压成”密度”。
时延既然为零,目标就只剩”固定窗口内用最少人力清完”——一个纯吞吐 / 密度问题。

  • 产能富余(轻松能清完):尽量往后压、等池子长大,让批更密,越晚拣越省人。
  • 产能吃紧(全天满负荷、压不动):靠晚绑定保密度——别提前把波次拼好排长队,让订单留在未拼批的池子里,等拣货员要下一批时,才从当时最大的可选池里挑最密的那批绑给他。拣货员不断粮,批又够密。这正是你那套”未下发可重组”该发挥的地方。

一句话:单次发车的仓,时延为零,优化只剩密度;截单后别再让算法空转。