【论文阅读】(2006)An Adaptive Large Neighborhood Search Heuristic for the Pickup and Delivery Problem...

本文提出了一种自适应大邻域搜索启发式算法,用于解决带时间窗口的取送问题(PDPTW)。该算法使用多种删除和插入启发式,通过自适应权重调整和模拟退火接受标准,提高了搜索效率和解决方案的质量。计算实验表明,这种方法在处理大量请求和车辆时能有效找到接近最优的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


论文来源:(2006)An Adaptive Large Neighborhood Search Heuristic for the Pickup and Delivery Problem with Time Windows
作者:Stefan Ropke 等人


摘要

带时间窗的取送问题是使用有限数量的车辆满足大量运输请求的问题。每个请求都涉及将大量货物从提货地点移动到交货地点。我们的任务是构建访问所有位置的路线,以便将相应的取货和送货放在同一路线上,并且在相应的送货之前执行取货。路线还必须满足时间窗口和容量限制。

本文提出了一种基于大邻域搜索启发式问题的启发式算法,该启发式算法以前曾建议用于解决带有时间窗的车辆路径问题。所提出的启发式算法由许多相互竞争的子启发式算法组成,这些子启发式算法的使用频率与其历史表现相对应。这个通用框架被称为自适应大邻域搜索。

该启发式方法已在 350 多个基准实例上进行了测试,最多有 500 个请求。它能够针对超过 50% 的问题改进文献中最著名的解决方案。

计算实验表明,使用几种相互竞争的子启发式方法而不是仅使用一种方法是有利的。我们相信所提出的启发式方法非常稳健,并且能够适应各种实例特征。


介绍

在带时间窗口的取货和送货问题 (PDPTW) 的考虑变体中,我们收到了许多请求和车辆。请求包括在一个地点提货并将这些货物运送到另一地点。每个请求都会分配两个时间窗口:一个取货时间窗口,指定何时可以提货;一个交货时间窗口,指定何时可以卸货。此外,服务时间与每次取货和送货相关。服务时间表示取货或送货需要多长时间。允许车辆在该位置的时间窗口开始之前到达该位置,但是车辆必须等到时间窗口开始才能开始操作。在该位置的时间窗口结束之后,车辆可能永远不会到达该位置。

每个请求都被分配一组可行的车辆。

例如,这可以用于对某些车辆由于车辆尺寸而无法进入特定位置的情况进行建模。

每辆车的容量有限,并且它在称为开始和结束的给定位置开始和结束其任务。

起点和终点不必相同,两辆车可以有不同的起点和终点。此外,每辆车都分配有开始和结束时间。开始时间表示车辆必须离开其起始位置的时间,结束时间表示允许最晚到达其结束位置的时间。请注意,车辆会在指定的开始时间离开车库,尽管这可能会导致在访问的第一个位置需要等待时间。

我们的任务是为车辆构建有效的路线。如果沿路线遵守时间窗口和容量限制,每次取货都在相应的送货之前提供服务,相应的取货和送货在同一路线上提供服务,并且车辆仅服务于允许其服务的请求,则该路线是有效的。路线的构建应使成本函数最小化,如下所述。

由于车辆数量有限,我们可能会遇到某些请求无法分配给车辆的情况。这些请求被放置在虚拟请求库中。在现实情况下,由操作员决定如何处理此类请求。例如,运营商可能决定租用额外的车辆以满足剩余的请求

该问题的目标是最小化由以下三个部分组成的加权和:(1)车辆行驶距离的总和,(2)每辆车花费的时间的总和。

车辆花费的时间被定义为它到达终端的时间减去它的开始时间(这是预先给定的),(3)请求库中的请求数量。这三项分别由系数 k、l 和 m 加权。通常,为 m 分配一个较高的值以服务尽可能多的请求。第 1 节中提出了一个数学模型来精确定义问题。

该问题的灵感来自于现实生活中与丹麦一家主要食品制造商的生产设施之间运输原材料和货物相关的车辆路径问题。出于保密原因,我们无法提供有关激发这项研究的现实问题的任何数据。

