VRP文献赏读07:An Optimization Algorithm for the Vehicle Routing Problem with Time Windows

 

引文格式


Madsen K O B G . An Optimization Algorithm for the Vehicle Routing Problem with Time Windows Based on Lagrangian Relaxation[J]. Operations Research, 1997, 45(3):395-406.


摘要

Our paper presents a new optimization method for the Vehicle Routing Problem with Time Windows (VRPTW). The VRPTW is a generalization of the Vehicle Routing Problem, where the service of a customer must start within a given time interval- so-called a
time window . Our method is based on a Lagrangian relaxation of the constraint set requiring that each customer must be serviced. The master problem consists of finding the optimal Lagrangian multipliers and the subproblem is a Shortest Path Problem with Time Windows and Capacity Constraints. The optimal multipliers are found using a method exploiting the benefits of subgradient methods as well as a bundle method. The method has been implemented and tested on a series of well-known benchmark problems of size up to 100 customers. Our algorithm turns out to be very competitive compared to algorithms considered in the literature, and we have succeeded in solving several previously unsolved problems.

我们提出了一种求解带时间窗车辆路径问题的新优化算法,它是VRP的一个推广问题,要求顾客必须在规定的时间区间,即时间窗内被服务。我们提出放松每个顾客点必须被访问约束的朗格朗日松弛方法,主问题主要负责寻找拉格朗日乘子,子问题则要寻找带时间窗和容量约束的最短路径问题。优化乘子通过次梯度优化和束方法。所提方法通过著名的多大100个客户点的基准算例上进行验证,我们的方法较以往的方法取得了更优的结果,并成功地求解了一些之前未被求解的问题。

引言

路径和调度问题是物流系统的主要要素,为该组合优化问题的最优解决方案已涌现出了大量的研究成果。车辆路径问题的本质在于寻找一组涵盖所有顾客点节点需求的、起始和终止于车场的路径集合。约束为:每一个顾客需求量已知,任意车辆不得超过其容量限制。目标为:得到最小化的路径距离、车辆数目或其他组合优化目标。

我们要讨论的VRPTW是VRP问题的一个拓展,要求任何顾客在其给定的时间窗内服务,也可将其视为一个资源约束路径问题,还包含带时间窗的多旅行商问题、拨号乘车问题和乘务员调度问题,本文研究也适用于这些问题。

求解VRPTW最成功的方法是基于带约束最短路径松弛的求解方案,Desrochers(1992)提出了列生成方法,Halse(1992)提出了拉格朗日分解法,两种方法都能够带时间窗和容量约束的最短路径子问题。即使这个问题是一个NP-Hard,存在伪多项式算法,则大部分的中等规模的算例都是可解的。

我们提出了一种放松每个顾客必须被访问约束的朗格朗日松弛算法,主问题是发现拉格朗日乘子,子问题是为每一车辆找到满足时间和容量约束的最短路径问题。我们创建了比 Dantzig-Wolfe分解更容易、比Variable Splitting更间接的例子,因为拉格朗日乘子的数目更小的。

主问题是发现拉格朗日乘子,常用的次梯度优化算法收敛速度缓慢。因此我们利用不可微优化理论的一些成果探索了一种更为复杂的主迭代方案。一系列的Somolen基准算例在文献中Desrochers(1992)和Halse(1992)中被报道,我们也求解了一些先前未被求解的例子。

接下来的部分为VRPTW的数学模型;现有方法的简要综述;我们的方法,我们主要关注Desrochers(1992)和Halse(1992)的方法,因为他们的方法跟本文的方法具有一定的相似之处;最短子路径问题是被如何求解的,也提供了一些评估特定算例难度的信息;然后是主问题,一个不可微凹最大值问题;接着讲述了分支策略实现的相关描述;报告所提方法求解基准算例的结果,并对研究成果进行了总结。

VRPTW的数学模型

参数 描述
车辆集合

 

顾客集合,

顾客数量为n,标识为1,2,...,n,

车场表示为0和n+1两个节点;

节点间的连接称之为弧段,没有终止于0的弧段,也没有起始于n+1的弧段;所有路径起始于0终止于n+1

,

有向网络中,弧段(i,j)的成本和旅行时间

表示车辆的使用成本

除了0和n+1,我们假设弧段是充分联通的

车辆载重能力
顾客的需求量

顾客的时间窗,等待没有成本,不接受越过时间窗下界的服务

 并不完全满足

取1表示车辆k由节点i前往节点j

表示车辆k开始为顾客点i服务的时间

表示车辆k返回车场的时间

如果i不是k服务的,则该变量不表示任何含义

目标函数为:服务完所有顾客点的总路径成本最小,所有路径必须是满足时间窗和容量约束的可行路径。

