[论] A hybrid large neighborhood search for the static multi-vehicle bike-repositioning problem

A hybrid large neighborhood search for the static multi-vehicle bike-repositioning problem
在这里插入图片描述

@article{2017LNSmutilvehicleBRP,
title = {A hybrid large neighborhood search for the static multi-vehicle bike-repositioning problem},
journal = {Transportation Research Part B: Methodological},
volume = {95},
pages = {340-363},
year = {2017},
issn = {0191-2615},
doi = {https://doi.org/10.1016/j.trb.2016.11.003},
url = {https://www.sciencedirect.com/science/article/pii/S0191261516302065},
author = {Sin C. Ho and W.Y. Szeto},
}

集锦

  • 本文提出了一种混合大邻域搜索来解决多车辆静态重定位问题。
  • 提出了几个删除和插入操作符来多样化和加强搜索。
  • 一个简单的禁忌搜索被进一步应用于最有希望的解决方案。
  • 结果表明启发式优于 CPLEX 和 Forma 等人的数学启发式。(2015) [交通研究 B 部分 71:230–247]。
  • 仅使用一小部分计算时间,数学启发式的平均改进为 1.06%。

摘要

本文解决了多车自行车重新定位问题 multi-vehicle bike-repositioning problem,一个接送车辆路径问题 pick-up and delivery vehicle routing problem这与自行车共享系统有关。共享单车是一种绿色交通方式,让人们可以使用共享单车出行。自行车可以在自行车共享网络内的任何一个站点取回和停放。一项主要挑战是自行车的供需并不总是匹配。因此,车辆被用来从过剩的站点取走自行车并将它们运送到不足的站点以满足特定的服务水平。此操作称为自行车重新定位问题。在本文中,我们提出了一种混合大邻域搜索hybrid large neighborhood search来解决该问题。提出了几个删除和插入操作符来多样化和加强搜索。一个简单的禁忌搜索Tabu search被进一步应用于最有希望的解决方案。启发式在三组实例上进行评估,最多 518 个站点和五辆车。计算实验的结果表明启发式优于 CPLEX 和 Forma 等人提出的数学启发式。(2015) [交通研究 B 部分 71:230–247]。我们的启发式算法相对于数学启发式算法的平均改进为 1.06%,并且只需要一小部分计算时间。

关键词:共享单车自行车;重新定位;取件和送货路线; 大邻域搜索;禁忌搜索

小结


本文重点学习:移除算子和插入算子的各种形式。
学习多辆车之间的插入与单车插入的相似和区别。


1 . 介绍

自行车作为一种绿色健康的交通方式,近年来受到越来越多的关注。研究课题包括自行车行程估计(de Chardon 和 Caruso,2015 年)、自行车网络设计(Chow、Sayarshad、2014 年、Lin、Yang、2011 年、Lin、Yang、Chang,2013 年)、自行车网络流量分析(Kitthamkesorn 等人, 2016 年)、自行车服务水平分析(Raviv 和 Kolka,2013 年)、自行车安全(Lawson 等人,2013 年)、自行车再分配策略(Nair 和 Miller-Hooks,2011 年)), 和自行车重新定位。在自行车重新定位中,部署车辆将自行车从自行车过多的站点运送到自行车数量不足的站点。表 1根据操作类型、使用的重新定位车辆数量和问题目标总结了关于自行车重新定位问题的文献。

表1

在这里插入图片描述
就操作类型而言,文献大致可分为静态和动态两大类。静态重新定位问题考虑夜间操作和需求低或系统关闭的场景,这意味着需求的变化可以忽略不计。动态重新定位问题主要考虑白天操作和考虑实时系统使用情况的场景。如表 1所示,大多数研究都集中在静态重新定位问题上,因为如果不引入进一步的复杂性,此类问题已经很难分析和解决。Ho 和 Szeto (2014)指出静态重新定位问题是 NP-hard 问题,比经典路由问题 routing problems 更难解决因为存在上车和下车数量作为决策变量。了解静态重新定位问题和为它们开发的算法有助于解决更困难的动态重新定位问题。

文献中考虑的目标各不相同。如表1所示,同时考虑了单一和加权总和目标。目标由单一有效性衡量指标(例如,总未满足需求)或有效性衡量指标的加权组合(例如,未满足需求的加权总和、与目标填充水平的绝对偏差、装载总数说明和总行驶时间)。此外,旅行时间或距离、用户不满和惩罚成本通常用作目标函数中的唯一或部分组成部分。目标的选择应根据共享单车运营的应用情况来确定。操作员的关注点通常决定了物镜的选择。同时,一些目标比其他目标更笼统。例如,最小化总惩罚成本比最小化总用户不满意或每个站点自行车目标数量的偏差总和更普遍,因为我们可以选择一个惩罚函数,将零值分配给等于或大于需求的水平级别和非常大的数字到其他级别,以复制最小化用户总不满的效果。类似地,我们可以选择一个惩罚函数,将一个值分配给一个水平,该水平等于该水平与目标水平之间的绝对差值,以复制最小化偏差总和的效果。

文献也可以根据使用的车辆数量进行分类。就公式而言,多车重新定位问题是单车问题的直接扩展。然而,考虑多车辆重新定位问题更为现实。一些考虑多辆车的研究 ( Alvarez-Valdes et al., 2016[Optimizing the level of service quality of a bike-sharing system] ) 允许多辆车多次访问每个站点,而其他研究 ( Dell’Amico et al., 2014【The bike sharing rebalancing problem: Mathematical formulations and benchmark instances】) 允许每个站点只能由一辆车访问。与单车重新定位问题相比,解决多车重新定位问题的主要挑战是开发有效的解决方案方法来处理由于存在更多车辆和多次访问车站的可能性而产生的更大的解决方案空间。单车案例的解决方案技术的直接应用不能有效地搜索解决方案空间。

精确方法,如分支切割算法(参见Dell’Amico、Hadjicostantinou、Iori、Novellani,2014 年,Erdoğan、Battarra、Calvo,2015 年,Erdoğan、Laporte、Calvo,2014 年)已被用于解决重新定位问题。然而,这种方法对于大型的、现实的重新定位问题是难以处理的。文献(例如,Ho, Szeto, 2014,Raviv, Tzur, Forma, 2013)也通过数值实验说明了这一点。因此,迄今为止的大多数研究都集中于开发不精确的方法,以使用较少的计算时间获得良好的解决方案。不精确求解方法的简要总结如下(见表2)。

表2

在这里插入图片描述
从前面的总结中可以看出,很少有混合方法被开发出来,而且最近的启发式方法,如大邻域搜索 (LNS) 还没有应用于自行车重新定位问题LNS 是一种元启发式算法,在每次迭代中,部分解被移除算子破坏,而解被插入算子修复。LNS 不同于可变邻域搜索 (VNS)。根据Mladenović 和 Hansen (1997) 的说法,VNS 是一种元启发式算法,它系统地执行邻域变化过程,包括下降到局部最小值和逃离包含它们的山谷。

上述非精确方法大多没有考虑问题性质和站点特征。例如,实际上,出于多种原因,并非所有站点都需要通过重新定位车辆访问。
首先,当目标是最大限度地减少未满足的需求时,自行车需求等于供应的站点不需要提供额外的自行车。这些站点的自行车也不应该被带走。因此,没有必要访问这些“平衡”站
第二,由于运营时间短,一些站点可能无法到达
第三,由于重新定位资源(例如,有限的重新定位时间)和成本(例如,不值得让车辆进行很长的行程以节省成本),因此没有必要以最佳解决方案访问所有站点微小的惩罚成本)
最后,drop-off站的来自pick-ip站的总供应量可能不足。在这种情况下,即使卡车走遍了所有下客站,也无法满足这些站点的总需求。因此,访问所有drop-off站是不明智的。