该问题是 NP 难问题,因为它包含旅行商问题作为特例。本文的目的是开发一种方法来找到上述问题的良好但不一定是最佳的解决方案。所开发的方法最好应该相当快速、稳健,并且能够处理大问题。因此,转向启发式方法似乎是公平的。


一、数学模型


二、解决方法

局部搜索启发式通常建立在对当前解决方案进行微小更改的邻域移动的基础上。

这些类型的局部搜索启发式方法能够在短时间内探索大量解决方案,但解决方案在每次迭代中仅发生很小的变化。

因此,当面临严格约束的问题时,即使嵌入到元启发法中,这种启发法也可能难以从解决方案空间的一个有希望的领域转移到另一个领域。

解决这个问题的一种方法是通过放宽一些约束来允许搜索访问不可行的解决方案。

我们采用另一种方法,而不是使用小的“移动”,而是使用非常大的移动,这些移动可能可以在单次迭代中重新排列多达 30%–40% 的所有请求。

这样做的代价是,与较小的移动相比,执行和评估移动所需的计算时间变得要长得多。每个时间单位所提出的启发式评估的解决方案的数量只是标准启发式可以评估的解决方案的一小部分。尽管如此,在计算测试中观察到非常好的性能,如第 4 节所示。

所提出的启发式方法基于 Shaw (1997) 引入的大型邻域搜索 HLNSB。 LNS 启发式方法已应用于 VRPTW,并取得了良好的效果(Shaw 1997、1998;Bent 和 Van Hentenryck 2004)。最近,启发式方法也被应用于 PDPTW(Bent 和 Van Hentenryck 2003a)。

LNS 启发式本身类似于 Schrimpf 等人 (2000) 提出的破坏和重建启发式。

最小化 LNS 启发式的伪代码如算法 1 所示。该伪代码假设通过简单的构造启发法已经找到了初始解决方案。第二个参数 q q q 决定搜索的范围。

在这里插入图片描述
算法中的第 5 行和第 6 行是启发式算法中有趣的部分。在第 5 行中,从当前解决方案 s∫ 中删除了许多请求,并在第 6 行中将请求再次重新插入到当前解决方案中。整体启发式的性能和稳健性很大程度上取决于删除和插入过程的选择。在先前提出的 VRPTW 或 PDPTW 的 LNS 启发法中(Shaw 1997;Bent 和 Van Hentenryck 2003a),使用近乎最优的方法进行重新插入操作。这是使用截断的分支定界搜索来实现的。

在本文中,我们采用不同的方法,使用简单的插入启发式方法来执行插入。尽管插入启发式本身通常提供质量较差的解决方案,但 LNS 启发式的质量非常好,因为插入启发式生成的不良移动会导致搜索过程的富有成效的多样化。

其余代码更新(迄今为止)最佳解决方案,并确定是否应接受新解决方案。一个简单的接受标准是接受所有改进的解决方案。这样的标准已在早期的 LNS 实现中使用(Shaw 1997)。

在本文中,我们使用模拟退火接受标准。

在第 11 行中,我们检查是否满足停止标准。在我们的实现中,当执行了一定次数的迭代时,我们就会停止。

参数 q ∈ { 0 , 1 , . . . , n } q ∈ \{0,1,...,n\} q{0,1,...,n} 决定邻域的大小。如果 q q q 等于 0 0 0,则根本不会进行任何搜索,因为没有请求被删除。

另一方面,如果 q q q 等于 n n n,则问题在每次迭代中从头开始解决。一般来说,可以说 q q q 越大,在解空间中移动就越容易,但是当 q q q 变大时,插入过程的每次应用都会变慢。此外,如果使用启发式方法插入请求,那么选择太大的 q q q 可能会产生不好的结果。

LNS 局部搜索可以被视为 Ahuja 等人 (2002) 提出的超大规模邻域搜索的示例。

