车辆路径问题
介绍
车辆路径问题(VRP)是一种组合优化和整数规划问题,VRP由Dantzig和Ramser于1959年提出,,旨在利用一组车辆为一些客户提供服务,其目标是在满足这些客户的不同需求下,找到路程最短或者成本更低的路线。车辆路径问题是运输、配送和物流领域的重要问题。
描述
车辆路径问题(VRP)是一个通用名字,用于描述一类问题。这类问题通常需要一组车辆(一个车辆基地或者多个车辆基地)以服务一定数量的地理分散的城市或者客户点。VRP问题的目标就是一组车辆从基地出发前往客户点,在满足所有客户点的同时,寻找出代价(代价可以是路程、时间、综合成本)最小的方法。如下图所示的VRP问题的求解。
由此看来,传统的旅行商问题(Traveling Salesman Problem)是只有一个车辆配送的VRP问题,属于VRP问题的特例,而TSP被证明是NP-hard问题,因此VRP也是一个NP-hard问题,所以其无法在一个多项式时间内解决。
数学定义
VRP是一个组合优化问题,其模型可以用一个加权完全图来表示:
min
f
(
x
)
=
∑
i
=
0
n
C
o
s
t
(
R
i
)
,
n
=
∣
v
∣
(
1
)
∣
∑
i
=
0
n
R
i
/
v
0
∣
=
∣
V
∣
(
2
)
\min f(x)=\sum_{i=0}^{n}Cost(R_i)\ ,\ n=|v|\qquad (1)\\ |\sum_{i=0}^n{R_i/v_0}|=|V|\qquad (2)
minf(x)=i=0∑nCost(Ri) , n=∣v∣(1)∣i=0∑nRi/v0∣=∣V∣(2)
公式(1)中
f
(
x
)
f(x)
f(x)表示解的评价值,用来评估解的优劣,
C
o
s
t
Cost
Cost函数用来计算每条路线的代价值,
v
v
v表示车辆,该公式说明问题的求解就是为每辆车分配路线,并且让这些路线的代价值总和最小。公式(2)中的
v
0
v_0
v0表示车辆先从基地出发,
V
V
V表示客户点和基地,该公式说明得到的路线必须包含所有客户点。
上面公式只是VRP问题最基本的模型,现在很多演变的模型核心问题都是解决上面两个问题,如有载量约束的VRP(CVRP)、电动车的VRP(EVRP)、带时间窗的VRP(VRPTW)等等,其都是在此基础上增加约束条件,因此其约束条件不在此一一列举。
求解方法
之前提到过,由于VRP问题是一个NP-hard问题,其问题的求解难度随问题规模增大呈指数级增长,因此很少有精确算法能够解决此类问题,大部分的算法都是启发式算法和元启发式算法来解决此类问题。以下本文就总结目前常用的方法:
- 精确求解
- 分支定界法(Branch and bound)
- 分支定界法和切割平面法(Branch and cut)
- 启发式算法
- 节约算法
- 基于图匹配算法
- 2-阶段算法
- 先分组-后构造路线算法
- 先构造路线-后分组算法
- 元启发式算法
- 遗传算法
- 蚁群算法
- 粒子群优化
- 模拟退火
- 禁忌搜索
变种问题
自上世纪VRP提出到现在VRP问题衍生出了很多变种问题,诸如:
- 时窗限制车辆路线问题(vehicle routing problems with time windows,VRPTW)
- 追求最佳服务时间的车辆路线问题(VRPDT)
- 多车种车辆路线问题(fleet size and mix vehicle routing problems,FSVRP)
- 车辆多次使用的车辆路线问题(vehicle routingproblems with multiple use of vehicle,VRPM)
- 考虑收集的车辆路线问题(vehicle routingproblems with backhauls,VRPB)
- 随机需求车辆路线问题(vehicle routing problem with stochastic demand,VRPSD)
- 电动汽车路径规划(electric vehicle routing problem,EVRP)