据我们所知,只有Ho, Szeto, 2014[Solving a static repositioning problem in bike-sharing systems using iterated tabu search, csdn解读]Ho, Szeto, 2016【GRASP with path relinking for the selective pickup and delivery problem】、Ting 和 Liao (2013)【The selective pickup and delivery problem: formulation and a memetic algorithm】以及Szeto 等人(2016)【Chemical reaction optimization for solving a static bike repositioning problem】考虑了站点特征来缩小解决方案搜索空间并开发有效的启发式方法来解决他们的问题。这些研究将车站分为接送pick-up站和下车drop-of站,并利用车站特性解决问题。
Ting 和 Liao (2013)以及Ho 和 Szeto (2016)在目标函数中<考虑了车辆的总行程时间,并明确给出了每个下客站所需的自行车数量
何与司徒 (2016)开发了一种具有路径重新链接的 GRASP 来解决Ting 和 Liao (2013)研究的问题,并表明它可以在更短的计算时间内产生比Ting 和 Liao (2013)使用的模因算法更好的平均结果。但是,他们没有考虑罚款成本或装卸数量。不满足一个单位需求的惩罚成本可能因站点而异。在自行车站密度高(低)或交通选择多(少)的地区,惩罚成本可能低(高),因为用户可以(不能)轻松步行到附近的自行车站或乘坐其他交通工具。考虑这样的惩罚成本,比单单考虑用户对政府提供的自行车服务的需求更为合理
何与司徒 (2014)改进了Raviv 等人(2013)中静态重新定位问题的基于弧的公式最小化总罚款成本。他们还为大型重新定位网络应用程序开发了一种高效的迭代禁忌搜索。然而,他们只考虑单车情况,并没有将总行程时间视为次要目标
司徒等人(2016)也研究了单车静态自行车重新定位问题,但没有考虑目标函数中的惩罚成本。重新定位的目标是最小化车辆路线上未满足的客户需求和运营时间的加权和。通过化学反应优化解决了该问题。

本文开发了一种混合大邻域搜索hybrid large neighborhood search (H-LNS) 来解决类似于Raviv 等人(2013)和Forma 等人(2015)中的多车辆静态重新定位问题的问题。 这个问题是夜间运营问题,使用多辆车从多车的地方取车,运到单车不足的站点,解决单车失衡的问题。它确定了每个重新定位车辆访问的站点顺序,每辆车从每个站点接收多余自行车的数量,以及从每个车辆到每个站点的自行车数量不足的下车数量站点特征Station characteristics被纳入公式并用于设计算法。混合算法结合禁忌搜索提高了LNS的局部搜索能力。为了证明我们方法的效率和准确性,我们设置了各种测试场景,并将结果与​​从 IBM ILOG CPLEX 获得的结果以及由福尔马等(2015)。结果表明,我们的算法可以在更少的计算时间内获得比 3 步数学启发式算法更好的解决方案。还进行了计算测试以确认 H-LNS 优于 LNS(不包含禁忌搜索)。此处给出的结果是为了说明每个移除和插入算子对解决方案准确性的贡献。

本文在三个主要方面不同于Ho 和 Szeto(2014 年):
1)它研究了多辆车而不是单车重新定位问题,
2)它在目标函数中考虑了旅行时间,以及
3)它开发了一种基于在不同的解决方法上作为主干算法和更多的插入和删除操作符。
与Ho 和 Szeto (2016)相比,本文还考虑了一个更复杂的路径问题,以接送数量为决策变量,多辆车分开接送。本文也不同于Szeto 等人(2016)在三个方面:
1)它研究了一个多车自行车重新定位问题,
2)它在目标函数中考虑了惩罚成本,
以及 3)它开发了一种不同的解决方法。

该论文的贡献包括以下内容。

  1. 本文开发了一种高效且有效的混合启发式算法来解决多辆自行车重新定位问题的大型现实实例。
  2. 据我们所知,这是首次应用大型邻域搜索来解决多辆自行车重新定位问题,并取得了巨大成功。

本文的其余部分安排如下。第 2 节介绍了数学公式。第 3 节描述了混合启发式。第 4 节介绍了测试用例并讨论了结果。第 5 节总结了本文。

2. Mathematical formulation 数学公式