VRP文献赏读07:An Optimization Algorithm for the Vehicle Routing Problem with Time Windows_第1张图片

对于约束(8):连续松弛问题总是存在一个整数解,可行解是非凸的,因此它在实际的计算过程中是不需要的。

模型允许固定数目的车辆或车辆数目上限确定的情形,如果上限相当高,就意味着车辆数目是自由的。也可以十分容易的为研究问题添加车辆数目的下界,车辆数目自由时,可以设置;如果车辆数目固定,则可将设置为较大的值,确保弧段在任何情况下都不可用。对于车辆数目自由情况下的建模,可以为每辆车设置成本,如果充分大时,首要目标是降低车辆数目,其次才是最小化旅行成本。

VRPTW也包含许多著名的问题,如带时间窗的多旅行商问题、车辆路径问题和二位背包问题。发现VRPTW最优解的过程是一个NP-hard,甚至是当发现可行解都是一个NP-hard,因为包含了辆车的包装需求问题。

现有方法的回顾

VRPTW是NP-hard,早期的研究聚焦于案例分析和启发式方法,关于VRPTW优化的第一篇文献出现于1987年,虽然求解该问题的启发式算法的研究仍十分活跃,但这些方法在运筹优化领域缺乏通用性。虽然在Desrosiers(1995)回顾了一些启发式方法,但是本文的研究焦点是优化方法。

Kolen(1987)提出了第一个VRPTW优化算法,该方法采用状态空间松弛和动态规划方法计算问题的下界,分支决策用于进行顾客路径的分配。最大算例规模为15个节点。

Fisher(1997)提出了基于K-tree松弛的VRPTW求解算法,载重约束被处理成集合中的顾客点必须被至少个车辆服务。虽然这个约束也是拉格朗日松弛,但是问题的解仍旧是带修正弧段成本的K-tree问题。生成一个要求所有违背时间的弧段不可用的约束,他求解了一个多达100个顾客点的Solomn基准算例。

目前基于最短路径松弛的方法是求解VRPTW的最成功的方法。基本的观察是:对于每辆卡车而言,包含约束(2)~(8)的问题属于一个带时间窗和容量约束的初等最短路径问题(Elementary Shortest Path Problem with Time Windows and Capacity Constraints,ESPPTWCC)问题。但是求解其松弛问题--带时间窗和容量约束的最短路径问题(Shortest Path Problem with Time Windows and Capacity Constraints,SPPTWCC)的高效的动态规划算法,SPPTWCC问题允许一个顾客被多次访问。大部分求解VRPTW的线性规划和整数规划解决方案,都是通过SPPTWCC来探索的得到的。Dantzig-Wolfedecomposition和Variable Splitting这两种分解方法在计算中较为常用。

Desrochers(1992,1995)采用列生成算法求解自由车辆数目下的VRPTW,在其1995年的论文中指出列生成算法实际上是丹尼斯沃夫分解,虽然在1992年的成果中他并没有采用该术语。丹尼斯沃夫分解仅考虑约束(1),算法由路径开始,每条服务一个客户。其主问题为在生成的路径中找到成本最小的路径集合,以确保所有顾客点被访问到。一个路径的时间数不一定是整数,但要求其位于区间[0,1]中。由于生成的路径不是elementary paths,所以同一顾客点在一条路径上可能不止一次被服务,故主问题是一个集分割类型的拉格朗日松弛问题。处于计算方便,1992年的文章,作者采用了集覆盖类型的拉格朗日松弛作为替代。如果时间和成本的三角不等式成立,这并不会改变最终的计算结果。

最优解的单纯形乘子被用来修改SPPTWCC子问题的成本,子问题是完全一样的,因此只解决了一个问题。如果发现一条编辑成本为负的路径,它就包含在主问题的路径集合中。由于可以找到多个边际成本为负(negative marginal cost)的路径,因此每次迭代都会生成许多路径。

当没有负边际成本的路径被生成时,算法终止。此时,主问题最优解中用到的所有路径都将具有0边际成本。如果主问题得到了一个整数解,他就是最优的;否则将会找到VRPTW的下界,并采用分支定界策略寻找最优解。该方法求解Solomn算例库中多达100个节点的问题,也包含了许多其他方法无法求解的问题。

Jiirnsten(1986)提出使用Variable Splitting方法分解VRPTW,在Variable Splitting中一些约束被重新命名,一个新的约束被引入来建立原始变量和新变量的联系,并进行拉格朗日松弛。问题被分解为两个或更多的独立的问题。对于VRPTW,使用二进制变量来替换,约束被引入,并进行拉格朗日松弛。这样的话,问题就被分解成了两个问题:一个是包含变量的问题,另一个是使用变量的问题。Variable Splitting有时也被成为拉格朗日分解,已在文献Jiirnsten et al. (1985) 和Guignard and Kim (1987)中进行了描述。对于VRPTW,有三种分割方式:

