Bootstrap

车辆路径问题VRP

车辆路径问题

介绍

车辆路径问题(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=0nCost(Ri) , n=v(1)i=0nRi/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问题,其问题的求解难度随问题规模增大呈指数级增长,因此很少有精确算法能够解决此类问题,大部分的算法都是启发式算法和元启发式算法来解决此类问题。以下本文就总结目前常用的方法:

  1. 精确求解
    • 分支定界法(Branch and bound)
    • 分支定界法和切割平面法(Branch and cut)
  2. 启发式算法
    1. 节约算法
    2. 基于图匹配算法
  3. 2-阶段算法
    1. 先分组-后构造路线算法
    2. 先构造路线-后分组算法
  4. 元启发式算法
    • 遗传算法
    • 蚁群算法
    • 粒子群优化
    • 模拟退火
    • 禁忌搜索

变种问题

自上世纪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)

参考网站:

VRP
维基百科
MBA

;