本节介绍Raviv 等人(2013)的弧索引公式 arc-indexed formulation。为了完整起见,修改后的模型带有额外的约束,以明确考虑characteristics of the pick-up and drop-off stations。pick-up站是初始自行车数量大于最优数量(即该站惩罚函数达到最小值的水平)的车站,而drop-off站是初始自行车数量大于最佳自行车数量的车站。自行车数量小于最佳数量。

重新定位问题考虑了一组车站和一个车站。每个站点的特点是其容量、初始自行车库存和惩罚函数。惩罚函数表示站点用户在第二天发生的自行车和储物柜的预期短缺,作为执行重新定位后站点库存的函数(Forma 等人,2015 年【A 3-step math heuristic for the static repositioning problem in bike-sharing systems】)。假定该仓库depot具有非常大的容量并且没有需求。

多辆容量有限的重新定位车辆从接送站收集自行车,并将它们运送到下车站并在下车站卸载。这些车辆从站点出发并在站点结束,并在给定的时间限制内运行。他们被允许在操作过程中返回仓库装卸自行车。目标是确定每辆车的路线以及在访问的每个站点装载和卸载的自行车数量,以最小化每个站点的惩罚成本和总行程时间的加权和。

2.1. Notations

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

2.2. Arc-indexed formulation 弧指数公式

Raviv 等人(2013)的基本弧索引公式。由
在这里插入图片描述
在这里插入图片描述
目标函数(1)定义为每个站点产生的惩罚成本与加权总行程时间之和。当量。(2)将每个节点的最终自行车数量定义为该节点的初始自行车数量加上每辆车装载和卸载的自行车总数。当量。(3)要求在给定节点处装载到车辆上或从车辆上卸载的自行车数量等于访问节点之前和之后的车辆负载之差。约束(4)确保每辆车上的负载不能大于车辆容量。当量。(5)确保如果车辆访问一个车站,它必须离开那个车站。约束(6)确保每辆车最多只能访问一个站点一次。约束条件(7)和(8)分别要求每个节点的总上车和下车数量不大于该节点可用的自行车数量和该节点的剩余容量。约束条件(9)确保最终交付每辆车上载的所有自行车。约束(10)确保每辆车的装载、卸载和行驶时间之和不超过可用的重新定位时间。约束(11)是子游消除约束(见Miller et al., 1960【Integer programming formulation of traveling salesman problems】 ),约束(12) - (16)是域约束。
在这里插入图片描述
在这里插入图片描述
约束条件(19)确保每辆车至少离开站点一次。约束条件(20) – (21)通过包括车辆容量和仅针对相应车辆访问该站点的情况调整数量,分别进一步收紧每​​个车辆在车站的装卸数量的解决方案空间。约束(22)通过确保每辆进入车站的车辆必须进行装卸活动来收紧解决方案空间,并且约束(23)是对称性破缺约束。

2.3. Revised model 修正模型

在这里插入图片描述

同样清楚的是,原则上,修正模型的最优目标值不应小于Raviv 等人的基本模型。(2013)因为我们的解决方案空间更小。然而,将站点特征约束(24) - (25)添加到他们的模型中可以有利于开发高效和有效的启发式方法来解决我们的多车辆静态重新定位问题。我们可以利用修改后的模型中每个站点(例如,上车、下车或平衡站)的特征来开发高效且有效的启发式方法来解决所研究的问题。如第 4 节所示,即使我们解决了一个更受限制的问题,我们的解决方法比Forma 等人(2015) 的数学启发式方法更快地获得更好的解决方案。这是为了解决第 2.2 节中的模型而开发的。

3 . 算法

在本节中,我们提出了一种混合大邻域搜索来解决多车自行车重新定位问题。LNS 是一种元启发式算法,在每次迭代中,一部分解被一个操作员破坏,另一个解被另一个操作员修复。LNS 最早由Shaw (1998)【Using constraint programming and local search methods to solve vehicle routing problems】应用于有能力的车辆路径问题和带时间窗的车辆路径问题。后来将其应用于带时间窗的接送车辆路径问题(Bent 和 Van Hentenryck,2006 年【A two-stage hybrid algorithm for pickup and delivery vehicle routing problems with time windows】),取得了很好的效果。展示与 LNS 类似框架的其他方法包括破坏和重建方法(Schrimpf 等人,2000 年【Record breaking optimization results using the ruin and recreate principle】)和迭代贪婪启发式(Ruiz 和 Stützle,2007 年【A simple and effective iterated greedy algorithm for the permutation flowshop scheduling problem】)). LNS 扩展是由Ropke 和 Pisinger (2006a 【An adaptive large neighborhood search heuristic for the pickup and delivery problem with time windows】)提出的自适应 LNS (adaptive LNS) (ALNS) 。LNS与ALNS的区别在于,ALNS中可以从多个不同的算子中进行选择来破坏和修复一个解,具体的算子的选择是根据算子的性能来决定的。

我们的 H-LNS 的主要思想如下。在每次迭代中,q 个站被删除算子从解决方案中删除,这些q 个站与任何以前未分配的站一起放入池中,从池中选择q 个站,然后使用插入算子添加回解决方案。一共有五个删除操作符和五个插入操作符。这些运算符依靠简单的机制(例如,贪婪、随机性、有偏差的抽样、噪声、后悔)来移除站点并将它们重新插入到解决方案中。从每个类别中随机选择一个运算符并将其应用于解决方案。如果解不超过λ ,则通过简单的禁忌搜索改进新解% 比最知名的解决方案x * 差。仅当其解值优于当前解时,该解才被接受为新的当前解。算法 1中描述了该方法的算法框架。我们的方法和 ALNS 之间的区别在于 (1) 在我们的方法中,特定运算符的选择不是由运算符的性能指导,而是由均匀分布来指导,(2) 我们的方法需要更少的参数。
在这里插入图片描述