与其将 LNS 进程视为一系列删除-插入操作,还可以将其视为一系列修复-优化操作。在修复操作中,当前解中的许多元素被修复。例如,如果解决方案表示为变量向量,则修复操作可以将许多这些变量修复为其当前值。然后,优化操作会重新优化解决方案,同时尊重先前修复操作中执行的固定。这种查看启发式的方式可能有助于我们将启发式应用于删除-插入操作看起来不直观的问题。

在第 3 节中,我们引入术语自适应大邻域搜索 (ALNS) 来描述以自适应方式使用多个大邻域的算法。 ALNS 框架的更一般性介绍可以在后续论文中找到(Pisinger 和 Ropke 2005)。


三、LNS应用于PDPTW

本节介绍如何将 LNS 启发式应用到 PDPTW。与 Shaw (1997, 1998) 以及 Bent 和 Van Hentenryck (2003a, 2004) 为 VRPTW 和 PDPTW 开发的 LNS 启发式相比,本文中的启发式在几个方面有所不同:

  • 我们在同一搜索期间使用多种删除和插入启发式方法,而早期的 LNS 启发式方法仅使用一种删除方法和一种插入方法。删除启发式在第 3.1 节中描述,插入启发式在第 3.2 节中描述。选择使用哪种子启发式方法的方法在第 3.3 节中描述。选择机制以搜索期间收集的统计数据为指导,如第 3.4 节所述。我们将使用术语“自适应大邻域搜索ALNS启发式”来表示 LNS 启发式,该启发式使用多种竞争性删除和插入启发式,并在搜索过程中收集的统计数据之间进行选择。
  • 与 Shaw (1997, 1998) 以及 Bent 和 Van Hentenryck (2003a, 2004) 提出的更复杂的分支定界方法不同,简单而快速的启发式方法用于插入请求。
  • 该搜索嵌入在模拟退火元启发式中,其中早期的 LNS 启发式使用简单的下降方法。这在第 3.5 节中进行了描述。

本节还描述了如何在一个简单的算法中使用 LNS 启发式算法,该算法旨在最大限度地减少用于服务所有请求的车辆数量。车辆最小化算法仅适用于同类车队,没有可用车辆数量的上限。

3.1 请求删除

本节介绍三种删除启发式方法。所有三种启发式方法均采用解和整数 q q q 作为输入。启发式的输出是 q q q 个请求已被删除的解决方案。此外,启发式 S h a w   r e m o v a l Shaw\ removal Shaw removal W o r s t   r e m o v a l Worst\ removal Worst removal 具有参数 p p p,其确定启发式中的随机化程度。

3.1.1 Shaw Removal

这种删除启发式是由 Shaw (1997, 1998) 提出的。

总体思路是删除有些相似的请求,因为我们希望能够相当容易地调整类似的请求,从而创建新的、也许更好的解决方案。

我们使用相关性度量 R ( i , j ) R(i,j) R(i,j) 定义两个请求 i i i j j j 的相似性。 R ( i , j ) R(i,j) R(i,j) 越低,两个请求越相关。

本文使用的相关性度量由四个术语组成:距离术语、时间术语、容量术语以及考虑可用于服务这两个请求的车辆的术语。这些项分别使用四个权重系数进行加权。相关性度量由下式给出:

在这里插入图片描述
在这里插入图片描述
相关性用于以与 Shaw (1997) 所描述的相同的方式删除请求。删除请求的过程如算法 2 中的伪代码所示。该过程最初选择一个随机请求进行删除,在随后的迭代过程中,它会选择与已删除的请求类似的请求。确定性参数 p ≥ 1 p ≥ 1 p1 在请求的选择中引入了一些随机性( p p p 值较低对应于较大的随机性)。

在这里插入图片描述
请注意,在算法的实际实现中可以避免第 7 行中的排序,因为在第 9 行中使用线性时间选择算法(Cormen et al 2001)就足够了。

3.1.2 Random Removal

