一、零担配载不是“装得下就行”
零担配载表面上像Bin Packing:把多票货装入容量有限的车辆。但它比标准装箱多两个硬约束:目的站可达性(车辆的线路必须经过该货的目的站,或经过能中转过去的分拨)和中转次数上限(绕行太多节点会导致时效不可接受)。更关键的是装载顺序的物理约束:一票货在车厢中的位置,直接决定了沿途卸货时是否需要翻动其他货物。
欧洲零担卡派的配载算法实践给出了一个清晰的描述:系统需要载重与体积双维度配载,轻泡货与重货搭配,避免“车装满了没超重,或超重了没装满”;同时时效与装卸节点排序要求“先到的后装、后到的先装,减少现场翻货次数”。这意味着配载排序的第一优先级不是重量或体积,而是目的站在线路上的先后位置。
二、目的站时序:装载顺序的物理基础
专线和零担的多点装卸场景中,线路是有向的站点序列:A → B → C → D。每个目的站在序列中有固定的stop_seq。一票发往B的货,和发往D的货,在车厢中的位置要求完全相反:B站先卸,应该装在靠外的位置;D站后卸,应该装在靠里的位置。
如果按重量降序装载,一个发往B的重货被压在车厢最里面,到达B站时必须把后面的D站货物全部卸下来才能取出,装卸效率急剧恶化。正确的排序是按目的站的stop_seq降序装载:目的站最靠后的先装(在车厢最里面),目的站最靠前的后装(在车厢最外面)。
java
public LoadSequence buildSequence(List<Waybill> waybills, Trip trip) { // stop_seq 越大(越靠后到达)→ 越先装(越靠里) waybills.sort(Comparator.comparingInt( (Waybill w) -> trip.stopSeqOf(w.getDestStation())).reversed()); LoadSequence seq = new LoadSequence(); for (Waybill wb : waybills) { if (seq.canFit(wb)) { seq.add(wb, trip.stopSeqOf(wb.getDestStation())); } } return seq; }这个规则看起来简单,但它是零担多点装卸的物理基础。忽略它,配载算法算出的“最优解”在仓库现场是不可执行的。
三、配载决策:候选过滤 + 贪心装入 + 局部交换
完整的配载决策分三步。第一步,候选过滤:只保留目的站可达、中转次数不超过运单max_transit、车辆剩余容量能容纳的运单。第二步,按目的站时序排序后贪心装入:按stop_seq降序排列,依次装入,同时校验重量和体积双约束。第三步,局部交换优化:如果剩余容量能装入一个更靠后目的站的货,尝试替换一个靠前的货,提升“同站卸货率”——同一目的站的货集中在一辆车上的比例越高,沿途停靠次数越少。
中科院的一项零担路径规划专利给出了可参照的算法框架:采用迭代局部搜索(ILS)框架,先按区域划分降低计算复杂度,再用凝聚层次聚类对初始解聚类以提升局部搜索效率,类内做局部搜索后扰动,迭代至停止条件。这个框架的工程含义是:零担配载不需要精确求解,聚类降维 + 启发式迭代在可接受时间内给出足够好的解。
四、装载率的两维度量
零担的装载率不能只报一个百分比。重量装载率和体积装载率分别反映不同的瓶颈:一车轻抛货可能在体积打满时重量只用了60%,继续加货会超体积;重货则重量先打满。有效装载率取两维较小值,因为任一维度先打满,另一维度就无法继续利用。调度看板必须同时展示两个维度和有效值,才能判断是该换大车还是该拆分配载。
五、避坑指南
坑1:用重量降序做装载排序。专线/零担的多点装卸场景中,装载顺序必须按目的站的站点时序排列,目的站最靠后的先装。重量降序会把中途站的重货压在最里面,沿途卸货时需要翻动全部货物。
坑2:只校验总重量和总体积,不做逐站容量释放。车辆从A出发时装满,到B站卸下一部分货,剩余容量应该被后续站点的装货利用。如果配载时只做“出发时是否装得下”的判断,忽略了沿途卸货释放的容量,会浪费大量装载空间。
坑3:忽略中转次数约束。路由只优化里程,配载只优化装载率,两者不联动。运单的max_transit来自客户协议,配载和路由都必须把这个约束纳入计算,否则“装上了但绕了三个中转站”的货,时效可能比不装还差。
六、总结
零担配载与多点装卸的核心经验可以概括为两句话:排序按目的站时序,而非重量或体积——目的站最靠后的先装,最靠前的后装,这是物理作业的硬约束。配载决策分三步:候选过滤、时序排序贪心装入、局部交换优化——聚类降维和启发式迭代在可接受时间内给出足够好的解,不需要精确求解。装载率同时看重量和体积,有效值取较小者,才能判断真正的瓶颈。
下一篇预告:国内零担的配载解决了,跨境场景的数据链路更长、状态更复杂。明天聊跨境数据同步与CDC管道——MySQL binlog到Kafka的实时同步,以及断点续传与合规约束。
> 本文作者:深圳+Eyf•半字节科技▪技术产品团队
> 物流、快递、快运作业管理系统,让每一票,都清晰可控。从任务分配到签收回传,一站式管理每个作业环节。