算法 1的输入由算法 2构造。在算法 1中,有删除和插入运算符(第 3 行和第 4 行)以及禁忌搜索和强化程序(第 12 行)。移除和插入运算符分别在第 3.3 节和第 3.4节中描述,禁忌搜索和强化程序主要由算法 3 – 6描述. 请注意,初始解决方案的构造、邻域运算符(包括删除和插入运算符)、禁忌搜索和我们启发式中的强化程序高度依赖于对站点特征的了解。例如,如果一个车站是一个接送站,在任何一个提议的操作员生成的邻居解决方案中,下车数量必须为零,并且车辆的接送数量不能大于可用的自行车数量在车站或车辆的可用空间。为了获得车站的上下车数量,邻域操作员、构建启发式、禁忌搜索和强化程序必须了解车站的特征,以选择合适的规则来生成可行的解决方案。所有这些规则都已纳入算法2、图3、算法6。
在这里插入图片描述在这里插入图片描述

3.1. Solution representation 解决方案表示

一个解 x x x是由一组vehicle route集合和一组loading and unloading quantities集合组成,其中每个route v v v可以表示为 ( i 0 , i 1 , ⋯   , i n v ) (i_0,i_1,\cdots,i_{n_v}) (i0,i1,,inv), i 0 = i n v = 0 , i 1 , ⋯   , i n v − 1 ∈ N 0 i_0=i_{n_v}=0,i1,\cdots,i_{n_v-1} \in \mathscr{N}_0 i0=inv=0,i1,,inv1N0.node表示为 i h i_h ih,其中 h = 1 , 2 , ⋯   , n v − 1 h=1,2,\cdots,n_v-1 h=1,2,,nv1是在route v v v中的 i h i_h ih的位置。对于每个node i h i_h ih,有一个 y i h v P o r y i h v D y^P_{i_h v} or y^D_{i_h v} yihvPoryihvD伴随(这取决于 i h ∈ P o r i n ∈ D i_h \in \mathscr{P} or i_n \in \mathscr{D} ihPorinD)解 x x x可以使用评估函数evaluation function z ( x ) = ∑ i   i n N f i ( s i ) + α ∑ j ∈ N 0 , j ≠ i ∑ v ∈ V t i j x i j v z(x)=\sum_{i\ in N}f_i(s_i)+\alpha\sum_{j\in N_0,j\neq i}\sum_{v\in V}t_{ij}x_{ijv} z(x)=i inNfi(si)+αjN0,j=ivVtijxijv,其中 s i s_i si是由公式(2)确定的。

x i j v x_{ijv} xijv:表示如果vehicle v v v从node i i i到达 j j j.二元变量。
v \mathscr{v} v:表示vehicle的集合

3.2. Construction heuristic 构造启发式

构造启发式一次生成一条路线。Pick-up stations首先被分配到一条路线上,从每个站Pick-up stations的自行车数量由许多因素决定:
1)备用容量,
2)重新定位操作的剩余时间( τ τ τ),
3 ) 初始库存水平 s i 0 s^0_i si0,
4) 最佳库存水平 s i I s^I_i siI.
如果不能再分配Pick-up stations站,则插入drop-off站。每个站点要放下的自行车数量由vehicle load, s i 0 , s i I s_i^0,s_i^I si0,siI决定. 启发法在上车站和下车站的分配之间交替,直到不可能在不违反约束的情况下分配更多的站。该算法的步骤可以在算法 2中找到。该启发式算法改编自Ho 和 Szeto (2014)中的启发式算法,以考虑多条车辆路线和拆分上车/下车

建立初始解的方法同Szeto类似。具体看csdn的解析-见上面链接。

3.3. Removal operators 移除操作符

H-LNS 中随机选择以下五个移除算子。

因为存在多辆vehicle,所以route不仅仅一条。

随机移除 1.以下重复q次:随机选择一条车辆路径v;从路由v中随机选择一个节点,并将其从路由中删除。

随机移除 2:以下重复q次:随机选择一条车辆路径v;从路径v中删除对目标值贡献最小的节点 i i i.确定 i i i的公式为
在这里插入图片描述where W v W_v Wv表示vehicle route v v v经过的站点集合。注意到,其余节点的pick-up/drop-off的数量保持不变。

Cluster removal. 群集删除。这个想法是使用一种算法将随机选择的车辆路径v的节点分成两个集群,以找到最小生成树 ( Kruskal, 1956 )。修改后的版本不是一直执行算法直到最后,而是在剩下两个连通分量时终止。然后,随机选择一个集群,并删除其节点。如果移除的节点数小于q,在移除的节点集中随机选择一个节点(比如node i i i).通过route r ( r ≠ v ) r(r\neq v) r(r=v)确定的 i i i的最近访问的节点 j ∗ j^* j,where j ∗ = a r g m i n j ∈ W r \ W v t i j j^*=argmin_{j\in W_r\backslash W_v}t_{ij} j=argminjWr\Wvtij. route r r r的nodes被分成两个集群。重复整个过程,直到至少移除q个节点。这种方法首先由Ropke 和 Pisinger (2006b)应用于具有回程的车辆路径问题.

  1. 随机选择一个车辆路径 r r r,对于路径上的节点集合 W r W_r Wr通过最小生成树的方法分成两个集群。
  2. 随机删除一个集群,并判断删除的节点的个数是否大于q.如果满足,则结束。
  3. 如果删除的节点不足 q q q个,则在删除的节点集合中,随机选择一个节点 i i i.显然这个节点 i i i至少具有两个路径 v , r v,r v,r.
    4.通过route r , r ≠ v r, r\neq v r,r=v找到距离 i i i拜访最近的节点 j ∗ j^* j,然后删除节点 j ∗ j^* j.
  4. 重复3和4的步骤,直到起初 q q q个节点。

Radial ruin径向废墟。该运算符的目的是从解决方案中删除q个节点。它首先在Schrimpf 等人(2000)中提到。。、首先,随机选择节点 i i i(在被访问的节点中)。其次,删除 i i i及其 q − 1 q−1 q1个距离解决方案最近(根据最短旅行时间)的邻居。