随机删除算法只是随机选择 q q q 个请求并将它们从解决方案中删除。随机删除启发式可以看作是 p = 1 p = 1 p=1 时 Shaw Removal 启发式的特例。然而,我们已经实现了单独的随机删除启发式,因为它显然可以实现比 Shaw Removal 启发式运行得更快。

3.1.3 Worst Removal

给定解决方案 s s s 中某个车辆提供的请求 i i i,我们将请求的成本定义为 c o s t ( i , s ) = f ( s ) − f − i ( s ) cost(i,s)=f(s)-f_{-i}(s) cost(i,s)=f(s)fi(s),其中 f − i ( s ) f_{-i}(s) fi(s) 是没有请求 i i i 的解决方案的成本(请求不会移动到请求银行,但完全删除)。

尝试删除成本较高的请求并将其插入到解决方案中的其他位置以获得更好的解决方案价值似乎是合理的;因此,我们提出了一种 Worst Removal 启发式方法,用于删除具有高 c o s t ( i , s ) cost(i,s) cost(i,s) 的请求。

Worst Removal 启发式如算法 3 中的伪代码所示。它重用了第 3.1.1 节中的一些想法。

请注意,删除是随机的,随机化程度由参数 p p p 控制,如第 3.1.1 节中所示。这样做是为了避免相同的请求被一遍又一遍地删除的情况。

在这里插入图片描述
可以说,Shaw Removal 启发式和 Worst Removal 启发式属于两类不同的移除启发式。 Shaw Removal 启发式偏向于选择可以“轻松”交换的请求,而 Worst Removal 则选择似乎被放置在解决方案中错误位置的请求。

3.2 插入请求

车辆路径问题的插入启发式通常分为两类:顺序插入启发式和并行插入启发式。这两类之间的区别在于,顺序启发式一次构建一条路线,而并行启发式同时构建多条路线。

Potvin 和 Rousseau (1993) 更详细地讨论了并行和顺序插入启发法。本文中提出的启发式都是并行的。读者应该观察到,这里提出的插入启发式将在给定许多部分路由和许多插入请求的情况下使用——他们很少从头开始构建解决方案。

3.2.1 Basic Greedy Heuristic

基本的贪婪启发式是一种简单的构造启发式。
在这里插入图片描述

观察到,在每次迭代中,我们只更改一条路由(我们插入的路由),并且我们不必重新计算所有其他路由中的插入成本。

该属性在具体实现中用于加速插入启发式。

这种启发式的一个明显问题是,它经常将“硬”请求(插入成本昂贵的请求,即具有大 c i c_i ci 的请求)的放置推迟到最后一次迭代,在最后一次迭代中我们没有太多机会插入请求,因为许多路线都已“满员”。下一节中提出的启发式方法试图规避这个问题。

3.2.2 Regret Heuristics

Regret Heuristics 尝试通过在选择要插入的请求时合并一种前瞻信息来改进基本的贪婪启发式。

在这里插入图片描述
该请求被插入到其最低成本位置。

通过选择成本最低的插入来打破平局。非正式地说,我们选择如果现在不做的话我们会最后悔的插入。

该启发式可以以自然的方式扩展来定义一类后悔启发式:regret-k 启发式是在每个构造步骤中选择插入最大化的请求 i i i 的构造启发式:

在这里插入图片描述
如果某些请求至少不能插入到 m − k + 1 m − k + 1 mk+1 个路由中,则插入可以插入到最少个路由中(但仍然可以插入到至少一个路由中)的请求。通过选择具有最佳插入成本的请求来打破平局。该请求被插入到其最低成本位置。本节开头提出的遗憾启发式是 regret-2 启发式,而第 3.2.1 节中的基本插入启发式是 regret-1 启发式,因为打破平局规则。通俗地说, k > 2 k > 2 k>2 的启发法研究在 k k k 个最佳路由上插入请求的成本,并插入插入最佳路由与 k − 1 k-1 k1 个最佳路由之间的成本差异最大的请求。与 regret-2 启发式相比,具有大 k k k 值的 regret 启发式较早发现插入请求的可能性变得有限。

