2. 配送网络与路径问题建模基础

配送路径优化的第一步不是写算法,而是把现实中的配送场景翻译成一张"数学地图"。这张地图由五个基本要素构成:节点、弧、需求、时间窗和车辆容量。理解这五个要素如何组合,就理解了 VRP 家族模型的全部演化逻辑。

一、节点与弧:网络的骨架

在配送网络建模中,节点代表需要访问的位置。通常设置一个配送中心(depot),编号为 0,所有车辆从这里出发并返回;其余节点为客户点,编号 1 到 n。节点携带两类关键属性:位置坐标(决定行驶距离)和服务时间(在该点停留装卸的时长)。

弧是节点之间的有向连接,表示"从 i 到 j 可以通行"。每条弧上附着两个核心参数:距离 dij 和行驶时间 tij。在对称问题中 dij = dji,但城市配送中单行道、限行路段会让网络变成非对称的,此时必须保留方向性。弧的集合构成距离矩阵,它是所有路径算法的输入基础。

一个容易被忽视的建模细节是:如果两个节点之间不可通行(如禁行、无路),应将 dij 设为一个足够大的惩罚值 M,而不是删除该弧。这样可以在不改变矩阵结构的前提下,让算法自动避开不可行连接。

二、需求与车辆容量:装载约束

每个客户节点 i 有一个需求量 qi,单位可以是重量(kg)、体积(m³)或件数。配送中心的需求 q0 = 0。车辆集合 K 中每辆车 k 有容量上限 Qk。容量约束要求:任何一条路径上所有客户的需求之和不超过车辆容量,即 Σqi ≤ Qk。

当所有车辆容量相同时,问题称为同质车队;容量不同则称为异质车队。容量约束是 CVRP(带容量约束的车辆路径问题)区别于基础 VRP 的唯一标志。基础 VRP 只要求覆盖所有客户并最小化总距离,不限制单车装载量;CVRP 则在此基础上增加了装载上限。

三、时间窗:时间维度的硬约束

时间窗用区间 [ei, li] 表示客户 i 可接受的服务时间段。车辆到达时间 ai 必须满足:若 ai < ei,则需等待至 ei 才能开始服务;若 ai > li,则服务不可行。服务开始时间 si = max(ai, ei),离开时间 = si + 服务时长。

时间窗分为硬时间窗和软时间窗。硬时间窗下,违反即不可行;软时间窗允许违反,但需在目标函数中加入惩罚项。VRPTW(带时间窗的车辆路径问题)通常指硬时间窗版本。时间窗的引入使问题从纯空间优化变为时空联合优化,求解难度显著上升。

四、模型表达与适用边界

三个模型的递进关系可以用一句话概括:VRP 管覆盖,CVRP 加容量,VRPTW 再加时间。选择哪个模型,取决于业务中哪个约束是"硬"的。

模型核心约束典型适用场景不适用情形
VRP覆盖所有客户,最小化总距离装载量充足、无时间要求的巡访车辆有明确载重上限
CVRPVRP + 单车载重 ≤ Qk快递末端配送、便利店补货客户有严格收货时段
VRPTWCVRP + 到达时间 ∈ [ei, li]商超生鲜配送、医药冷链、JIT 供料时间窗极宽或可忽略

需要特别注意的是,模型不是越复杂越好。如果实际业务中时间窗很宽松(如全天可收货),强行使用 VRPTW 会大幅增加求解时间却几乎不改变路径结构。反之,如果存在硬时间窗却只用 CVRP 建模,得到的路径方案在现实中可能完全不可执行。

五、一个可手算的建模示例

假设配送中心 0 坐标为 (0,0),三个客户:A(2,0) 需求 3 件,B(2,2) 需求 4 件,C(0,2) 需求 2 件。两辆车,容量均为 6 件。距离用欧氏距离取整。

距离矩阵:d0A=2,d0B=3,d0C=2,dAB=2,dAC=3,dBC=2。

若采用 CVRP 建模,总需求 9 件,两车容量合计 12 件,容量可行。一种可行分配:车辆 1 服务 A+C(需求 5 ≤ 6),路径 0→A→C→0,距离 2+3+2=7;车辆 2 服务 B(需求 4 ≤ 6),路径 0→B→0,距离 3+3=6。总距离 13。

若改为 VRPTW,假设 A 的时间窗为 [1,3],B 为 [2,4],C 为 [0,2],行驶速度 1 单位距离/单位时间。车辆 1 走 0→A→C:到达 A 时间 2,在窗内;离开 A 时间 2,到达 C 时间 5,超出 C 的上限 2,不可行。此时需要调整路径顺序或增派车辆,说明时间窗会直接改变可行解的结构。

配送网络建模要素与模型递进关系 网络结构(节点 · 弧 · 需求 · 时间窗) 配送中心 0 q₀=0 客户 A q=3 [1,3] (2,0) 客户 B q=4 [2,4] (2,2) 客户 C q=2 [0,2] (0,2) d=2 d=3 d=2 d=3 d=2 模型递进与约束叠加 VRP 覆盖所有客户 · 最小化总距离 约束:每个客户恰好被访问一次 + 容量约束 CVRP VRP + 单车装载 ≤ Qₖ 约束:Σqᵢ ≤ Qₖ(每条路径) + 时间窗约束 VRPTW CVRP + 到达时间 ∈ [eᵢ, lᵢ] 约束:aᵢ ≤ lᵢ,等待至 eᵢ 可服务 模型选择原则:只加入业务中真正"硬"的约束

六、建模时的常见陷阱

陷阱一:距离矩阵不满足三角不等式。 现实中绕行、禁行会导致 dik > dij + djk。多数启发式算法假设三角不等式成立,若不成立需先做预处理或选择不依赖该性质的算法。

陷阱二:时间窗与行驶时间单位不一致。 时间窗通常以"分钟"或"小时"给出,而距离矩阵以"公里"为单位。必须统一转换为时间矩阵,转换公式为 tij = dij / v,其中 v 为平均行驶速度。若不同路段速度差异大,应分段计算。

陷阱三:忽略服务时间。 在 VRPTW 中,服务时间直接影响后续节点的到达时间。若客户服务时间为 15 分钟,而路径上有 10 个客户,累计服务时间达 150 分钟,可能使原本可行的时间窗变得不可行。

建模检查清单: ① 节点编号是否从 0 开始且配送中心唯一?② 距离矩阵是否对称?若不对称是否保留了方向?③ 需求量单位与车辆容量单位是否一致?④ 时间窗是硬约束还是软约束?⑤ 服务时间是否已计入时间推进?⑥ 不可通行弧是否用大 M 值处理?