Neighbor graph removal邻居图删除。此删除操作符利用历史信息来破坏解决方案(Ropke 和 Pisinger,2006b)。历史信息保存在有向图中,其中节点对应站点,边权重edge weights对应最佳解决方案的目标函数值最初,所有权重都设置为无穷大。一旦找到新的最佳解决方案 x ∗ x^* x,在 x ∗ x^* x中找到的所有弧都会使用 z ( x ∗ ) z ( x^*) z(x)更新其权重。基于当前解 x ˉ \bar{x} xˉ,operator为 x ˉ \bar{x} xˉ中的每个节点计算一个得分。节点 i i i的得分是节点 i i i的入向量的权重之和得分大的节点很可能放错位置并被选择移除。移除是随机确定的,但由参数 φ ≥ 1 φ ≥ 1 φ1 控制.由于节点根据它们的分数按降序排序(存储在列表 Ω Ω Ω中),设置的φ越高,节点具有较大的分数被选中.节点的索引 p p p首先是根据 ⌊ U ( 0 , 1 ) ϕ ∣ Ω ∣ ⌋ \lfloor \mathscr{U}(0,1)^{\phi}|\Omega|\rfloor U(0,1)ϕ∣Ω∣确定的,且移除的节点表示为 Ω p \Omega_p Ωp.然后在选择另一个节点进行删除之前更新与Ω p关联的节点的分数。重复此过程,直到删除 q q q 个节点。

当一个节点从解决方案中移除时,解决方案可能不再适用于负载和容量限制。因此,在删除q 个节点后,通过分配每个节点的接送数量和最少数量的自行车来修复解决方案,以使解决方案可行。然后,逐渐增加上车/下车数量,直到在不违反装载和容量限制的情况下无法再增加为止(详见附录 A)。

3.4. Insertion operators 插入运算符

pool Λ \Lambda Λ中的任何节点都可能插入到解决方案中。 Λ Λ Λ包括所有未分配的节点、先前被其中一个删除操作符删除的节点,以及满足关系 s i 0 − ∑ r y i r P ≠ s i I s^0_i - \sum_ry^P_{ir} \neq s^I_i si0ryirP=siI, or s i 0 + ∑ r y i r D ≠ s i I s^0_i +\sum_ry^D_{ir} \neq s^I_i si0+ryirD=siI的节点.后者意味着可以允许将route r r r已经访问过的节点插入到路由v(其中v ≠ r)。随机使用以下五个运算符来插入节点

基于时间的噪声插入Time-based insertion with noise 。以下重复q次:选择 node i ∗ = a r g m i n i ∈ Λ { δ i + ζ i } i^*=argmin_{i\in \Lambda}\{\delta_i+\zeta_i\} i=argminiΛ{δi+ζi} ,where δ i \delta_i δi是使用最便宜的插入标准 the cheapest insertion criterion. δ i \delta_i δi是在两个连续节点之间插入 i i i额外行程时间additional travel time,评估函数evaluation function受到一些噪声 ζ i \zeta_i ζi的影响。噪声 ζ i \zeta_i ζi是在范围 [ − ρ η m a x , ρ η m a x ] [-\rho\eta_{max},\rho\eta_{max}] [ρηmax,ρηmax]之间随机产生的,where η m a x = max ⁡ i , j ∈ N 0 { t i j } \eta_{max}=\max_{i,j\in \mathscr{N}_0}\{t_{ij}\} ηmax=maxi,jN0{tij},且 ρ \rho ρ是一个参数 ( Charon and Hudry, 1993 )。

最好的插入Best insertion。 以下重复q次: Node i ∗ = a r g m i n i ∈ Λ z ( x ∪ { i } ) i^*=argmin_{i \in \Lambda}z(x\cup\{i\}) i=argminiΛz(x{i})是在route中的两个连续节点之间被选择和插入的最好的位置。对于插入的可行性,所有的约束被满足,且 y i ∗ v P > 0 y^P_{i^*v} >0 yivP>0 or y i ∗ v D > 0 y^D_{i^*v} >0 yivD>0是真的。为了避免重新计算路线中节点的所有上/下车数量,调整插入节点 i ∗ i^* i 的前一个或后一个节点在站点的数量就足够了。该运算符也是禁忌搜索中使用的插入运算符。如何确定 y i ∗ v P y^P_{i^*v} yivP and y i ∗ v D y^D_{i^*v} yivD的值和如何调整其他节点的数量的细节在3.5节和算法4中找到。

有偏见的随机插入Biased random insertion 根据几何分布选择要插入的节点。列表Ω中的候选者(用于潜在插入)按插入成本(即访问节点所需的额外行程时间)的升序排序.每个候选人都被分配了一个来自几何分布的概率(即, β ( 1 − β ) P \beta(1-\beta)^P β(1β)P ,where β ∈ [ 0.05 , 0.25 ] \beta\in [0.05,0.25] β[0.05,0.25] p p p是\Omega中的候选者的索引)。 β \beta β可以解释为在此过程的一次特定迭代中选择具有最低插入成本的候选者的概率(Juan 等人,2010)。重复选择过程,直到插入q个节点。

后悔插入Regret insertion:一个node i ∗ i^* i被选择插入是基于它的遗憾值regret value,即它的最佳插入位置和它的第 k ^ \hat{k} k^个最佳插入位置的成本偏差。最好先插入后悔值高的节点;否则,由于缺乏有利的插入位置,可能难以在后期插入它们。节点 i ∗ i^* i 是从集合 Λ Λ Λ中选择的,基于 i ∗ = a r g m a x i ∈ Λ ∑ e = 1 k ^ ( δ i e − δ i 1 ) i^*=argmax_{i \in \Lambda}\sum_{e=1}^{\hat{k}}(\delta^e_i-\delta^1_i) i=argmaxiΛe=1k^(δieδi1),where δ i e \delta^e_i δie是将 i i i插入解中第 e e e 个最佳位置后引起的额外旅行时间.请注意,此步骤与Ropke 和 Pisinger (2006a )中的步骤略有不同,因为它们将不同的插入位置限制在不同的路线中,而在我们的情况下,最佳插入位置可以在同一路线中。这个过程重复q次。 k ^ \hat{k} k^在我们的实现中设置为 3,因为该值已在各种路由问题的文献中显示出良好的结果。