Potvin 和 Rousseau (1993) 在 VRPTW 中使用了 regret 启发法。他们论文中的启发式可以归类为 k = m k = m k=m 的 regret-k 启发式,因为所有路径都在类似于 (19) 的表达式中考虑。

作者没有使用目标值的变化来评估插入的成本,而是使用特殊的成本函数。遗憾启发法还可以用于车辆路径域之外的组合优化问题,这是 Martello 和 Toth (1981) 描述的广义分配问题的应用示例。与上一节一样,我们利用每次迭代中仅更改一条路线的事实来加速遗憾启发式。

3.3 Choosing a Removal and an Insertion Heuristic

在§3.1中,我们定义了三种删除启发式(Shaw、随机和最差删除),在§3.2中,我们定义了一类插入启发式(基本插入、regret-2、regret-3等)。人们可以选择一种删除和一种插入启发式方法,并在整个搜索过程中使用这些启发式方法,但在本文中,我们建议使用所有启发式方法。这样做的原因是,例如,regret-2 启发式可能非常适合一种类型的实例,而 regret-4 启发式可能是最适合另一种类型实例的启发式。我们相信,不同的删除和插入启发式之间的交替为我们提供了整体上更稳健的启发式。

为了选择要使用的启发式方法,我们为不同的启发式方法分配权重并使用轮盘赌选择原则。如果我们有 k k k 个权重为 w i w_i wi 的启发式, i ∈ { 1 , 2 , . . . , k } i \in \{1,2,...,k\} i{1,2,...,k},我们以概率选择启发式 j j j

在这里插入图片描述
请注意,插入启发式的选择与删除启发式无关(反之亦然)。可以手动设置这些权重,但如果使用许多删除和插入启发式方法,这可能是一个非常复杂的过程。相反,第 3.4 节中提出了一种自适应权重调整算法。

3.4 自适应权重调整

本节描述如何使用早期迭代的统计数据自动调整第 3.3 节中引入的权重 w j w_j wj 。基本思想是跟踪每个启发式的分数,该分数衡量启发式最近的表现。高分对应于成功的启发式。整个搜索被分为多个部分。一个段是 ALNS 启发式的多次迭代;这里我们将一个段定义为 100 次迭代。

启发式在每个段的开始处全部分数设置为零。

在表 1 所示的情况下,启发式得分会增加 σ 1 \sigma_1 σ1 σ 2 \sigma_2 σ2 σ 3 \sigma_3 σ3

在这里插入图片描述

在每次迭代中,我们应用两种启发式:删除启发式和插入启发式。两种启发式的分数都会更新相同的量,因为我们无法判断是删除还是插入才是“成功”的原因。

在每个片段结束时,我们使用记录的分数计算新的权重。令 w i j w_{ij} wij 为段j中使用的启发式i的权重,作为公式(20)中使用的权重。在第一部分中,我们对所有启发式给予同等的权重。完成第 j j j 段后,我们计算要在第 j + 1 j + 1 j+1 段中使用的所有启发式 i i i 的权重,如下所示:

在这里插入图片描述
在这里插入图片描述

图 1 显示了针对特定问题实例,三种删除启发式的权重如何随时间变化的示例。由于下一节将描述模拟退火验收标准,绘图正在减少。在搜索结束时,我们只接受好的动作,因此启发式很难获得高分。

在这里插入图片描述

3.5 接受和停止标准

如第 2 节中所述,简单的接受标准是仅接受比当前解决方案更好的解决方案。这将为我们提供一种类似于 Shaw (1997) 提出的下降启发法。然而,这种启发式方法有陷入局部最小值的倾向,因此有时接受比当前解决方案更糟糕的解决方案似乎是明智的。为此,我们使用模拟退火的验收标准。

3.6 将噪声应用于目标函数

