每天一篇好论文

2020/2/13

Zhenzhen Zhang, Zhixing Luo, Hu Qin, Andrew Lim, (2019) Exact Algorithms for the Vehicle Routing Problem with Time Windows and Combinatorial Auction. Transportation Science

  • https://doi.org/10.1287/trsc.2018.0835
  • 这是从通过秦虎老师看到的TS上的一篇论文,提出来VRPTWCA这个新的VRP的变种问题,考虑了允许将部分需求外包给第三方物流公司3PL的情况。实际的意义在于,例如顺丰是有部分自有车辆的,自有车辆的优点是,方便管理,稳定可靠,但是如果运输任务不足,成本会比较高。而第三方车辆通过平台竞价,获得某班次的运输任务,灵活自由,可以弥补货运任务的波动带来的不确定性。但是第三方车辆通常难以管理约束,经常出现晚到,违约的情况,且车型不一,较难管理。因此最简单的办法就是把货运需求分割:
  • 总货运需求D = 基本稳定货运需求A + 浮动峰值货运需求B ,其中自有车辆负责A,第三方车辆负责B。当然,什么样的比例需要根据实际情况去区分,且自有车辆闲暇时也可接其他货运需求。但是还是一句话,业务货量足够多,就不怕多投资,开源节流,开源最重要。

问题分析

  • 这个问题的场景在于,部分客户点,直接外包给3PL,这样的话,自有车辆的路径规划就是简单的VRP了。但是显而易见,这样就增加了许多决策变量:将哪些客户点外包给3PL。当然,以什么样的价格,外包给哪家3PL,都可以成为决策。而OR问题的基本准则是,找到合适的决策变量,满足约束,实现目标。而将部分决策固定下来,作为parameters输入值,就会将问题简化,便于处理。
  • 可以复盘,哪天领导给了你一个简单的VRPTW求解,共50个点,你觉得太简单了。但是,其实领导已经将其他550个点外包出去了。你想知道他怎么决策的,为啥就把那550个点外包了。因为昨晚他喝得挺爽,就这么决定了,毕竟咱们自己的车队也就能处理50个点左右。这时你主动请缨,为领导分忧解难,说,让我来,我能解决在各公司给的报价下,咱们自个车辆运输哪50个点的问题,这样就不用喝酒了,用数据说话,量化指标。这就是本文的重要价值。拓展了,困难了,但也变强了。

模型分析

  • 文章建立 arc-flow和set-partitioning两个模型,模型倒没啥特别的,主要在于,部分客户点用Yu决策变量执行,u是一个bid,包括a set of customers,和一个price Pu,每个客户点要么被自有车辆访问,要么被外包出去。当然,外包方案中也存在相互冲突,每个客户点只能访问一次。
  • 这个问题挺好,用另一种思考方式就很好理解,如果每个bid只能包含一个客户点,有一个成本,就可以看做,允许部分点我不服务,不服务的点有一个惩罚成本,使得整个的成本最低。与VRP with profit挺像的,都是允许customers的selection。不同之处在于,3PL自己也根据多个点的特征,提出了group报价。这个group报价一般比单个报价要便宜,规模经济呗。挺好的,很有意思。
  • 这个模型与航班恢复里也很像,客户点要么被route执行,要么cancel,但是这里还有个cancel组合的概念,成本不一。
  • 因此很容易想到,上列生成。使用Branch&Price&Cut就更好了,更快更强。

Valid Inequalities 有效不等式

  • 有效不等式用来放入主问题模型,作为cut切割解空间,加速模型求解。这些cut作为约束,通过dual price传递给子问题。
  1. k-path inequalities
    • subset S in N ks = the minimum number of vehicles required to serve all the customers in S
    • 其实就是,一组客户点,至少要几辆车才能服务完。通常由容量决定,时间窗与他们之间的距离也会影响
  2. Capacity Inequalities

算法求解之Branch-Price-Cut

Initial Feasible Solution

  • 好的初始解,可以加快算例求解,在最好的情况下,初始解==最优解,一次直接全垒打。
  • 设计了一个backtracking heuristic算法生产初始解。先将bids按客户数量从高到低排列,贪婪得选择尽可能多的compatible的bids,这样就将客户点规模缩小了很多,剩下的点就按照简单的VRPTW生成路径,使用*Potvin and Rousseau(1993)*的 regret insertion继续求解。

Pricing Problem

  • 求解子问题的第一步是先把 子问题的目标函数写出来,也就是路径成+各个约束的dual value

  • 此处得到的子问题是ESPPRC 不可重复的带资源最短路问题

  • 这里选择的算法还是 Label-Setting Algorithm

  • The label-setting algorithm is a type of dynamic programming algorithm that enumerates all nondominated routes by state propagation.

  • A state is a partial route from node 0 to any node i in V`,represented by a label Li = (Ci *reduced cost) (Ti earliest time) (Di accumulated demand) (Mi,s the numer of nodes in S that have been visited by

  • 下面是一些加速方法

  1. t bounded bidirectional search, which divides the extension of the label-setting algorithm into the forward extension and the backward extension according to a chosen critical resource.双向标号法
  2. ng-route relaxation
  3. q-route relaxation
Tabu Search Column Generator
  • 只要能迅速找到reduced cost为负的route,不论用什么方法都行。因为标号法还是太费时间了。
  • 所以采用heuristic去搜索是可行的,因此文章使用了基于禁忌搜索的column生成模块

In the literature, one common way to speed up the convergence of column generation is to use a heuristic to find columns with negative reduced cost first,and to invoke the label-setting algorithm only after the heuristic fails (Desaulniers, Lessard, and Hadjar 2008;
Archetti, Bouchard, and Desaulniers 2011; Luo, Qin,and Lim 2014).

  • 在feasibility test这块,还是采用了Vidal大神的segment-based 的方法,比较是O(1)的时间

Cutting Separation Algorithms

  • 这部分是Cut里面的核心,如何生成新的cut constraints,通常也是使用启发式算法
发布了11 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sinat_41644416/article/details/104291709