随机插入。随机选择一个站点,并将其插入解决方案中的最佳位置(引入最少的额外行程时间)。这个过程重复q次。


插入q 个节点后,(这 q q q个nodes的) y i ∗ v P y^P_{i^*v} yivP and y i ∗ v D y^D_{i^*v} yivD的值都被设置为0除了"Best insertion"的操作。有时,可以通过在车辆路线的节点之间重新分配自行车来提高目标值。因此,调整每条路线的上车和/或下车数量以获得更好的目标值。有关如何实现的详细信息,请参见第 3.6 节和算法 6

3.5 禁忌搜索

禁忌搜索 Tsbu Search(TS) 应用于有前景的解决方案(即,不比当前最佳已知解决方案x*的λ%差的解决方案)。 TS从包含三个算子获得的邻域解的邻域中选择最佳非禁忌解(或满足期望准则的解),即移除removal(从其路线中移除一个站)、插入insertion (插入一个站)和更换replacement(将一个上(下)站替换为另一个上(下)站)算子。<.font color=green>邻域仅包含可行解。当三个operators之一更改route顺序时,将创建一个邻居解决方案。为保证邻居方案的可行性,必须同时更新pick-up/drop-off站前后站的上下车数量。新的现有解决方案的</font color=blue>逆向移动被设置为多次迭代的禁忌。TS 运行固定次数的迭代, γ γ γ

上述 TS 应用于Ho 和 Szeto (2014)中的单车自行车重新定位问题。在本文中,我们修改了算法以符合多车辆自行车重新定位问题的特征,其中在创建邻域时考虑了不同车辆对节点的多次访问。在下文中,我们将重点介绍所做的更改,并通过举例说明概念(图 1、图 2、图 3)。

图1,2,3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
邻域 N 1 ( x ) N_1 ( x ) N1(x) 包含通过应用移除算子获得的所有可行的邻居解决方案,移除算子一次从路径 v v v中移除一个节点 i h i_h ih(这导致route中从 i h − 1 i_{h-1} ih1绕过 i h i_h ih到达 i h + 1 i_{h+1} ih+1),然后调整depot的pick-up/drop-off的数量( y i 0 v P y_{i_0v}^P yi0vP),前一个站点( y i h − 1 v P y^P_{i_{h-1}v} yih1vPor y i h − 1 v P y^P_{i_{h-1}v} yih1vP),或后一个站点( y i h + 1 v P y^P_{i_{h+1}v} yih+1vPor y i h + 1 v P y^P_{i_{h+1}v} yih+1vP)来制作邻居解决方案 x ˉ \bar{x} xˉ可行(如果可能)。(注意其他节点的上下车量保持不变)。效率在于能够通过简单地调整上述三个站点中的一个站点的数量来评估邻域,而无需重新计算邻域解决方案中每个站点的上下客数量。对于从解中移除的每个节点,N1(x)中包括多达三个可行的邻居解。此调整的必要条件和步骤在算法 3中说明…调整方法具体与Setzo2014相同…
在这里插入图片描述
显然,一个可行的邻域解除了满足算法规定的条件外,还需要服从时间约束。必要的更改是增加相应的上车/下车数量的总和,以说明一个节点被多于一辆车辆访问的可能性。

由于下面是关于 算法3【移除行动】,算法4【插入行动】,算法5【交换行动】的代码解说说明,所以不再翻译赘述。理由在于看图容易理解,且类似于Setzo2014的方法。

算法3 移除行动

在这里插入图片描述

算法4 插入行动

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

算法5 交换行动

在这里插入图片描述

3.6. Intensification procedures 强化程序

TS 中找到的最佳解决方案需要进一步强化程序。有时,可以通过在给定路线的节点之间重新分配指定的上车/下车数量来改进解决方案。请注意,此过程不会增加在路线上花费的总时间,但是简化了 y i v D , y i v P , y i j v y^D_{iv},y^P_{iv},y_{ijv} yivD,yivP,yijv变量。以下方法最初由Ho 和 Szeto (2014)应用于他们的单车重新定位问题。我们对其进行了修改,以符合我们的<font color=orange’>多车辆重新定位问题的特点,包括分开接送。生成的算法如算法 6所示。然后,将 2-opt ( Lin, 1965 ) 应用于每条车辆路线。该运算符反复从路线中删除两条边,并添加回两条新边,以便路线保持巡回。目标是减少总行程时间,而不考虑上车/下车的数量。因为路线现在(很可能)更短,所以可以向路线添加更多节点使用插入运算符3.5节,最多插入五个节点。最后,算法 6用于调整路线节点之间的上下车数量。

算法 6中的调整以启发式方式执行。为了便于理解,我们在此重点介绍四种主要的调整案例。在前两个case中,我们考虑了一对nodes, i m i_m im i h i_h ih(wher m < h m<h m<h),同时是route中的同类型的站点(即要么都是pick-up,要么都是drop-off)。这个想法是为了验证将原始数量的一个或多个(即算法中的 y y y )单位从 i m i_m im移动到 i h i_h ih是否可能且有益,反之亦然.Lines 4-12 描述了 i m i_m im i h i_h ih都是pick-up nodes的情况,而Lines 13-22描述了 i m i_m im i h i_h ih都是drop-off nodes的情况. 在第3个case中 ,考虑了一对相邻的nodes ( i m , i m + 1 ) (i_m,i_{m+1}) (im,im+1),where i m i_m im是depot 且 i m + 1 ∈ P ∩ W v i_{m+1} \in \mathscr{P} \cap W_v im+1PWv. 因为depot也可以视为一个pick-up node,所以我们评估是否可能从 i m + 1 i_{m+1} im+1pick up更多(更少)且从depot中pick up更少(更多)。第 24-33 行描述了这种情况。最后一对是涉及一对相邻节点nodes ( i m , i m + 1 ) (i_m,i_{m+1}) (im,im+1),where i m + 1 i_{m+1} im+1是depot 且 i m ∈ D ∩ W v i_{m} \in \mathscr{D} \cap W_v imDWv.这个想法是评估在i m而不是在停车场还车的可能性。第 34-39 行描述了这种情况。