由于所提出的插入启发法相当短视,我们认为值得对插入启发法进行随机化,这样它们并不总是做出本地看起来最好的移动。这是通过向目标函数添加噪声项来实现的。

在插入启发式中添加噪声似乎是多余的,因为启发式用于已经包含随机化的模拟退火框架中;然而,我们认为噪声应用很重要,因为我们的邻域是通过插入启发式搜索的,而不是随机采样的。如果没有噪声应用,我们就无法充分利用模拟退火元启发法。表 4 中报告的计算实验支持了这一猜想。

3.7 尽量减少使用车辆的数量

在车辆路由文献中,用于服务所有请求的车辆数量的最小化通常被认为是首要任务。迄今为止提出的启发式方法无法应对这样的目标,但通过使用简单的两阶段算法,最小化第一阶段的车辆数量,然后最小化第二阶段的次要目标(通常是行驶距离),我们可以处理此类问题。

车辆最小化算法仅适用于同质车队的问题。我们还假设可用车辆的数量是无限的,因此始终可以构建初始可行的解决方案。 Bent 和 Van Hentenryck (2003a, 2004) 也使用了两阶段方法,但是,虽然他们在两个阶段使用了两个不同的邻域和元启发式算法,但我们在两个阶段都使用了相同的启发式算法。

车辆最小化阶段的工作原理如下:首先,使用顺序插入方法创建初始可行解决方案,该方法一次构建一条路线,直到规划完所有请求。此解决方案中使用的车辆数量是对所需车辆数量的初步估计。

下一步是从我们的可行解决方案中删除一条路线。已删除路由上的请求将放置在请求库中。由此产生的问题通过我们的 LNS 启发式解决。当启发式运行时,会为 γ \gamma γ 分配一个较高的值,以便在可能的情况下将请求移出请求库。

如果启发式能够找到满足所有请求的解决方案,则已找到最小车辆数量的新候选方案。当找到这样的解决方案时,LNS启发式立即停止,从解决方案中再删除一条路由,并重复该过程。如果 LNS 启发法在没有找到满足所有请求的解决方案的情况下终止,则算法将返回到遇到的最后一个满足所有请求的解决方案。该解决方案用作算法第二阶段的起始解决方案,该阶段仅包括应用正常的 LNS 启发式算法。

为了降低车辆最小化阶段的运行时间,该阶段只允许总共花费 Φ \Phi Φ 次 LNS 迭代,例如,如果 LNS 启发式的第一次应用花费一次迭代来找到所有请求都满足的解决方案计划,那么车辆最小化阶段只允许执行 Φ − a \Phi − a Φa LNS 迭代,以进一步最小化车辆数量

限制运行时间的另一种方法是,当似乎不太可能存在计划所有请求的解决方案时,停止 LNS 启发式。实际上,如果有五个或更多请求是计划外的,并且在最后 τ \tau τ LNS 迭代中未发现计划外请求的数量没有改善,则通过停止 LNS 启发式来实现这一点。在计算实验中, Φ \Phi Φ 设置为 25,000, τ \tau τ 设置为 2,000。

3.8 讨论

在搜索过程中使用多个删除和插入启发法可以被视为使用多个邻域的本地搜索。据我们所知,这个想法以前没有在 LNS 文献中使用过。相关的变量邻域搜索 (VNS) 由 Mladenov´c 和 Hansen (1997) 提出。

VNS 是一个使用参数化邻域族的元启发式框架。近年来,元启发法受到了相当多的关注,并为许多问题提供了令人印象深刻的结果。 ALNS 使用多种方法对于不相关的邻域,VNS 通常基于以可变深度搜索的单个邻域。

可以在 ALNS 的顶层使用几种元启发式方法来帮助启发式逃避局部最小值。我们选择使用模拟退火,因为 ALNS 启发式已经包含随机采样元素。有关与 ALNS 结合使用的元启发式框架的进一步讨论,请参阅后续论文(Pisinger 和 Ropke 2005)。