分解方式 子问题 约束
Shortest Path Problem with Time Windows (SPPTW)
Generalised Assignment Problem (GAP)
Shortest Path Problem with Time Windows and Capacity Constraints
Semi Assignment Problem (SAP)
SPPTWCC 约束(2)被复制,并应用于两个问题的建模
GAP

Halse (1992)实现了分解,并对Solomn算例库中多达100个节点的算例进行了求解,更进一步,选择了连个105个节点的算例进行了求解。Olsen (1988)实现了分解方法,求解了16个节点的问题。的求解方法并未被实现。

一种基于拉格朗日松弛的新算法

拉格朗日松弛

在这一部分,我们提出一种新的求解VRPTW的拉格朗日松弛方法,虽然问题采用丹尼斯沃夫分解,但是采用对偶变量(拉格朗日乘子)优化的方式是新内容。我们展示了车辆数目的下界,并于采用方式进行丹尼斯沃夫分解得到的下界进行比较,我们采用拉格朗日松弛约束(1),这与Desrochers(1992)和FIalse (1992)采用SPPTWCC子问题的方法是一致的。

使用拉格朗日松弛并不是带时间约束路径问题的新内容,Desrosiers(1988)采用拉格朗日松弛分配约束,来评估带时间窗的多旅行商问题的最小化车队数目,该问题是不带容量约束()的VRPTW。在她们最近的时间约束路径问题综述中,关注的焦点是基于丹尼斯沃夫分解的方法,并认为丹尼斯沃夫分解能够产生优于其他方法的计算结果。这是因为子问题中获得信息在丹尼斯沃夫主问题中得到了很好的利用,因此生成的主问题的所有路径都是可用的。同时,也提到,丹尼斯沃夫分解可以为分支定界方法的设计提供更好的信息。本文将显示这些信息时如何被应用到拉格朗日松弛问题中的。

如果约束(1)被松弛,目标函数将被改写为:

这里的拉格朗日乘子与顾客j必须被服务的约束相关联。定义修正弧段成本,则乘子反映了一个顾客的服务成本,并且是一个正数。由于约束(1)为等式约束,乘子也可能是负值。如果乘子非常大,将十分有希望在子问题中获得服务多个顾客点的长路径。如果乘子非常小(或为负值),子问题将会得到非常短的路径。

对于任意给定的拉格朗日乘子向量模型分解的结果是每辆车对应一个子问题,由于车辆本身是无差别的,因此对应的子问题都是相同的。因此,子问题属于初等最短路径问题,要求车辆从节点0返回到节点n+1,为容量约束,为时间窗约束,为整数约束,也是一个ESPPTWCC。弧段成本通过拉个朗日乘子被修正,因此不再假设他们是非负或者整数。

在实际场景下,ESPPTWCC是不可解的,但是他的松弛问题SPPTWCC确是可以使用动态规划方法求解的。因为SPPTWCC,只要累计时间和容量消耗满足要求,它允许一条路径中的同一顾客点被多次访问。使用SPPTWCC替代求解ESPPTWCC可以削弱问题的下界,但其得到的下界质量是相当优秀的。

与分配约束相关的拉格朗日乘子可被解释为给定约束顾客服务的定价问题,每辆车通过服务顾客的乘子选择属于他自己的成本最小的路径。如果车辆数目是自由的,任何车辆都可以无成本的选择(0)~(n+1)路径;如果车辆数目有下界约束,例如,则对这个约束进行拉格朗日松弛,对应的拉格朗日乘子通过公式修正从0开始的终止于节点的弧段成本,这里的表示与最小化车辆数目约束相关的乘子。

对于任意拉格朗日向量,松弛问题的目标函数的最优解给出了一个VRPTW最优目标函数值的对偶下界(Geoffrion 1974)。我们将SPPTWCC中的路径成本定义为边际成本。若表示最短路径的边际成本,如,则有公式,此时我们定义的最小值。

如果SPPTWCC具有唯一的最优解,所有车辆将选择所有的路径,因为车辆是无差别的。除非问题仅包含一辆卡车,否则无法得到VRPTW的可行解,因为最短路径上的所有顾客点被服务了次,而其他顾客点却未被服务到。然而,在这里我们要说的是当最佳拉格朗日乘子被找到时,SPPTWCC的路径方案通常并不唯一。

 

命题一:假设有上界,如果则对于任意节点,存在一条以最小化边际成本服务节点的路径。

VRP文献赏读07:An Optimization Algorithm for the Vehicle Routing Problem with Time Windows_第2张图片

如果存在一条所有顾客点都可以被精确服务一次的路径,则可行且最优的解就会被找到。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(车辆路径问题)