算法6

在这里插入图片描述

4. Computational experiments

启发式算法是用 C++ 编写的,所有计算实验都是在配备英特尔酷睿 i5-2520M CPU@2.5 GHz 的戴尔笔记本电脑上进行的。三组实例用于验证所提出的 H-LNS 启发式算法的效率和功效。三个数据集如下。

set 1

集合 1。该集合包含 75-200 个站点和 2-3 辆车辆的实例,车辆容量为 20。使用了两个规划范围:T=9000和T=18,000 秒。上下车时间设置为 60 秒。该集合包含 24 个实例,可从https://sites.google.com/site/drsinho/instances/hlns-set1.zip获得。

set2

该组最初由Forma 等人使用。(2015),其实例可从http://www.eng.tau.ac.il/~talraviv/Publications/3step%20data.zip获得。该集合包含 75-200 个站点和 2-3 辆车辆的实例,车辆容量为 25。接送自行车的时间为 60 秒,规划范围T为 18,000 秒。数据还区分了轻型、真实和重型工作负载(即,秒我0设置更接近秒我我当工作量轻而不是重时)。该集合包含 30 个实例。

set3

这一套基于美国最大的共享单车系统——纽约的Citi Bike 。它包含基于地理区域的实例:曼哈顿(302 个站点);曼哈顿和泽西城(349 个车站);曼哈顿、布鲁克林和皇后区(471 个车站);以及所有四个区域(518 个站点)。站点之间的不对称旅行时间(以秒为单位)是从开源路由机获得的。1凸惩罚函数源自Raviv 和 Kolka(2013 年)使用从 Citi Bike 网站收集的实时数据提出的方法。2个车辆数量在 3 到 5 之间变化,车辆容量为 25。接送自行车的时间为 60 秒,规划时限T为 18,000 秒。该集合包含 12 个实例,可从https://sites.google.com/site/drsinho/instances/hlns-set3.zip获得


除非另有说明,否则在大多数测试实例中将α设置为零以忽略第二项的影响,即总行程时间(即确保最小化总惩罚是最重要的)。在第 4.4 节的一些测试实例中,α被设置为 1/900 ,因为Forma 等人。(2015)使用该值,我们想将我们的启发式与他们的数学启发式进行比较。

4.1. Parameter tuning

初始的,参数可以设置为: λ = 0.1 , ρ = 0.1 , ϕ = 3 , K = 100 , γ = 50 , a n d q ∈ { 1 , ⌈ 0.1 × ∣ N ∣ ⌉ } λ=0.1,ρ=0.1,ϕ=3,K=100,γ=50, and q∈\{1,⌈0.1×|N|⌉\} λ=0.1,ρ=0.1,ϕ=3,K=100,γ=50,andq{1,0.1×N⌉}(见表 3).要调整的三个参数是λ、ρ和ϕ。K和γ不需要调整,因为很明显,它们的值越大,将获得的解决方案就越好,尽管以更长的计算时间为代价。然而,将K和γ设置为上述值可在解决方案质量和计算时间之间提供良好的权衡。q越大,破坏和重建可行解所需的时间就越多。因此,我们决定允许q从实例大小的 10% 为界的范围内随机抽取。要调整的第一个参数是λ, 这限制了禁忌搜索可以改进的解决方案的数量。λ被设置为从 {0.05, 0.1, 0.15, 0.2} 取值。分配的值λ越大,执行算法所需的时间就越多。通过为范围内的每个值运行 Set 1 中的 24 个实例中的每一个 20 次,发现设置λ=0.1产生最好的平均结果。当λ设置为 0.1 时,下一个要调整的参数是ρ,它控制要添加到插入运算符“基于时间的噪声插入”中的评估函数的噪声水平。ρ被设置为从 {0.025, 0.05, 0.1, 0.2, 0.4} 中取值。ρ取的值越大,从中提取噪声的范围越广。实验表明,将ρ设置为 0.1 会产生最佳的平均结果。和λ=0.1和ρ=0.1,最后一个要调整的参数是ϕ,它控制运算符“Neighbor graph removal”中的随机移除。ϕ可以从集合 {1, 2, 3, 4, 5} 中取值。值ϕ设置得越高,选择得分最高的节点的机会就越大。实验表明,将ϕ设置为 2 会产生最佳的平均结果。因此,本节其余部分显示的结果是通过设置λ=0.1,ρ=0.1,和φ=2个.
在这里插入图片描述

4.2. Contribution of each removal and insertion operator

H-LNS 启发式算法使用五个移除和五个插入运算符。表 4记录了这十个运算符中每一个的有用性,它显示了当从算法中排除特定运算符时,与下限的平均偏差恶化的程度。实验在 Set 1 中的 24 个实例上进行,每个实例运行 20 次。发现最有用的移除算子是簇移除算子,而“最佳插入”构成最有用的插入算子。令人惊讶的是,排除后悔插入运算符提高了平均结果。但是,排除此运算符后,第二组实例的结果并没有改善。
在这里插入图片描述

4.3 。CPLEX 与 H-LNS 的比较

结果是通过设置得到的 λ = 0.1 , ρ = 0.1 , φ = 2 λ=0.1,ρ=0.1,φ=2 λ=0.1,ρ=0.1,φ=2个, k = 100 , γ = 50 , 和 q ∈ { 1 个 , ⌈ 0.1 × ∣ N ∣ ⌉ } k=100,γ=50,和q∈\{1个,⌈0.1×|N|⌉\} k=100,γ=50,q{1,0.1×N⌉}. 一个实例表示为 X_Y_Z,其中 X 表示实例中的站点数,Y 表示车辆数,Z 表示规划范围的长度(即 s 简称,吨=9000,l 代表长,吨=18,000). 由于这组实例仅由我们的方法应用,因此我们决定将获得的结果与从 CPLEX 12.4 获得的结果进行比较。CPLEX 被设置为最多运行 2 小时,下限和上限均在表​​ 5中报告(如果在 2 小时的最大运行时间内获得了可行的解决方案;否则,连字符“-”是改为写)。CPLEX 没有为该数据集中的 24 个实例中的任何一个找到最优解。为了证明 H-LNS 在分配给搜索的时间更多时找到更好的解决方案,表 5还比较了两者之间的结果k=50和k=100,显示与下限的平均差距k=50平均使用 23 秒的计算时间为 5.12%。当K增加到 100(减少到 4.90%)时,结果有所改善,但代价是所需的计算时间几乎翻倍。