请求库是一个对许多现实应用程序有意义的实体。在§4中考虑的问题中,我们不接受具有计划外请求的解决方案,但请求库允许我们在过渡阶段访问不可行的解决方案,从而改善整体搜索。在最小化车辆数量时,请求库尤其重要。


四、计算实验

在本节中,我们描述我们的计算实验。我们首先在第 4.1 节中介绍一组调整实例。在第 4.2 节中,我们评估了所提出的构造启发式方法在调整实例上的性能。在第 4.3 节中,我们描述了如何调整 ALNS 启发式的参数,在第 4.4 节中,我们介绍了 ALNS 启发式和更简单的 LNS 启发式所获得的结果。

4.1 调优实例

首先,确定一组代表性的调整实例。调整实例的大小必须相当有限,因为我们想要对调整问题进行大量实验,并且它们应该以某种方式与我们的启发式目标问题相关。在当前的情况下,我们想要解决一些标准基准实例和一组新的随机生成的实例。

4.2 构造启发法的评估

首先,我们检查 §3.2 中的简单构造启发式如何在调整问题上执行,看看它们在没有 LNS 框架的情况下工作得如何。构造启发式regret-1、regret-2、regret-3、regret-4和regret-m已经实现。表2显示了测试结果。由于构造启发法是确定性的,因此通过将启发法应用于 16 个测试问题中的每一个测试问题一次来产生结果。

结果表明,所提出的构建启发式方法非常快,但也非常不精确。基本贪婪是最差的启发式,而所有后悔启发式在解决方案质量方面都是可比的。然而,Regret-m 脱颖而出,因为它能够满足所有问题中的所有请求。通过引入 Solomon (1987) 提出的种子请求,可能可以改善表 2 中所示的结果。然而,我们不会在本文中报告此类实验。令人惊讶的是,这些非常不精确的启发式方法可以用作更精确的本地搜索启发式方法的基础,但正如我们将在以下部分中看到的,这确实是可能的。

在这里插入图片描述

4.3 参数调整

4.4 结果

本节提供了用于测试启发式性能的计算实验。本节有三个主要目标:

  1. 将 ALNS 启发式与仅包含一个删除和一个插入启发式的简单 LNS 启发式进行比较。

  2. 确定某些问题属性是否影响 (A)LNS 启发式寻找良好解决方案的能力。

  3. 将 ALNS 启发式与文献中最先进的 PDPTW 启发式进行比较。

为了澄清 ALNS 启发式与更简单的 LNS 启发式相比是否值得,我们将显示表 4 中 ALNS 启发式和最佳简单 LNS 启发式的结果。配置 12 被选择作为简单 LNS 启发式的代表,因为它执行比配置 10 稍好。在以下部分中,我们将完整和简单的 LNS 启发式分别称为 ALNS 和 LNS。

所有实验均在具有 256 MB 内存、运行 Linux 的 1.5 GHz Pentium IV PC 上进行。所实现的算法使用双精度浮点数来测量行程时间和距离。除非另有说明,所有实验均使用第 4.3.2 节中的参数设置。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、结论

  • 本文提出了大邻域搜索和称为自适应 LNS 的破坏和重建启发式的扩展。该启发式方法在时间窗口的取货和送货问题上进行了测试,在合理的时间内取得了良好的结果。在同一搜索中结合多种子启发式方法的想法被证明是成功的。

  • 由于所提出的模型非常通用,因此研究该模型和启发式是否可用于解决其他车辆路径问题将会很有趣。我们目前正在研究这个主题,结果非常有希望,因为启发式方法已经能够为具有时间窗的车辆路径问题、多站点车辆路径问题和其他车辆路径问题的标准基准发现新的最佳解决方案(Pisinger 和 Ropke) 2005 年;Ropke 和 Pisinger 2006 年)。

  • 将本文提出的想法应用于其他组合优化问题也会很有趣。自适应 LNS 框架可以轻松适用于大多数问题,利用过去几十年中针对各种优化问题设计的众多稳健且快速的构造启发式方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WSKH0929

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值