2021年,菜鸟网络宣布完成全国物流骨干网升级,将同城次日达覆盖范围扩展至全国1000多个县域。背后的核心问题其实很直接:有若干发货仓库、若干目的地,货物如何分配,从哪个仓库发往哪个目的地,总运费最少?这个问题看似简单,但当仓库和目的地数量增加,人工排列组合完全失效。运输模型就是帮助找到最优分配方案的系统方法。
以下讲解三类相关决策问题:运输问题(货从哪里运)、指派问题(谁做哪项任务)、以及更广义的网络模型(如何在路网中找到最短路径、最大流量或最低成本的连接方式)。这些问题被广泛应用于物流配送、资源调度、设施选址等领域。
运输问题(Transportation Problem)是关于如何在多个供应地和需求地之间,安排货物流量,使总运输成本最小化的问题。
三要素包括:供应点(Sources)提供货物、需求点(Destinations)接收货物、每条路径有固定的单位运输成本。决策的任务是确定每条路径分配多少运量。
举例:某快消品公司在武汉、郑州、西安三地设有仓库,需要配送到长沙、南京、成都三个中心。供应量与需求量如下:
表中数字(4、8、11等)为该路线每吨运输单价(元/吨)。本例中供应总量与需求总量均为300吨,属于供需平衡问题。
决策变量是每条路径分配的运量。例如,(x_11) 表示武汉发往长沙的运量。目标是在满足供应和需求约束下,总运输成本最小:
其中 表示从供应点 到需求点 的单位运价, 为该路径分配的运量,且 。
求解运输问题分两步:先用一种方法找到初始可行方案,再用改进算法(如踏石法)逐步优化,直到不能再降成本。初始方案质量越高,后续优化所需迭代越少。常见三种初始方案方法如下:
方法一:西北角法(Northwest Corner Method)
最简单的方案。按表格左上角(西北角)开始,每次尽量多分配满足当前单元格的供需,然后向右或向下推进,直到分配完毕。
沿用上面三仓三地例子:
总成本为 (120\times4 + 30\times7 + 50\times5 + 40\times6 + 60\times5 = 1480) 元。
优点是极快,缺点是不考虑运价,初始解可能远离最优,需要更多迭代。
方法二:最小元素法(Minimum Cost Method)
分配时优先选运价最低的路径,然后划去已分配满的行/列,再在剩下的格子中找次低价,依次操作。
如例子中,武汉→长沙4元/吨最低,优先全分配,再选次低(郑州→南京或西安→成都5元),继续操作。结果通常比西北角法节约成本,后续迭代也减少。
方法三:Vogel近似法(Vogel's Approximation Method, VAM)
质量最高的初始方法。先对每行和每列分别计算最低价与次低价的差值(罚分),罚分最大的那一行/列优先分配其最低价单元格。每次分配后都重新计算罚分。
示意表如下:
如武汉行和成都列罚分最大,先选武汉行的最低价武汉→长沙优先分配,后续逻辑同理。每轮分配都根据最新余量动态调整罚分,因此质量最佳。
方法对比:
供需不平衡(Unbalanced Problem)
实际中供应量和需求量相等并不常见。需要平衡时:
举例:三工厂总产能500吨,三经销商需求合计420吨:
虚拟需求填补多余产能,恢复平衡。分配到虚拟需求的运量即为剩余闲置产能。
禁止路线(Prohibited Routes)
某些路径因条件限制无法使用。做法:将禁止路线的运价设为极大值(如999999或(M)),模型在优化过程会自动回避此路线,分配结果中此运量为0。
指派问题(Assignment Problem)是运输问题的特例:供应地和需求地数量一样,每个只能分配一次,每次分配量固定为1。
实际应用非常多,比如安排5名员工做5项工作,或者5辆车运5批货,不同“人-事”或“车-货”组合的成本不同,如何匹配使总成本最低?
例:某物流公司有4辆货车(A、B、C、D),分别运送4批货物(1、2、3、4),组合成本为:
手工穷举(4!=24种)还行,但如果有20辆车,则有(20!)种可能,人工完全不可行。
匈牙利算法(Hungarian Algorithm)
专为指派问题设计,其核心思想是:通过对成本矩阵做“行减法”与“列减法”,尽量生成更多的零,然后从中选一组独立零元素(每行每列各一个),找到的这组就是最优指派。
步骤:
例如:
最终最优分配是:货车A针对货物2、货车B货物3、货车C货物1、货车D货物4,总成本(2+3+5+4=14)元。
运输和指派问题都属于“点对点”资源分配。当还需考虑路径、容量等网络结构时,用更广义的网络模型。其基本构件为节点(Nodes)和边(Arcs),每条边有距离、成本、容量等属性。
最短路径问题(Shortest Path Problem)
找到从起点到终点的最低成本(距离/时间/费用)路径。经典算法是Dijkstra算法:每次寻找距离起点最近的未访问节点,不断扩展,直到抵达终点。
示例:某公司需要从仓库(节点1)配送货物到门店(节点6),路网如下:
Dijkstra算法算出最短路径为1→3→4→6,总时间33分钟(有时不直观路径更优)。
最大流问题(Maximum Flow Problem)
关心网络从源点到汇点在容量约束下的最大通过流量。常用于港口、带宽、管道等领域。须找出最薄弱的“瓶颈”,决定总流量。
最小生成树(Minimum Spanning Tree)
问题为如何以最少成本连接所有节点。例如园区道路、管网、仓库调拨通道规划。经典Prim和Kruskal算法分别通过不同思路得到总代价最低的连接方案。
案例一:电商平台的仓网分配优化
某电商在华东有上海、南京、杭州三个大仓,向苏州、宁波等5个城市发货,成本与距离相关。平台过去按就近原则分配,但优化后发现这样并不是最省钱。团队采用最小元素法建立初始方案,再用MODI法迭代,最终总配送成本降了约11%,仓库周转率也提升。
说明:运输模型不仅省钱,还推动仓网整体均衡优化。
案例二:建筑公司的设备指派
某集团有5台大型设备,需分配到5个工程项目。每台设备各地效率不同,目标是总工期最短。用匈牙利算法建模,最终最优方案使总工期缩短约15%,避免违约罚款。
案例三:城市配送路网最短路径规划
顺丰在某二线城市新建配送站,需要规划到25个社区的最优路线。团队将路网建成有向图,对每个社区用Dijkstra算法算最短路线,并将社区分为四条车线路分担,提高了整体效率约22%。这里最费时的是数据整理,算法本身极快。
运输与网络模型是物流领域最实用的定量分析工具,解决“如何流动最合理”这类核心问题。
从运输到网络模型,这些工具都在回答资源如何在空间内流动才能使全局最好。后续内容将把视角扩展到时间维度,用关键路径法(CPM)和PERT等项目管理工具介绍“如何让多任务项目准时完成”。