在这里插入图片描述

4.4 Comparison among CPLEX, 3-step math heuristic, and H-LNS

CPLEX、三步数学启发式和 H-LNS 之间的比较
在这里,结果是通过设置获得的 λ = 0.1 , ρ = 0.1 , φ = 2 个 , k = 50 , γ = 50 , 和 q ∈ { 1 , ⌈ 0.1 × ∣ N ∣ ⌉ } λ=0.1,ρ=0.1,φ=2个,k=50,γ=50,和q∈\{1,⌈0.1×|N|⌉\} λ=0.1,ρ=0.1,φ=2,k=50,γ=50,q{1,0.1×N⌉}. 一个实例表示为 X_Y_Z,其中 X 表示实例中的站点数,Y 表示车辆数,Z 表示工作负载级别。使用Forma 等人使用的第二组实例进行了两组实验。(2015)。第一组的结果如表 6所示,其中 α = 0 α=0 α=0. H-LNS 结果仅与 CPLEX 结果进行比较,如Forma 等人。(2015)没有进行任何实验α=0. CPLEX 未能在 2 小时的时间限制内为 30 个实例中的任何一个找到最佳解决方案。H-LNS 获得了比 CPLEX 更好的可行解,并且还设法将最优性差距平均缩小到 3.09%(最小差距为 2.69%)。第二组实验在同一组实例上运行,但α设置为 1/900。Forma 等人的三步数学启发式。(2015)是唯一用于对第二组实例进行计算实验的方法(使用α=1个/900). 然而,他们的问题表述与我们的略有不同。在Forma 等人。(2015),车站不属于接送站。因此,从理论上讲,从他们的问题公式中得出的最优解可能比从我们的问题中得出的最优解更好。然而,比较 H-LNS 和数学启发式的结果是合理的。
在这里插入图片描述
表 7显示了从 CPLEX(在我们的数学模型上)获得的下限和上限、数学启发式的结果、H-LNS 的结果,以及我们的结果与下限和数学启发式的平均偏差。最后一列报告了运行实例的平均计算时间。福尔马等。(2015)没有具体说明运行每个实例所花费的时间,尽管细读文本表明运行需要一个多小时,而且他们的计算机比我们的快。对于所有 30 个实例,我们的 H-LNS 设法找到了比他们的数学启发式更好的解决方案。平均提高1.06%,最大提高1.48%。通过增加K和/或γ,但以增加计算时间为代价。目前,平均计算时间不到半分钟。
在这里插入图片描述

4.5 LNS与H-LNS的比较

3.3和3.4节中描述的移除和插入算子表现出多样化和集约化的效果,尽管它们的集约化效果不强。因此,有必要应用短 TS 来加强在解决方案空间的有希望区域中的搜索。为了证明在生成的 H-LNS 算法中包含 TS 的有效性,在排除 TS 的纯大邻域搜索上进行了计算实验(即,省略了算法 1的第 11-16 行)。

表 8报告了运行 LNS 获得的第一组实例的结果 k = 100 (第 2 − 3 列)和 k = 1000 (第 5 − 6 列) k=100(第 2-3 列)和k=1000(第 5-6 列) k=100(第23列)和k=1000(第56列)。为了在 LNSH-LNS 之间进行公平比较,两者之间的平均计算时间需要相似。因此,我们比较了 LNS(与钾=1000) 与 H-LNS (与k=50和γ=50; 见表5),并发现 H-LNS 在所有 24 个实例上都获得了更好的解决方案。平均而言,改进为 0.79%,LNS 需要稍微多一些的计算时间。

在这里插入图片描述

还在第二组实例上使用 LNS 进行了实验。表 9显示了 LNS 结果k=100(第 2-3 列)和k=1000(第 5-6 列)。LNS(与k=1000) 与 H-LNS (与k=50和γ=50; 见表7),因为平均计算时间相似。同样,对于所有 30 个实例,H-LNS 都找到了比 LNS 更好的解决方案,平均提高了 0.67%。
在这里插入图片描述
最后,表 10报告了对第三组实例进行的实验结果。此表显示了 LNS 的结果k=1000(第 2-3 列)和 H-LNS k=50和γ=50(第 5-6 列)。与之前的实验一样,H-LNS 在所有 12 个实例中都获得了比 LNS 更好的解决方案,平均提高了 0.49%。
在这里插入图片描述

5 . 结论

本文提出了一种混合启发式算法来解决Raviv 等人提出的多车辆静态重新定位问题的修正弧指数公式。(2013),其中明确考虑了车站特征。启发式基于大邻域搜索,但结合了禁忌搜索和各种插入和删除算子以提高算法性能。为了说明所提出的启发式算法的性能,它在三组实例上进行了测试,最多 518 个站点和五辆车。结果表明我们的启发式混合大邻域搜索比Forma 等人提出的 3 步数学启发式获得更好的结果。(2015). 与数学启发式相比,平均提高了 1.06%。此外,我们启发式的平均计算时间不到半分钟,而三步数学启发式的平均计算时间超过一小时。计算结果还证实,当结合禁忌搜索时,我们的启发式算法表现更好,并且每个插入和删除运算符都有助于解决方案的准确性。然而,我们的启发式方法无法考虑这样一种情况,即可能需要在平衡站上下自行车以帮助平衡具有更高惩罚成本的相邻站。因此,未来的研究方向是派生出有效且高效的算子来处理平衡站的装卸量。

参考文献

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值