【论】Solving a static repositioning problem in bike-sharing systems using iterated tabu search

Solving a static repositioning problem in bike-sharing systems using iterated tabu search 使用迭代禁忌搜索解决自行车共享系统中的静态重新定位问题
在这里插入图片描述

@article{HO2014180,
title = {Solving a static repositioning problem in bike-sharing systems using iterated tabu search},
journal = {Transportation Research Part E: Logistics and Transportation Review},
volume = {69},
pages = {180-198},
year = {2014},
issn = {1366-5545},
doi = {https://doi.org/10.1016/j.tre.2014.05.017},
url = {https://www.sciencedirect.com/science/article/pii/S1366554514000945},
author = {Sin C. Ho and W.Y. Szeto},
keywords = {Bike-sharing, Static repositioning, Tabu search},
}

文章目录

集锦

  • 我们研究静态自行车重新定位问题。
  • 我们修改问题以提高其真实性并减少解决方案空间。
  • 我们通过使用特定运算符进行迭代禁忌搜索来解决该问题。
  • 我们高效地获得高质量的解决方案。

摘要

在本文中,我们研究了静态自行车重新定位问题,其中问题包括选择要访问的站点子集,对它们进行排序,并确定各种情况下的上/下车数量(与每个访问的站点相关联)操作限制。目标是尽量减少所有车站的总罚款。我们提出了一种迭代禁忌搜索启发式来解决所描述的问题。实验结果表明,这种简单的启发式算法可以使用较少的计算时间生成高质量的解决方案。

关键词:共享单车静态重新定位禁忌搜索

个人小节


算法理解小结:

  1. 初始解 x 0 x_0 x0的制定。
  2. for w=1 to β \beta β do
    if interWI<K:
    * Tabu search:在Remove,Insert,Exchange这3个操作中,重点是禁忌,即禁止逆向移动。可以得到邻域解 x ˘ \breve{x} x˘
    * Perturbation: 对 x ˘ \breve{x} x˘根据最优值 z ∗ z^* z选择两种搜索模式(if,else…).都包括 tour-length的提升(2opt和Intra-location),解的值的提升(Insert和Remove),节点数量的调整(AQ和Repair).得到新解 x ′ x' x和当下最优解 x ˘ \breve{x} x˘
    * 判断 z ( x ′ ) 与 z ∗ z(x')与z^* z(x)z的关系,如果提升了,则解 x ˘ = x ′ \breve{x}=x' x˘=x更新。
    * 如果没有提升,则原来的 x ˘ \breve{x} x˘会重新进入循环[Tabusearch+Perturbation].注意到,如果原来的 b r e v e x breve{x} brevex无论怎么搜索和扰动都无法提升了。那么需要结束这个循环。因此要记录对原来的 x ˘ \breve{x} x˘重复迭代的次数[interWI表示]。因此,同一个解的无法提升的次数要更新,即interWI=interWI+1.

1. Introduction

如今,共享单车在很多地方都非常流行。2013 年 4 月,全球有 535 个计划,分布在 49 个国家(Larsen,2013 年)。因此,研究共享单车非常重要。目前,共享单车的研究课题包括自行车网络设计(dell’Olio 等人,2011 年;Lin 和 Yang,2011 年; Martinez等人,2012 年; Romero等人,2012 年;Sayarshad 等人,2012 年;Lin 等人., 2013 , Lu, in press ), 自行车需求分析 ( Froehlich et al., 2008 , Borgnat et al., 2009 , Borgnat et al., 2011 , Kaltenbrunner et al., 2010 ,Vogel 等人,2011 年, Lathia 等人,2012 年),自行车网络流量分析( Shaheen 等人,2011 年, Kitthamkesorn等人,出版中, Shu 等人,2013 年),自行车服务水平分析( Nair 等人) al., 2013 , Raviv and Kolka, 2013 ), 以及其他许多人。正如我们所见,共享单车研究最近才受到关注。

共享单车的一个根本问题是,一些站点所需的自行车数量不足以满足自行车用户的需求。因此,在实践中,卡车被用于将自行车从过剩的站点或仓库运输到短缺的站点以满足需求。这个问题被称为自行车重新定位问题,它确定最佳车辆(卡车)路线和每个站点装载和卸载的自行车数量以满足目标,例如满足自行车用户需求,受到各种约束,包括路线,车辆,站和操作限制。很多时候,卡车没有必要走遍所有的自行车站。这意味着问题涉及选择和确定访问站点的顺序。这个问题比经典问题复杂车辆路径问题 vehicle routing problem(VRP) ( Ho and Gendreau, 2006[Path relinking for the vehicle routing problem] , Szeto et al., 2011[An artificial bee colony algorithm for the capacitated vehicle routing problem] ) 和经典旅行商问题 traveling salesman problem (TSP) ( Gendreau et al., 1992[New insertion and postoptimization procedures for the traveling salesman problem] ) 因为重新定位问题进一步需要确定上下车-关闭数量。这些额外的变量意味着解决方案空间大于经典 VRPTSP。重新定位问题在有向图上定义时也称为自行车共享重新平衡问题 bike sharing rebalancing problem( Dell’Amico 等人,2014 年[The bike sharing rebalancing problem: Mathematical formulations and benchmark instances])。重新定位问题也属于多对多取货和配送问题( Parragh et al., 2008[A survey on pickup and delivery problems])),它是在一个无向图上定义的。当自行车重新定位问题仅考虑一辆车时,问题就变成了由Hernández-Pérez 和 Salazar-González (2004a)引入的单一商品取货和送货 TSP (1-PDTSP) 。当自行车重新定位问题考虑多辆车和每条路线的最大持续时间约束时,该问题属于Shi 等人引入的单一商品取货和送货 VRP。(2009)。

尽管共享单车非常流行并且重新定位问题是一个实际问题,但与经典的 VRPTSP 相比,关于该问题的文献相当稀少(大约 15 篇论文)。在文献中,已经研究了具有不同约束和目标函数的各种自行车重新定位问题。这些问题可以大致分为两类,即静态和动态重新定位问题。静态重新定位问题考虑夜间重新定位操作,其中在重新定位发生之前,每个站点所需的自行车数量和存在是固定的并且是已知的。动态重新定位问题考虑了每个站点所需的自行车数量和存在随时间变化的情况。这个问题经常出现在白天的重新定位运营或者24小时的共享单车运营中。据我们所知,很少(Nair 和 Miller-Hooks,2011 年, Caggiani 和 Ottomanelli,2012 年, Contardo 等人,2012 年)研究了动态问题,现有的大部分研究都与静态自行车重新定位问题有关。

在重新定位问题中,考虑的目标包括 最小化总未满足需求或总用户不满意(Contardo et al., 2012),最小化搬迁和丢失用户成本之和(Caggiani and Ottomanelli, 2012),最小化总旅行成本(Benchimol et al., 2011 , Chemla et al., 2013 ), 最小化各站点目标自行车数量、装卸数量和所有路线总行程时间的加权和( Papazek et al., 2013 , Di Gaspero et al., 2013 ), 最小化最大游览长度 ( Schuijbroek et al., 2013), 并最大限度地减少旅行和处理成本的总和 ( Erdoğan et al., 2014). 目标的选择应根据共享单车运营的应用情况来确定。很多时候,操作员的关注决定了物镜的选择。如果共享单车系统由政府运营,则目标函数中应包括用户满意度、最大偏差和惩罚成本等社会效益指标。然而,如果自行车共享系统由私人运营商运营,则在确定卡车路线时,行驶距离或行驶时间是关键问题,成本最小化目标也被考虑在内。然而,我们可以观察到一些目标比其他目标更笼统。例如,

在重新定位问题中还考虑了各种操作约束。例如,尽管每个重新定位活动的最长时间,Benchimol 等人。(2011)提出了一个路由约束,要求每个节点都被车辆恰好访问一次,就像在旅行商问题中一样。在与需求相关的约束方面,Benchimol 等人。(2011)和Chemla 等人。(2013)将完美平衡要求设置为硬约束,但放宽了时间约束。Lin 和 Chou(2012)在约束中考虑了道路条件、交通规则和地理因素。奈尔和米勒胡克斯 (2011)引入了概率服务水平约束,使得重新定位活动必须满足最近的未来需求的一定比例,但忽略了路由约束。问题中包含的操作约束应与应用程序相关。它们还决定了问题的复杂性。

大多数先前的共享单车研究并没有将站点预先定义为 (1) 接送 pick-up站,(2) 下客drop-off 站,或 (3) 既非接送站也非下客 neither pick-up nor drop-off 站。事实上,一个站可以很容易地归为这三种类型中的一种。我们只需要处理下客站的需求。卡车没有必要访问所有的接送站来满足每个下客站的需求或最小化总罚款成本。因此,可以细化问题,从而可以提出更有效的解决方法。基于这种方法,Ting 和 Liao (2013)将自行车重新定位问题建模为选择性接送问题。自行车重新定位问题的输入包括接送站的集合。卡车必须走遍所有的下客站才能满足需求,但卡车没有必要走遍所有的上客站。然而,他们在目标函数中考虑了车辆的总行程时间,并且明确给出了每个下客站所需的自行车数量。事实上,并非所有的需求都能得到满足,因为车厂和取车站的自行车供应可能不足,或者运营时间太短,无法将自行车重新安置到一些下客站。在这两种情况下,确保卡车访问所有下客站并满足所有需求是不明智的。而且,一个站点不满足一个单位需求的惩罚成本也可能因站点而异。在自行车站密度高(低)或交通方式选择多(少)的地区,惩罚成本可能低(高),因为用户可以(不能)轻松步行到附近的其他自行车站或乘坐其他交通方式。考虑这种惩罚成本比仅考虑用户对政府提供的自行车服务的需求更为合理。

为了解决这个问题,我们提出了一个改进的问题来考虑这种惩罚成本。我们使用Raviv 等人提出的惩罚函数的概念。(2013)并考虑固定的规划范围。目标是最小化总惩罚成本。Raviv 等人的限制。(2013)进行了修改,以单独考虑接送站的集合并减少解决方案空间。正如Ting 和 Liao (2013)所指出的,原来的问题已经NP-难的。具有更复杂目标函数的细化问题也是NP-难的。使用表 1中所示的精确方法来解决大型、现实的重新定位问题是很棘手的。此外,由于表 1中所示的现有启发式或近似方法是为解决与我们不同的自行车重新定位问题(在目标函数或约束方面)而量身定制的,因此它们的方法不能直接应用于解决我们的问题。因此,我们开发了一种启发式方法,利用问题的属性来解决我们的问题。

表1

在这里插入图片描述
由于所提出的问题涉及路由问题,我们考虑增强路由问题的现有启发式以解决我们所提出的问题。因为众所周知,与其他非混合方法相比,禁忌搜索在解决路由问题方面非常有效,而且禁忌搜索tabu search 很少用于解决静态重新定位问题,如表 1所示,我们选择禁忌搜索作为我们解决方法的支柱。然而,重新定位问题除了路由变量外还涉及上车和下车数量变量。因此,我们不能直接将禁忌搜索应用于路由问题来解决我们提出的问题,必须在禁忌搜索中添加一些新的运算符来处理额外的变量。为此,我们开发了特定的运算符以确保解决方案的可行性。为了在评估邻居解决方案时加快搜索速度,启发式算法中加入了几个想法,以避免重新计算所有上/下车数量。为了提高解决方案的质量,将禁忌搜索过程嵌入到迭代框架中,其中将几种强化/多样化机制应用于从禁忌搜索获得的解决方案。

在本文的其余部分安排如下。第2节介绍了公式。第3节描述了求解方法。第4节描述了测试用例并讨论了结果。第5节给出了结论。

2 .Mathematical formulation 数学公式

在本节中,我们开发了基于Raviv 等人的公式。(2013) ,但修改了他们的表述,仅考虑单车,并明确定义了与Caggiani 和 Ottomanelli (2012)以及Ting 和 Liao (2013)的研究类似的接送站。然而,与他们的研究不同的是,接送站是从惩罚函数中推导出来的。如果车站的初始自行车数量小于该车站的最佳自行车数量(即惩罚成本最低的水平),则该车站被定义为下客drop-off站。另一方面,如果一个站点的初始自行车数量大于该站点的最佳自行车数量,则该站点被定义为拾取pick-up station站

Raviv 等人的制定。(2013)通过按顺序执行以下操作进行了修改:
(1)将每个约束拆分为一对约束,一个用于上车站,一个用于下车站。
(2) 根据关联站的定义简化每个合成约束。
(3) 根据站的定义细化装卸变量的含义。
(4) 通过消除车辆符号下标和车辆集合符号等冗余符号,简化单个车辆案例的整个公式,
以及 (5) 简化目标函数,仅考虑惩罚成本的总和每个站点的定义并为目标函数定义特定形式的惩罚函数
。请注意,如果我们删除了前面过程中的步骤 4,

修改后的公式假设站点既是上车点又是下车点,并且有足够的自行车和容量。该公式还假设每个站点最多只能被车辆访问一次,如文献中所述(例如,Raviv 等人,2013 年),因为该假设可以使解决方案空间更小,从而开发出一种有效的启发式算法更容易解决大型自行车重新定位问题。此外,该配方允许车辆在离开站点时装载一​​些自行车,并允许车辆在非空的情况下返回站点。此外,该配方允许车辆在必要时多次访问该站点。为了简化静态自行车重新定位问题的数学公式的描述,我们首先介绍符号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
目标函数(1)定义为每个站点产生的惩罚成本之和,这与Raviv 等人的不同。(2013)使用总罚款和运营成本的加权总和。每个站点的惩罚成本由相关的惩罚函数计算。每个惩罚函数都定义在从零到最大站点容量的整数上,因为这些整数是该站点可能的自行车数量。由于静态重新定位发生在夜间,因此重新定位操作前后每个站点的自行车数量通常不同。车站的罚款成本由运营后该车站的自行车数量决定。拉维夫等。(2013)建议惩罚函数或成本表示下一个工作日内自行车或储物柜的预期短缺数量。他们认为,惩罚函数已经捕获了随机自行车需求的影响,并且可以使用Raviv 和 Kolka(2013 年)提出的方法进行估计。

约束(2)、(3)、(4)定义重新定位结束时每个节点的最终库存水平。重新定位结束时取货站的库存水平等于初始水平减去取货数量,而卸货站在重新定位结束时的库存水平等于初始水平加上交货数量。约束条件(5)表明从接送站获得的自行车数量等于车辆在访问该站之前和之后的自行车数量之差。约束(6)声明交付到下客站的自行车数量等于到达车站前后车辆上的自行车数量之差。约束条件(7)和(8)分别定义了站点的上车和下车数量。约束(9)是车辆容量约束,要求车辆上的自行车数量不大于其容量。约束条件(10)确保车辆必须至少离开站点一次。约束条件(11)确保如果车辆访问一个站点,它必须离开该站点。约束条件(12)确保车辆最多可以访问一个站点一次。约束(13) ,(14)要求每个接送站的接送数量不大于接送站可用的自行车数量和还车站的剩余容量,分别。约束(15)确保最终交付所有拾取的自行车。约束条件(16)限制总操作时间,包括装载、卸载和行程时间,不大于可用于重新定位的总时间。约束(17)是子巡回消除约束(参见Miller 等人,1960)。约束条件(18)定义Xij成为二元变量。约束(19)和(20)将上车和下车数量限制为非负整数。约束(21)、(22)、(23)确保车辆上的自行车数量、每个站点的库存水平和辅助变量都是非负的。

由于(1)不是线性的,因此需要对其进行线性化才能由 CPLEX 求解。拉维夫等。(2013)展示了(1)如何线性化。他们还展示了如何加强他们的数学公式。根据他们的想法,我们添加了以下约束:
在这里插入图片描述
约束(24)、(25)通过包括车辆的容量,并仅针对车辆的情况调节数量,分别进一步收紧每​​个接送站的装载和卸载数量的解决方案空间访问相应的站。约束(26)和(27)通过确保车辆进入车站必须分别进行装载和卸载自行车活动来收紧解决方案空间。如果距离矩阵满足三角不等式,则这些约束是有效的,因为这样总是可以跳过没有装卸活动的

3. Solution methodology 解决方法

在我们提出的解决方案中,解决方案 x x x由两部分组成:(1) 路由序列 ( i 0 , i 1 , ⋯   , i n ) (i_0,i_1,\cdots,i_n) (i0,i1,,in),where i 0 = i n = 0 i_0=i_n=0 i0=in=0$(即仓库), i b ∈ N , h = 1 , 2 , ⋯   , n − 1 i_b \in \mathcal{N},h=1,2,\cdots,n-1 ibN,h=1,2,,n1 , 下标h用于定义被访问站的顺序, (2) 决策变量 y i h P y_{i_h}^P yihP y i h D y_{i_h}^D yihD者分别描述了每个站点 i h i_h ih要上车或下车的自行车数量 。除depot外,对于 i h i_h ih只定义一个决策变量,因为在构建初始解决方案之前,车站已被分类为接送pick-up站或下车drop-off站evaluation function评价函数定义为 z ( x ) = ∑ i ∈ N f i ( s i ) z(x)=\sum_{i\in N}f_i(s_i) z(x)=iNfi(si), where s i s_i si由方程式定义。(2) , (3)。每个邻居解决方案 x x x都根据评估函数 z ( x ) z(x) z(x)进行评估.

所提出的方法包括以下内容:初始解构建过程the initial solution construction procedure新解生成方法 new solution generation method (基于插入、移除和交换移动)并入禁忌搜索过程a tabu search procedure,以及进一步改进和多样化搜索的强化和多样化过程 intensification and diversification .procedures to further improve and diversify the search。

3.1 。Initial solution construction 初始解决方案构建

重新定位问题的初始解决方案是通过下面描述的简单构造启发式获得的:
🐸step0: 将上车点和下车点按降序排列 ∣ f i ( s i 0 ) − f i ( s i I ) ∣ , ∀   i ∈ N |f_i(s_i^0)-f_i(s_i^I)|,\forall \ i \in N fi(si0)fi(siI), iN.设 l = 1 l=1 l=1 将route初始化为 ( i 0 , i n ) (i_0,i_n) (i0,in).

s i 0 s_i^0 si0: 重新定位操作开始前节点i处的自行车数量
s i I s_i^I siI: 站点惩罚函数最小的车辆数目,即站点 i i i的最佳自行车数目
降序排列:也就是先完成情况比较重要的任务。按照自行车loadding或unloading的数量排序。
i 0 = i n = 0 i_0=i_n=0 i0=in=0:都是仓库depot的id号

🐸step1: 从排序过(ordered)的pick-up stations 列表中选择第 l l l个站点.令 g 称为位于第l个位置的站点的station number(站点的id?),如果站点 g g g在route的末尾(before i n i_n in)加入的话, τ \tau τ是repositioning operation的剩余时间.如果 τ > 0 \tau>0 τ>0,设 y g P = min ⁡ { k − y i n − 1 i n , s g 0 − s g I , ⌊ τ / ( U + L ) ⌋ } y_g^P=\min\{k-y_{i_{n-1}i_n},s_g^0-s_g^I, \lfloor \tau/(U+L) \rfloor\} ygP=min{kyin1in,sg0sgI,τ/(U+L)⌋}.如果 y g P > 0 y_g^P>0 ygP>0,然后将 g g g战添加到路线的末尾。从有序列表中删除站点 g g g.令 l = l + 1 l=l+1 l=l+1.重复步骤1,直到在不违反约束的情况下无法将更多的接送站添加到路线中。重新令 l = 1 l=1 l=1.

l l l:相当于序列的索引, g g g相当于该索引的站点标号(station number)(即,站点的ID号)。
y i P y_i^P yiP:vehicle在站点 i , i ∈ P ∪ { 0 } i, i \in P\cup\{0\} i,iP{0}拾取的自行车数目。
k k k:vehicle的容量
y i j y_{ij} yij:vehicle从 i i i到达 j j j所携带的bike的数量。值得提醒:if x i j = 0 x_{ij}=0 xij=0,则 y i j = 0 y_{ij}=0 yij=0
U U U:从vehicle上卸下自行车并将其挂在车站的储物柜上所需的时间
L L L:将自行车从车站移走并装载到vehicle上所需的时间
每个站点可拾取自行车的数目为:vehicle的剩余库存 k − y i n − 1 i n k-y_{i_{n-1}i_n} kyin1in,最佳装卸的bike数量 s g 0 − s g I s_g^0-s_g^I sg0sgI, 剩余时间可操作装卸的bike数量 ⌊ τ / ( U + L ) ⌋ \lfloor \tau/(U+L) \rfloor τ/(U+L)⌋ .对上述三者取最小值即为每个站点实际可拾取的自行车数目。
从一个ordered pick-up station中按照顺序依次选择站点,第 l l l个站点记为 g g g.判断约束条件:1,在g后的剩余时间;2.在g可拾取的车辆数目 y g P > 0 y_g^P>0 ygP>0.则将g添加到route路线末尾( i n i_n in之前)。重复该步骤直到约束不成立.

🐸step2:对下客drop-off站重复步骤 1,用 y g D y_g^D ygD取代 y g P y_g^P ygP,且 y g D = min ⁡ { y i n − 1 i n , s g I − s g 0 } y_g^D=\min\{y_{i_{n-1}i_n},s_g^I-s_g^0\} ygD=min{yin1in,sgIsg0}

从一个ordered drop-off station中按照顺序依次选择站点,第 l l l个站点记为 g g g.判断约束条件:1,在g后的剩余时间;2.在g可卸载的车辆数目 y g D > 0 y_g^D>0 ygD>0.则将g添加到route路线末尾( i n i_n in之前)。重复该步骤直到约束不成立.

🐸step3: 重复第 1 步和第 2 步,直到在不违反约束的情况下无法在路线末端添加更多站点。

举个例子
station ID347816529
最优差值84321-9-5-3-1

车辆的Q通常为10,20,30这3种结构。
case1: Q = 10 Q=10 Q=10

route=[0,10],排序后的拾取列表P=[3,4,7,8,1],排序后的卸载列表D=[6,5,2,9]
route=[0,3,10], y 3 P = 8 y_3^P=8 y3P=8,删除node 3, VL=8
route=[0,3,4,10], y 4 P = m i n ( 10 − 8 , 4 ) = 2 y_4^P=min(10-8,4)=2 y4P=min(108,4)=2,删除node,VL=10
尝试将7放入,约束不成立。换为D列表
route=[0,3,4,6,10]. y 6 D = 9 y_6^D=9 y6D=9,删除node 6,VL=1
尝试将5放入,约束不成立。换为P列表。
route=[0,3,4,6,7,10], y 7 P = m i n ( 10 − 1 , 3 ) = 3 y_7^P=min(10-1, 3)=3 y7P=min(101,3)=3,删除node1,VL=4
route=[0,3,4,6,7,8,10], y 8 P = m i n ( 6 , 2 ) = 2 y_8^P=min(6,2)=2 y8P=min(6,2)=2,删除node2,VL=6
route=[0,3,4,6,7,8,1,10], y 1 P = m i n ( 4 , 1 ) = 1 y_1^P=min(4,1)=1 y1P=min(4,1)=1,删除node3,VL=7
P的列表结束,更换为D
route=[0,3,4,6,7,8,1,5,10], y 5 D = m i n ( 7 , 5 ) = 5 y_5^D=min(7,5)=5 y5D=min(7,5)=5,删除node5,VL=2
route=[0,3,4,6,7,8,1,5,2,10], y 2 D = m i n ( 2 , 3 ) y_2^D=min(2,3) y2D=min(2,3),删除node2.VL=0
更换P列表,P为空。更换D列表,D不满足约束。跳出循环。

结果为:

x03467815210
d82-9321-5-3
q810146720

注意查看,这里的列表中的节点只有8个。缺少一个节点9.因为vehicle为空了。所以,对于vehicle是否要经过一次node9,要思考。但我认为这里是没有必要的。因为多跑一趟,浪费成本!
case2: Q = 20 Q=20 Q=20

route=[0,10],排序后的拾取列表P=[3,4,7,8,1],排序后的卸载列表D=[6,5,2,9]
route=[0,3,10], y 3 P = 8 y_3^P=8 y3P=8,删除node 3, VL=8
route=[0,3,4,10], y 4 P = m i n ( 20 − 8 , 4 ) = 4 y_4^P=min(20-8,4)=4 y4P=min(208,4)=4,删除node4, VL=12
route=[0,3,4,7,10], y 7 P = m i n ( 20 − 12 , 3 ) = 3 y_7^P=min(20-12,3)=3 y7P=min(2012,3)=3,删除node7,VL=15
route=[0,3,4,7,8,10], y 8 P = m i n ( 20 − 15 , 2 ) = 2 y_8^P=min(20-15,2)=2 y8P=min(2015,2)=2,删除node2,VL=17
route=[0,3,4,7,8,1,10], y 1 P ) = m i n ( 20 − 17 , 1 ) = 1 y_1^P)=min(20-17,1)=1 y1P)=min(2017,1)=1,删除node1,VL=18
P列表结束,更换列表D
route=[0,3,4,7,8,1,6,10], y 6 D = m i n ( 18 , 9 ) = 9 y_6^D=min(18,9)=9 y6D=min(18,9)=9,删除node6,VL=9
route=[0,3,4,7,8,1,6,5,10], y 5 D = m i n ( 9 , 5 ) = 5 y_5^D=min(9,5)=5 y5D=min(9,5)=5,删除node6,VL=4
route=[0,3,4,7,8,1,6,5,2,10], y 2 D = m i n ( 5 , 3 ) = 3 y_2^D=min(5,3)=3 y2D=min(5,3)=3删除node2,VL=1
route=[0,3,4,7,8,1,6,5,2,9,10], y 9 D = m i n ( 1 , 1 ) = 1 y_9^D=min(1,1)=1 y9D=min(1,1)=1,删除node9,VL=0
完美解

结果为:

x034781652910
d84321-9-5-3-1
q8121517189410

由于Q的不同导致解的完美程度不同!!

3.2 。 Tabu search 禁忌搜索

禁忌搜索是 Fred Glover 于 1986 年提出的一种著名的元启发式 metaheuristic算法 ( Glover, 1986[Future paths for integer programming and links to artificial intelligence] )。许多困难的组合优化问题(例如,车辆路径问题)已通过禁忌搜索得到有效解决。禁忌搜索基于局部搜索原则:在每次迭代中,选择邻域内的最佳解决方案。为了避免陷入局部最优并防止解决方案循环,禁止选择具有先前访问解决方案的某些属性的解决方案进行一定数量的迭代(即,这些属性记录在禁忌列表中)。有时禁忌列表可能过于强大,因为它们限制了优秀的解决方案被选择。愿望标准Aspiration criteria对于克服这一障碍非常有用。

启发式tabu search 运行了 γ \gamma γ次迭代。在每次迭代,一个可行解是从3个邻居中选择的,即 R ( x ) , I ( x ) , E ( x ) \mathscr{R(x),I(x),E(x)} R(x),I(x),E(x).其中这个可行解使得 z ( x ˉ ) z(\bar{x}) z(xˉ)最小化。所选的解sol是非禁忌的解或满足愿望标准的解。如果所选择的解的评估函数的值小于当前最优的评估值 z 1 ∗ z_1^* z1,则我们更新最优的值 z 1 ∗ z_1^* z1逆向移动被设置为一定数量迭代的tabu[tabu:禁忌]。维护两个禁忌列表: T A B U 1 ( i ) TABU_1(i) TABU1(i)表示再次从解决方案中删除站点 i i i T A B U 2 ( i ) TABU_2(i) TABU2(i)说明可以将站 i i i再次插入到解决方案中。所选解决方案设置为当前解决方案。启发式的算法描述在算法 1中给出。

  • tabu search的每轮迭代中包括3个操作,即移除Remove,插入Insert,交换Exchange,使得从一个解 x x x得到其邻域解 x ˉ \bar{x} xˉ,且这个解的评估值 z ( x ˉ ) < z ( x ) z(\bar{x})<z(x) z(xˉ)<z(x),显然小于的原因在于目标的最小化。
  • 逆向移动是不被允许的即设置为禁忌。那么如何表现呢?有两个禁忌列表表示。
    1. T A B U 1 ( i ) TABU_1(i) TABU1(i):中的站点 i i i已经被删除过一次,所以不要第二次删除
    2. T A B U 2 ( i ) TABU_2(i) TABU2(i):中的站点 i i i已经插入过一次了,所以不要第二次插入
算法1

在这里插入图片描述

  • 某解 x x x的过程中获得邻域集合 R , I , E \mathscr{R,I,E} R,I,E中的最优解 x ∗ x^* x,在这个过程中应用了移除操作、插入操作、交换操作,where 移除操作在开头执行的。值得注意的是,这个新解的值 z ( x ∗ ) < z ∗ , z ∗ z(x^*)<z^*,z^* z(x)<z,z可能是历史最优值。

3.3. The removal move 移除动作

邻域 R ( X ) \mathscr{R}(X) R(X)是通过应用移除移动获得的一组可行的邻居解决方案。每个移除动作都会移除站点 i h ∈ W ( x ) \ { 0 } i_h \in W(x) \backslash \{0\} ihW(x)\{0},where, W ( x ) W(x) W(x)是所定义的解决方案 x x x的路线序列的的站点集合通过前面举例可知,并不是所有站点都在路线上。有时,当一个站点从解决方案中移除时,所得到的解决方案可能不再可行,
因为变量的值是在这里插入图片描述,where d > h d>h d>h可能不再满足车辆容量约束和/或非负性约束。我们没有为结果解决方案重新计算每个站点的上车或下车数量,我们只修改数量是在这里插入图片描述在结果解决方案中有效地生成可行的邻居解决方案。每一个 i h i_h ih被删除,最多可以生成三个可行的邻居解决方案。这三个潜在邻居解决方案具有相同的路由顺序。第一个潜在邻居解决方案和解决方案 x x x之间的唯一区别是它们具有不同的值是 y i 0 P y_{i0}^P yi0P. 第二个(第三个)潜在邻域解和 x x x的区别在于它们有不同的值是在这里插入图片描述在这里插入图片描述在第3.3.1节 ,3.3.2节中描述。

3.3.1. Station i h i_h ih is a pick-up station

i h i_h ih是一个pick-up station,我们采取了3种方法调整最终方案中的pick-up/drop-off的数量,

Adjusting y i 0 P y_{i0}^P yi0P

i 0 i_0 i0是当前路径的第一个节点。且必是pick-up型的站点。
r r r表示为vehicle到站 i h i_h ih前的最小剩余容量。然后,通过以下方式获得 r = min ⁡ l = 0 , 1 , ⋯   , h − 1 { k − y i l , i l + 1 } r=\min_{l=0,1,\cdots,h-1}\{k-y_{i_l,i_{l+1}}\} r=minl=0,1,,h1{kyil,il+1}.可以调整数量 y i 0 P y_{i_0}^P yi0P.如果当前解同时满足以下三个条件,则在所得解中获得可行的邻居解:
r ≥ y i h P ; y i 0 P + y i h P ≤ k , 和 s i 0 0 − y i 0 P − y i h P ≥ 0 r \geq y_{ih}^P; y_{i0}^P+y_{ih}^P \leq k, 和 s_{i_0}^0-y_{i_0}^P-y_{ih}^P \geq 0 ryihP;yi0P+yihPk,si00yi0PyihP0.
三个条件确保 y i h P y_{ih}^P yihP在满足车辆容量限制的同时,可以在站点将额外的自行车装载到车辆上。如果三个条件都满足,那么邻域解中的站点取件数量设置为 y i 0 P + y i h P y_{i0}^P+y_{ih}^P yi0P+yihP, 与其他站关联的数量保持不变。

r = k − y 0 , 1 − y 1 , 2 − ⋯ − y h − 1 , h r=k-y_{0,1}-y_{1,2}-\cdots -y_{h-1,h} r=ky0,1y1,2yh1,h i 0 i_0 i0是当前路径的第一个节点。如果可以调整第一个,则需要满足3个条件:

  • r ≥ y i h P r \geq y_{ih}^P ryihP:vehicle的剩余库存大于等于 i h i_h ih可pick-up的bike数量,保证整条路径的可行性
  • y i 0 P + y i h P ≤ k y_{i0}^P+y_{ih}^P \leq k yi0P+yihPk:我们将 i h i_h ih的pick-up number添加到 i 0 i_0 i0上,要满足vehicle的容量约束
  • s i 0 0 − y i 0 P − y i h P ≥ 0 s_{i_0}^0-y_{i_0}^P-y_{ih}^P \geq 0 si00yi0PyihP0:站点 i 0 i_0 i0在VRP之前的数目为 s i 0 0 s_{i_0}^0 si00,新拾取的数目 ( y i 0 P + y i h P ) (y_{i_0}^P+y_{ih}^P) (yi0P+yihP)要x小于 s i 0 0 s_{i_0}^0 si00
Adjusting y i h − 1 P y_{i_h-1}^P yih1P or y i h − 1 D y_{i_h-1}^D yih1D

i h − 1 i_{h-1} ih1 i h i_h ih的前一个节点

  • i h − 1 i_{h-1} ih1是pick-up站点,如果满足条件 s i h − 1 0 − y i h − 1 P − y i h P ≥ 0 s_{i_{h-1}}^0-y_{i_{h-1}}^P-y_{ih}^P \geq 0 sih10yih1PyihP0,则调整 y i h − 1 P y_{i_h-1}^P yih1P, 由 y i h − 1 P + y i h P y_{i_{h-1}}^P+y_{ih}^P yih1P+yihP取代。

    s i h − 1 0 s_{i_{h-1}}^0 sih10:站点 i h − 1 i_{h-1} ih1在VRP之前的数目。
    s i h − 1 0 ≥ y i h − 1 P + y i h P s_{i_{h-1}}^0 \geq y_{i_{h-1}}^P+y_{ih}^P sih10yih1P+yihP:表明在站点 i h − 1 i_{h-1} ih1可拾取 i h − 1 和 i h i_{h-1} 和 i_h ih1ih两个站点的拾取量总和。
    y i h − 1 P → y i h − 1 P + y i h P y_{i_h-1}^P \to y_{i_{h-1}}^P+y_{ih}^P yih1Pyih1P+yihP:取代

  • i h − 1 i_{h-1} ih1是drop-off站点,如果满足条件 s i h − 1 0 + y i h − 1 D − y i h P ≤ c i h − 1 s_{i_{h-1}}^0+y_{i_{h-1}}^D-y_{i_h}^P \leq c_{i_{h-1}} sih10+yih1DyihPcih1(即在站点 i h − 1 i_{h-1} ih1drop-off少量的bikes数目) 且 y i h − 1 D > y i h P y_{i_{h-1}}^D >y_{i_h}^P yih1D>yihP,则邻居方案是可行的。如果是可行的,则设置 y i h − 1 D = y i h − 1 D − y i h P y_{i_{h-1}}^D=y_{i_{h-1}}^D-y_{i_h}^P yih1D=yih1DyihP

    要保证该站点的drop-off属性: y i h − 1 D > y i h P y_{i_{h-1}}^D >y_{i_h}^P yih1D>yihP
    c i h − 1 c_{i_{h-1}} cih1:站点 i h − 1 i_{h-1} ih1的容量。
    要保证站点的容量不超过: s i h − 1 0 + y i h − 1 D − y i h P ≤ c i h − 1 s_{i_{h-1}}^0+y_{i_{h-1}}^D-y_{i_h}^P \leq c_{i_{h-1}} sih10+yih1DyihPcih1
    y i h − 1 D → y i h − 1 D − y i h P y_{i_{h-1}}^D \to y_{i_{h-1}}^D-y_{i_h}^P yih1Dyih1DyihP:取代

    如果是后一种情况 y i h − 1 D = y i h P y_{i_{h-1}}^D=y_{i_h}^P yih1D=yihP,然后 i h − 1 i_{h-1} ih1也从路线中被淘汰,这并不理想多移除了一个站点

Adujusting y i h + 1 P y_{i_h+1}^P yih+1P or y i h + 1 D y_{i_h+1}^D yih+1D

i h + 1 i_{h+1} ih+1 i h i_h ih的后一个节点.同上,除了用 h + 1 h+1 h+1替换 h − 1 h-1 h1.

3.3.2. Station i h i_h ih is a drop-off station

i h i_h ih是一个drop-off station

Adjudting y i 0 P y_{i_0}^P yi0P

u u u是到达站点 i h i_h ih之前的vehicle的最小loading. 计算 u = min ⁡ l = 0 , 1 , 2 , ⋯   , h − 1 { y i l , i l + 1 } u=\min_{l=0,1,2,\cdots,h-1}\{y_{i_l,i_{l+1}}\} u=minl=0,1,2,,h1{yil,il+1}.如果当前的解决方案 x x x满足以下条件: u − y i h D ≥ 0 , y i 0 P − y i h D ≥ 0 u-y_{i_h}^D \geq 0, y_{i_0}^P-y_{i_h}^D \geq 0 uyihD0,yi0PyihD0,则可以导致可行的邻居解决方案。

保证路径的可行性: u − y i h D ≥ 0 u-y_{i_h}^D \geq 0 uyihD0
保证在起点 y i 0 P y_{i_0}^P yi0P可以装载少量的自行车,且保证起点的pick-up的性质: y i 0 P − y i h D ≥ 0 y_{i_0}^P-y_{i_h}^D \geq 0 yi0PyihD0
y i 0 P → y i 0 P − y i h D y_{i_0}^P \to y_{i_0}^P-y_{i_h}^D yi0Pyi0PyihD:取代。

Adjusting y i h − 1 P y_{i_{h-1}}^P yih1P
  • i h − 1 i_{h-1} ih1是一个drop-off station.如果当前解 x x x满足以下条件: s i h − 1 0 + y i h − 1 D + y i h D ≤ c i h − 1 s_{i_{h-1}}^0+y_{i_{h-1}}^D+y_{i_h}^D \leq c_{i_{h-1}} sih10+yih1D+yihDcih1,则可以导致可行的邻居解决方案。

    保证站点drop-off性。显然的。
    保证站点drop-off后的车辆不超过站点的容量: s i h − 1 0 + y i h − 1 D + y i h D ≤ c i h − 1 s_{i_{h-1}}^0+y_{i_{h-1}}^D+y_{i_h}^D \leq c_{i_{h-1}} sih10+yih1D+yihDcih1,
    y i h − 1 D → y i h − 1 D + y i h D y_{i_{h-1}}^D \to y_{i_{h-1}}^D+y_{i_h}^D yih1Dyih1D+yihD:取代

  • i h − 1 i_{h-1} ih1是一个pick-up station.如果当前解 x x x满足以下条件: s i h − 1 0 − y i h − 1 P + y i h D ≥ 0 , y i h − 1 P > y i h D s_{i_{h-1}}^0-y_{i_{h-1}}^P+y_{i_h}^D \geq 0,y_{i_{h-1}}^P>y_{i_h}^D sih10yih1P+yihD0,yih1P>yihD,则可以导致可行的邻居解决方案。

    要保证站点的pick-up性: y i h − 1 P > y i h D y_{i_{h-1}}^P>y_{i_h}^D yih1P>yihD
    要保证到达站点的车辆的loading要大于0: s i h − 1 0 − y i h − 1 P + y i h D ≥ 0 s_{i_{h-1}}^0-y_{i_{h-1}}^P+y_{i_h}^D \geq 0 sih10yih1P+yihD0
    y i h − 1 P → y i h − 1 P − y i h D y_{i_{h-1}}^P\to y_{i_{h-1}}^P-y_{i_h}^D yih1Pyih1PyihD:取代

    y i h − 1 P = y i h D y_{i_{h-1}}^P=y_{i_h}^D yih1P=yihD,站点 i h − 1 i_{h-1} ih1也会被淘汰消失。

Adjusting y i h + 1 P y_{i_{h+1}}^P yih+1P y i h + 1 D y_{i_{h+1}}^D yih+1D

同上,除了用 h + 1 h+1 h+1替换 h − 1 h-1 h1.

3.4. The insertion move

邻域 I ( x ) \mathscr{I}(x) I(x)由通过应用插入移动获得的所有可行的邻居解决方案组成。每个插入动作都涉及两个步骤。
☀️第一步:在当前解 x x x插入一个站点 i ∈ ( P ∪ D ) \ W ( x ) i\in (\mathscr{P}\cup \mathscr{D}) \backslash W(x) i(PD)\W(x) . 插入的站点可选择的集合

W ( x ) W(x) W(x):当前解 x x x路径上的站点集合。
P \mathscr{P} P:是pick-up属性的站点的集合。
D \mathscr{D} D:是drop-off属性的站点集合。

可以在每对节点之间添加站点 i h − 1 i_{h-1} ih1 i h i_h ih 在序列中。站点也可以加在站点之后,但下一个访问节点也必须是站点。站点插入的位置
☀️第二步:设置生成的解决方案中站点的数量,包括插入站点的数量。设置路径上包含的站点的最大数量
如果结果路线上的行程时间不违反约束条件(16)并且计算的新数量满足约束条件(5)、(6)、(7)、(8)、(13)、(14) ,(15) , (19) , (20),则插入移动是可行的 . 插入的约束条件
☀️为了节省计算时间,我们不重新计算结果解中每个站点的数量,而是将一些数量设置为等于当前解中的相应数量,计算 y i P y_i^P yiP或者 y i D y_i^D yiD, 并且只调整数量 y 0 P ; y i h − 1 P , y i h − 1 D ; y i h P , y i h S y_0^P;y_{i_{h-1}}^P,y_{i_{h-1}}^D;y_{i_h}^P,y_{i_h}^S y0P;yih1P,yih1D;yihP,yihS,以获得可行的邻居方案。用于修改数量的规则在第3.4.1 节、3.4.2 节中进行了描述.新解与旧解上的站点装卸载数量,只变化$i_0,i_{h-1},i_h$.

3.4.1. Station i i i is a pick-up station

在插入拾取站i后,我们考虑四种可能的方法来调整结果解决方案中的数量:

No need to adjust other stations’ quantities

在站点 i h − 1 i_{h-1} ih1 i h i_h ih之间插入站点 I I I,令 τ \tau τ表示剩余时间。 κ \kappa κ表示vehicle拜访过站点 i h − 1 i_{h-1} ih1后的最大load. 计算 τ = max ⁡ l = 0 , 1 , 2 , ⋯   , h − 1 { y i l , i l + 1 } \tau=\max_{l=0,1,2,\cdots,h-1}\{y_{i_l,i_{l+1}}\} τ=maxl=0,1,2,,h1{yil,il+1}, y i P = min ⁡ { ⌊ τ / ( U + L ) ⌋ , s i 0 , k − κ } y_i^P=\min\{\lfloor \tau/(U+L)\rfloor,s_i^0,k-\kappa \} yiP=min{⌊τ/(U+L)⌋,si0,kκ},这取决于剩余的时间remaining time left、车站可用的自行车数量he number of bikes available at the station和备用车辆容量the spare vehicle capacity。如果 y i P > 0 y_i^P>0 yiP>0,站点 I I I可以在 i h − 1 i_{h-1} ih1 i h i_h ih之间插入且不用改变任何站点的装卸载数量。

Adjusting y i 0 P y_{i_0}^P yi0P

因为我们目的是减少在depot pick-up的数量所以要保证 y i 0 P > 0 y_{i_0}^P>0 yi0P>0,且减少的数量是由站点 I I I的pick-up数量补足的(compensated),即 y i P = min ⁡ { s i 0 , u } y_i^P=\min\{s_i^0,u\} yiP=min{si0,u},where u = min ⁡ l = 0 , 1 , 2 , ⋯   , h − 1 { y i l , i l + 1 } u=\min_{l=0,1,2,\cdots,h-1}\{y_{i_l,i_{l+1}}\} u=minl=0,1,2,,h1{yil,il+1}。将 u u u包括在其中,是要保证整个路径中vehicle的loading>=0.否则过程中会出现vehicle的load为负的情况。如果 y i P > 0 y_i^P>0 yiP>0,则站点 i i i可以插入 i h − 1 i_{h-1} ih1 i h i_h ih之间,且 i i i的pick-up数量为 y i P y_i^P yiP.在 i 0 i_0 i0处的pick-up的数量更改为 y i 0 P = y i 0 P − y i P y_{i_0}^P=y_{i_0}^P-y_i^P yi0P=yi0PyiP

s i 0 s_i^0 si0:是站点 i i i在没有VRP之前的bike的数量;要保证起点pick-up性质。
u u u是到达 i i i之前的vehicle的最小load量;要保证整个路径中vehicle的load>0.
起点的pick-up的更改: y i 0 P → y i 0 P − y i P y_{i_0}^P\to y_{i_0}^P-y_i^P yi0Pyi0PyiP

Adjusting y i h − 1 P y_{i_{h-1}}^P yih1P or y i h − 1 D y_{i_{h-1}}^D yih1D

这里有两种相互排斥的情况.

  1. 如果 i h − 1 i_{h-1} ih1是一个pick-up站点:令 i h − 1 i_{h-1} ih1的pick-up的数量减少后剩余的部分由 i h i_h ih处pick-up数量。生成的解的在站点 i i i处的pick-up数量为:
    a r g m i n v = 0 , 1 , ⋯   , min ⁡ { s i 0 , y i h − 1 P } f i h − 1 ( s i h − 1 0 − y i h − 1 P + v ) + f i ( s i 0 − v ) argmin_{v=0,1,\cdots,\min\{s_i^0,y_{i_{h-1}}^P\}} f_{i_{h-1}}(s^0_{i_{h-1}}-y^P_{i_{h-1}}+v)+f_i(s^0_i-v) argminv=0,1,,min{si0,yih1P}fih1(sih10yih1P+v)+fi(si0v)
    如果 y i P > 0 y^P_i>0 yiP>0 y i h − 1 P > y i P y^P_{i_{h-1}}>y^P_i yih1P>yiP则插入可行的。且 y i P = y i P − y i P y^P_i=y^P_i-y^P_i yiP=yiPyiP.

    f i h − 1 f_{i_{h-1}} fih1表示凸性的惩罚函数。
    0 < v < y i h − 1 P 0<v<y_{i_{h-1}}^P 0<v<yih1P表示在站点 i i i可pick-up得bike数量。至于选择哪个值,要看在站点 i h − 1 i_{h-1} ih1和站点 i i i处的惩罚函数之和的值。

  2. 如果 i h − 1 i_{h-1} ih1是一个drop-off站点:在站点 I I I处每pick-up一辆车,则在站点 i h − 1 i_{h-1} ih1处额外的多drop-off一辆车。所以, y i P = min ⁡ { y i h − 1 i h , c i h − 1 − s i h − 1 0 − y i h − 1 D , s i 0 , ⌊ τ / ( U + L ) ⌋ } y^P_i=\min\{y_{i_{h-1}i_h},c_{i_{h-1}}-s^0_{i_{h-1}}-y^D_{i_{h-1}},s^0_i,\lfloor \tau/(U+L)\rfloor \} yiP=min{yih1ih,cih1sih10yih1D,si0,τ/(U+L)⌋}.如果 y i P > 0 y^P_i>0 yiP>0意味着可以在站点 i h − 1 i_{h-1} ih1多drop-off y i P y^P_i yiP辆车。这个插入是可行的。在这种情况下, y i h − 1 D = y i h − 1 D + y i P y^D_{i_{h-1}}=y^D_{i_{h-1}}+y^P_i yih1D=yih1D+yiP

    y i h − 1 i h y_{i_{h-1}i_h} yih1ih:表示vehicle从站点 i h − 1 i_{h-1} ih1到达站点 i h i_h ih所携带的bike数量。
    c i h − 1 c_{i_{h-1}} cih1:表示站点 i h − 1 i_{h-1} ih1的容量; s i h − 1 0 s^0_{i_{h-1}} sih10:站点 i h − 1 i_{h-1} ih1没有VRP之前的数量; y i h − 1 D y^D_{i_{h-1}} yih1D:表示站点 i h − 1 i_{h-1} ih1的drop-off的数量。
    c i h − 1 − s i h − 1 0 − y i h − 1 D c_{i_{h-1}}-s^0_{i_{h-1}}-y^D_{i_{h-1}} cih1sih10yih1D:表示站点 i h − 1 i_{h-1} ih1可额外多drop-off的bike数量
    y i P y^P_i yiP的数量受:vehichle携带的bike数量, i h − 1 i_{h-1} ih1可额外多drop-off的bike数量, i i i的VRP之前的bike数量,剩余时间可装卸的bike数量 的限制。

3.4.2. Station i i i is a drop-off station

在插入下客站i后,我们考虑了五种可能的方法来调整结果解决方案中的数量:

请注意,术语车辆的“行程”是指车辆离开站点,访问一个或多个站点,然后返回站点。车辆可能在一条路线上进行多次旅行,因此如果需要,车辆可以多次访问站点。

3.5. The exchange move 交换行动

邻域 E ( x ) \mathscr{E}(x) E(x)是解决方案 x x x通过交换获得的所有可行的邻居解决方案的集合。每个交换动作的步骤如下:
☀️在当前解 x x x的路径序列的第 h h h个位置,用站点 I ∈ P \ W ( x ) I\in \mathscr{P}\backslash W(x) IP\W(x)去替换站点 i h ∈ W ( x ) ∩ P i_h \in W(x) \cap \mathscr{P} ihW(x)P.并设置在站点 i i i的pick-up的数量值。如果 s i 0 − y i h P ≥ 0 s^0_i-y^P_{i_h} \geq 0 si0yihP0且行程时间不违反约束(16)的话,那么这个交换是可行的。

i i i是pick-up型的站点且不在当前解 x x x的路径的站点集合中。
s i 0 − y i h P ≥ 0 s^0_i-y^P_{i_h} \geq 0 si0yihP0,要保证在新站点 i i i可pick-up在站点 i h i_h ih的pick-up的数量值 y i h P y^P_{i_h} yihP

☀️类似的,在当前解 x x x的路径序列的第 h h h个位置,用站点 I ∈ D \ W ( x ) I\in \mathscr{D}\backslash W(x) ID\W(x)去替换站点 i h ∈ W ( x ) ∩ D i_h \in W(x) \cap \mathscr{D} ihW(x)D.并设置在站点 i i i的drop-off的数量值。如果 s i 0 + y i h D ≤ c i s^0_i+y^D_{i_h} \leq c_i si0+yihDci且约束(16)是满足的,则交换是可行的。

i i i是drop-off型的站点且不在当前解 x x x的路径的站点集合中。
s i 0 + y i h D ≤ c i s^0_i+y^D_{i_h} \leq c_i si0+yihDci,要保证新站点 i i i要有足够的空间满足drop-off y i h D y^D_{i_h} yihD辆车的要求。

两两交换是最简单的2-opt,见介绍《Opt算法》。常见的有2-opt,3-opt,Or-opt,k-opt算法。

3.6. Tabu tenures and aspiration criterion 禁忌任期和愿望标准

在这里插入图片描述

3.7. Intensification and diversification procedures 集约化和多样化程序

在禁忌搜索之后,将以下强化和多样化程序应用于禁忌搜索的最佳解决方案。

Adjusting the quantities

有时可以通过重新调整站之间的分配数量(以启发式方式)来改进解决方案。在这个过程中,我们有四种情况。
☀️在前两种情况下,我们看一对站 i m i_m im i h i_h ih(同一类型)一次,并检查分配数量的一个/多个单元是否可以从一个站点转移到另一个站点。假设都是pick-up,可检查是否可从m 额外多pick 1bike or many bikes from h
☀️在第三种情况下,我们检查当通过增加其他站点(同drop-off型)的drop-off的数量时在拜访depot前的站点的drop-off数量是否可被减少depot 前必为 drop-off 型站点,检测其数量可否被减少

☀️最后,在第四种情况下,我们检车 depot后的站点的pick-up的数量是否可以通过增加(减少)其他站点(同pick-up型)的pick-up数量的方式减少(增加)。

  1. 如果站点 i m i_m im和站点 i h i_h ih是pick-up型的站点,且有 m < h m<h m<h:这两个站点的pick-up的bike数量即可以通过向前或向后的方法调整。向前(向后)调整的过程The forward (backward) adjustment procedure要求 来自于 i m i_m im站点( i h i_h ih)某些自行车 可以在站点 i h i_h ih( i m i_m im)取代pick-up.向前调整的方法,我们可以计算适应度:
    ρ = a r g m i n v = 0 , 1 , , ⋯   , m i n { y i m P , s i h 0 − y i h P } f i m ( s i m 0 − y i m P + v ) + f i h ( s i h 0 − y i h P − v ) \rho= argmin_{v=0,1,,\cdots,min\{y^P_{i_m}, s^0_{i_h}-y^P_{i_h}\}} f_{i_m}(s^0_{i_m}-y^P_{i_m}+v)+f_{i_h}(s^0_{i_h}-y^P_{i_h}-v) ρ=argminv=0,1,,,min{yimP,sih0yihP}fim(sim0yimP+v)+fih(sih0yihPv),
    受约束 y i l , i l + 1 − v ≥ 0 , l = m + 1 , ⋯   , h − 1 y_{i_l,i_{l+1}}-v \geq 0,l=m+1,\cdots,h-1 yil,il+1v0,l=m+1,,h1.因此有 y i m P = y i m P + ρ , y i h P = y i h P − ρ y^P_{i_m}=y^P_{i_m}+\rho,y^P_{i_h}=y^P_{i_h}-\rho yimP=yimP+ρ,yihP=yihPρ.
    同理,向后调整类似。

    f i m ( s i m 0 − y i m P + v ) f_{i_m}(s^0_{i_m}-y^P_{i_m}+v) fim(sim0yimP+v):站点 i m i_m im的pick-up增加 v v v后的惩罚函数值
    f i h ( s i h 0 − y i h P − v ) f_{i_h}(s^0_{i_h}-y^P_{i_h}-v) fih(sih0yihPv):站点 i h i_h ih的pick-up减少 v v v后的惩罚函数值
    ρ \rho ρ:是惩罚函数的和的最小的变化量。也就是说使得这两个站点局部和达到最优。

在这里插入图片描述
在这里插入图片描述
请注意,通过调整取件/卸件数量,一个或多个数量可能会减少为零。如果它们等于零,则从路由序列中删除相应的站。

2-opt

这个局部搜索过程从解决方案中删除了两条边并添加了两条新边,因此它仍然是一次旅行 ( Lin, 1965 [Computer solutions of the traveling salesman problem])。目标是减少行程长度。该过程忽略了拾取或丢弃数量,并采用最佳改进 (BI) 策略

2-opt搜索算法由Lin S(1965)提的一种路径内改进方法。该方法通过改变一条路径中顾客的排序减少路径距离。如果该路径的成本减少,则改进的路径被保留。否则,路径返回修改前的情形。
在这里插入图片描述
注:可以看到,原来i+1到j的部分,被反过来了,变成了j到i+1。
举例:一个路径序列例如:1(i) /2 3 4 5(j)/ 6 7

2-OPT作用:随机是其中的两个点换位置(注意保留原有链接),例如:2和5换位置,要保证3还是和2挨着,序列会变成1 5 4 3 2 6 7
优化:序列变动之后,与原序列,对比路径和,如果路径和变短则更新路径
循环:重复上述步骤,设置循环次数,次数达到就跳出循环。

intra-relocation

这种局部搜索程序也是为了减少行程长度 tour-length(并忽略上下车数量),方法是将车站从路线序列中的位置重新定位,并将其重新插入其他位置,直到无法改善行程长度。

这里的意思可能是,忽略上下车的数量,只根据站点的(坐标)位置来在路径序列中重新排序。直到总得行程路径长度无法被改善。
举例:在这里插入图片描述

Removing a station

此过程从解决方案x中删除站点i。它选择目标函数(1)的值减少最少的站点。选择标准是
在这里插入图片描述

如果站点 i ∈ P i \in \mathscr{P} iP是pick-up型的站点,站点 i i i没有拜访前的车辆数目为 s i 0 s^0_i si0, f ( s i 0 ) f(s^0_i) f(si0)为惩罚值。 f ( s i 0 − y i P ) f(s^0_i-y_i^P) f(si0yiP)是拜访后的车辆数目的惩罚值。两个惩罚值相减。选择路径中的所有站点 w ( x ) w(x) w(x)中惩罚值变化最小的节点。也就是说不拜访该站点的话,其惩罚值变化不大,也就是拜访前后的作用不明显。
值得注意的是,这里没有绝对值,也就是说选择标准与惩罚函数有一定关系的。

inserting a station

这与第3.4节中描述的相同,其中最佳解决方案是从邻域中选择的,只是在此过程中不使用禁忌列表


应用2-opt、内部搬迁the intra-relocation和撤站(移除站点)程序 the removal-of-station procedures后,解决方案通常在pick-up/drop-off数量方面不可行。在应用 AdjustQuantities 过程之前,解决方案必须是可行的。因此,该解决方案将通过将所有站点的pick-up/drop-off数量初始化为零,然后分配每个站点的pick-up/drop-off数量以最小数量的自行车进行修复repair,以便该解决方案变得可行. 然后,选择1个pick-up站和1个drop-off站,将其pick-up和drop-off数量最多增加2个,以最大限度地reduction (接近?)目标值。站点对 ( p , d ) (p,d) (p,d)的确定和pick-up/drop-off的bike数量的增量 r r r由下面公式确定。

在这里插入图片描述

站点 i i i是当前解 x x x的路径中的pick-up的点;站点 j j j是当前解 x x x的路径中drop-off的点。
值得注意的是, ( ρ , d ) (\rho,d) (ρ,d)是一个修复的过程
r = min ⁡ { s i 0 − y i P , c j − s j 0 − y j D , ⌊ τ / ( U + L ) ⌋ , 2 } r=\min\{s^0_i-y^P_i, c_j-s^0_j-y^D_j, \lfloor \tau/(U+L)\rfloor,2\} r=min{si0yiP,cjsj0yjD,τ/(U+L)⌋,2}:站点 i i iVRP后的bike数量,站点 j j jVRP后剩余的bike数量空间,剩余时间的装卸的bike数目,2.
g 1 = f i ( s i 0 − y i P ) + f j ( s j 0 + y j D ) g1=f_i(s^0_i-y_i^P)+f_j(s_j^0+y_j^D) g1=fi(si0yiP)+fj(sj0+yjD):当前解的站点 i i i和站点 j j j在VRP后的惩罚函数值。
g 2 = f i ( s i 0 − y i P − r ) + f j ( s j 0 + y j D + r ) g2=f_i(s^0_i-y_i^P-r)+f_j(s_j^0+y_j^D+r) g2=fi(si0yiPr)+fj(sj0+yjD+r):在 i i i站点多pick-up r r r辆bike,然后在站点 j j j多drop-off r r r辆bike后的得到新的邻域解。新解中的站点 i i i和站点 j j j在VRP后的惩罚函数值。
g 1 − g 2 g1-g2 g1g2:解 x x x和其邻域解的惩罚值函数的增量(减少量)变化
a r g m a x ( i , j ) { g 1 ( i , j ) − g 2 ( i , j ) } argmax_{(i,j)} \{g1(i,j)-g2(i,j)\} argmax(i,j){g1(i,j)g2(i,j)}:在所有的节点对 ( i , j ) (i,j) (i,j)中选择增量变化最大的一对。
假设 P = { 2 , 4 } , D = { 1 , 3 , 5 } \mathscr{P}=\{2,4\},\mathscr{D}=\{1,3,5\} P={2,4},D={1,3,5}.则共有节点对 2 × 3 = 6 2\times 3=6 2×3=6个。

受容量和负载限制。之后,更新pick-up和drop-off数量( y p P = y p P + r y_p^P=y_p^P+r ypP=ypP+r y d D = y d D + r y_d^D=y_d^D+r ydD=ydD+r) 并重复该过程直到 τ τ τ不允许进一步增加任何站点的上下车数量或目标值不能降低。

算法2

在这里插入图片描述

  • 值得注意的是,在2-opt, intra-relocation都忽略了pick-up/drop-off的属性和数量,每完成一个操作,则执行一次数量调整。这两个操作是对tour-length的调整,而站点的数目不发生变化。也就是说这次的变动会比原来的扰动程序变化的更大。会突破当前邻域的限制。
  • InsertStation和RemoveStation都是站点的数量具有变换的。且第一部分插入在前移除在后,第二部分是移除在前插入在后。
  • AdujustQuantities和Repair在本质上都是对站点的pick-up/drop-off的数量进行调整。AQ其实是发生在少量的节点之间的数量调整其他节点的数量值不变。Rp是初始化将站点的pick-up/drop-off数量设置为0,通过逐步增加增量 r r r(求解见公式)的方法逐步(最多增加2)逼近最佳的数量。

算法 2给出了扰动过程perturbation procedure,分为两部分;第一部分专门用于在前面的禁忌搜索tabu search中何时获得了整体最优解noverall best solution,另一部分用于没有获得整体最优解的情况。这两部分之间存在一些差异。
☀️首先,上述程序的应用顺序略有不同。在第一部分中,站点的删除算法 2的末尾执行,而在第二部分中,它在开头执行。这是因为在第二部分禁忌搜索中一直无法生成比当前最优解更好的解 x ∗ x^* x. 因此,因此,该算法一开始就删除了 ϕ \phi ϕ个站点,以使搜索多样化,希望进入解空间的其他一些更有前景的区域。

☀️第二,第一部分2-opt中使用的策略是 BI 策略。在第二部分中,也使用了 BI 策略,但有一些例外。如果 BI 策略导致搬迁(重定位)站点 i 1 ∈ P i_1 \in \mathscr{P} i1P到路线的其他地方去了。站点 i 2 ∈ D i_2 \in \mathscr{D} i2D,则此更改未实施.则实施下一个最佳选择。这是因为如果第一个访问的pick-up站被重新定位,目标值通常会恶化,因为它的取货量很可能是在depot进行取货(这对目标函数值没有任何贡献)。

  • i 1 i_1 i1是第一个站点且具有pick-up属性; i 2 i_2 i2是第二个站点且具有drop-off属性
  • 如果Relocate操作使得站点 i 1 i_1 i1搬迁到其他位置去了而站点 i 2 i_2 i2没有变化的话。则直接执行下一个relocate操作。或者说当前这个操作没有任何意义。
  • 假使完成这个操作,在AQ阶段进行pick-up的bike数量补齐的 时候,会让depot点进行补齐。这对目标函数没有任何贡献。

经过2-opt和IntraRelocation操作后,route的lenth会缩短,route中通常会有一个或者多个空间(位置)可以插入节点。我们的初步实验发现,在路线中最多插入五个站点是一个不错的选择见算法2中for5次的循环

如果任何解提升了 z ˘ \breve{z} z˘,这个解被保存为 x ˘ ∗ \breve{x}^* x˘,且 z ¨ \ddot{z} z¨被更新了。最优解 x ˘ ∗ \breve{x}^* x˘和最终解 x ^ \hat{x} x^都是从Perturbation程序中获得的。

3.8. The overall algorithm 整体算法

为了进一步提升解,tabu search 过程将嵌入到迭代框架(见算法3)中,where 几个强化/多样化机制( intensification/diversification mechanisms)(见3.7节)也被应用到tabu search的获取解的过程中。运行算法3直到无法实现改进或运行至少 β β β 迭代.初步的计算实验表明, K = 1 K=1 K=1个和 w < β w<β w<β(with β ⩾ 5 β⩾5 β5) 被排除在外,算法有时可能会在仅两到三次迭代后终止,从而导致较差的解决方案。当算法运行至少五次迭代时,解决方案明显更好。

当最终解 x ˘ \breve{x} x˘来自于Pertubation程序而不是最优解 x ′ x' x的时候,算法继续。计算实验还表明,从多元化角度来看重新从 x ˘ \breve{x} x˘搜索是更有益的。然而,这很难在搜索空间中留下低谷(特地是深的谷)[valleys:山谷],因为在启发式的每轮迭代中的变化都很小.

算法3

在这里插入图片描述

算法1=TabuSearch,算法2=Perturbation,算法3=IteratedTabuSearch

4 . Computational experiments 计算实验

启发式算法是用 C++ 编写的,所有计算实验都是在配备英特尔酷睿 i5-2520M CPU @ 2.5 GHz 的戴尔笔记本电脑上进行的 。本研究使用三组实例进行实验。套装包括:

set 1

它包含 Raviv 等人在研究中使用的巴黎实例(最多 100 个站点)。[(2013Static repositioning in a bike-sharing system: Models and solution approaches-els])。他们展示了 30 和 60 个站点以及最多两辆车的结果。然而,在本文中,使用了不同数量的站点(30-100 个站点)的实例。车辆容量固定为 20。此集合中共有 12 个实例。

set 2

该集合包含 100-400 个站的实例,步长为 25。较小的实例是较大实例的子集。不同站点的位置取自Hernández-Pérez 和 Salazar-González (2004b)【Heuristics for the one-commodity pickup-and-delivery traveling salesman problem-ACM]研究的 1-PDTSP 基准实例。正如Raviv et al.。(2013)[Static repositioning in a bike-sharing system: Models and solution approaches-同上],使用了以下设置。
(a) 使用曼哈顿距离是因为它们比欧几里德距离更现实(例如,Kent 等人,2006 年[Evaluating the usefulness of functional distance measures when calibrating journey-to-crime distance decay functions-els])。
(b) 考虑了两次重新定位时间(以秒为单位):T=9000和T=18000.
(c ) 上下一辆自行车的时间为 60 秒。
(d) 其他输入数据(即 s i 0 s^0_i si0, c i c_i ci, 和 f i ( ⋅ ) f_i(·) fi()) 取自他们的实例。
由于他们的数据并未涵盖所有 400 个站点,因此在必要时复制了原始数据。每个实例中的车辆容量从 10 到 40 不等,步长为 10。该集合包含 104 个实例。

set3

该集合包含 200 到 400 个站点的实例。站点的位置也取自 1-PDTSP 的基准实例. 车辆容量为20辆。重新定位时间和装卸时间同上。其他输入数据是随机生成的。这个集合总共包含 30 个实例


第一组实例包含在实验中,因为我们的问题与Raviv 等人研究的问题密切相关。(2013)。出于同样的原因,他们的求解方法(即CPLEX[ csdn-《运筹系列20:IBM的cplex算法包》])被用于比较。Raviv 等人使用的实例。(2013)包含 30-60 个站点,我们认为实例的大小不能证明使用启发式方法是合理的。因此,实验也在更大的实例上进行,即具有 100-400 个站点的第二和第三组实例。

经过一些初步实验,通过设置 K = 1 , β = 5 , γ = 200 K=1,\beta=5,\gamma =200 K=1,β=5,γ=200可以获得启发式结果。对于短期规划的情况(即, T = 9000 T=9000 T=9000)参数 ϕ \phi ϕ被设置为 [ 0.5 η ] [0.5 \eta] [0.5η],对于长期规划的情况(即, T = 18000 T=18000 T=18000)参数设置为 [ 0.3 η ] [0.3\eta] [0.3η],where η \eta η是vehicle拜访站点的数目决定的。

从起码是获得结果与从CPLEX12.4在默认设置和最大运行时间为2小时的情况下获得结果作比较。对于每个案例,CPLEX返回一个下界,一个上界( z U B z^{UB} zUB),和一个解 x ∗ x^* x(如果在这2小时内实现了可行性)。原则上,原则上,如果 CPLEX 在 2 小时限制之前终止,则意味着 x ∗ x^* x是最优解并且 z ( x ∗ ) = z U B z(x^*)=z^{UB} z(x)=zUB. 然而,对于本研究中进行的实验,这可能并不总是正确的,因为已经证实在某些情况下,这成立: z ( x ∗ ) < z U B z(x^*)<z^{UB} z(x)<zUB. z ( x ∗ ) z(x^*) z(x) z U B z^{UB} zUB之间的差异可能是由于CPLEX中的而一些内部的舍入错误。对于所有最优性已经被CPLEX证明的实例, z ∗ z^* z取代了 z U B z^{UB} zUB(是 z ∗ z^* z而不是 z U B z^{UB} zUB)

表 2和表 3显示了对第一组实例进行的实验的结果,其中 CPLEX 证明了其中大多数实例的最优性。
Opt 表示解 x ∗ x^* x的真实最优目标值,即 z ( x ∗ ) z(x^*) z(x),Heuristic 表示启发式的结果。
Gap 表示与 Opt 的结果的偏差(in %)。
CPU 是 CPLEX 或启发式的运行时间(以秒为单位)。
ψ = ∑ i ∈ N y i D \psi =\sum_{i\in N}y_i^D ψ=iNyiD φ = ∑ i ∈ N y i P \varphi =\sum_{i\in N}y_i^P φ=iNyiP分别表示拜访过的所有站点的pick up的bike数量和drop off的bike的数量。
Done是工作完成的百分比,且是预期短缺的减少百分比。这是使用Raviv 等人(2013)中所述的公式计算得出的。
最后, ζ = ∑ i , j ∈ N 0 , i ≠ j t i j x i j \zeta =\sum_{i,j\in N_0,i\neq j}t_{ij}x_{ij} ζ=i,jN0,i=jtijxij是以秒为单位的总行程时间。

从表 2和表 3中,我们观察到 CPLEX 在 2 小时限制内找到了组 1 中几乎所有实例的最优解。我们的启发式获得的结果平均与最优值相差 0.41%,平均计算时间为 0.488 秒。我们的启发式算法为一个实例找到了最优解(最优目标值在表 2和表 3中以粗体显示),并改进了另一个实例的边界(在表 2和表 3中给出了负间隙值)。当让启发式运行更长的时间(例如,β=30),然后平均偏差减少到 0.187%,计算时间略有增加(平均 多 2 秒)。与 CPLEX 的平均运行时间(即 1531.748 秒)相比,我们的启发式算法可以有效地获得非常好的上限。

表2、表3也表明,运行时间越长,访问的站数越大。此外,我们观察到访问的站点数量远少于网络中的站点数量,因为车辆容量有限并且重新定位时间不足以让所有站点都被访问。

因为我们的问题不同于Raviv 等人。(2013)在我们明确定义接送站并且不考虑目标函数中的运营成本的意义上,他们的结果可能与我们的结果不同,如表2,表3所示. 原则上,如果没有由于 CPLEX 造成的舍入误差和总操作成本相对于总惩罚成本的权重为零,他们所获得的问题的最优不足可能会比我们的更好,因为我们的解决方案集较小预先确定接送站的结果。同时,正如他们的结果一样,在所有访问过的站点下车的自行车总数可能比在这些站点上车的自行车总数要多。这意味着一些在某些访问过的站点下车的自行车实际上是从停车场取走的。

表2和表3

在这里插入图片描述

表4、表5、表6、表7、表8、表9、表10、表11展示对第二组实例进行的计算实验的结果。LB 和 UB 分别代表从 CPLEX 获得的下限和上限。CPLEX 无法找到第二组 104 个实例中任何一个的最优解。在 2 小时的限制内,不到一半的实例实现了可行性。与从我们的启发式获得的结果相比,UB 通常不太好,启发式在超过一半的情况下(通过 CPLEX 实现可行性)使用更少的计算时间生成质量更好的解决方案。我们的启发式算法对来自 CPLEX 的 UB 获得的结果的总体改进(对于实现可行性的 45 个实例)是 0.456%。

表4,5,6,7,8,9,19,11

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

从这些表中可以看出,启发式算法速度非常快,并且可以生成高质量的解决方案。对于较短的计划范围实例,平均差距(与 LBs 的差距)为 0.687%,对于较长范围的实例,平均差距为 1.261%。总体平均偏差为 0.974%。根据总结(即表 12),似乎启发式在规划车辆路线和确定短规划范围实例的上/下车数量方面更好。通过运行更长时间的启发式可以进一步改善结果(例如,β=30,表 13 ) 其中整体偏差减少到 0.87%

正如预期的那样,启发式的运行时间随着网络的大小和重新定位时间的增加而增加,因为解决方案空间更大。然而,如表 12所示,运行时间不会随着车辆容量的增加而减少。运行时间随着车辆容量的增加而减少,但最终会随着它增加。这可能是因为车辆容量的增加减少了不可行解决方案的机会,这只有在车辆容量很小的情况下才有用。但是,当车辆容量越大时,可行解空间也越大。因此,车辆容量的进一步增加会导致更长的计算时间。这可以进一步解释为启发式在固定次数的迭代后没有终止,而是在K之后终止连续迭代没有改进。因此,启发式所需的迭代次数可能因实例而异,从而导致不同的计算时间

表12,13

在这里插入图片描述
表 14显示了第二组中每个实例的不平衡程度。Ideal 表示处于平衡状态的实例的目标值,而 Initial 表示实例在重新定位之前的目标值。每个实例最初都是高度不平衡的,根据表 4、表 5、表 6、表 7、表 8、表 9、表 10、表 11, 只能覆盖一小部分不平衡。特别是,网络越大,可以覆盖的不平衡部分就越小。这是因为在车辆容量和运营时间的限制下,车辆只能访问非常有限的站点以减少其短缺。因此,即使网络更大,访问的站点数量和取走的自行车总数也大致相同。因此,对于较大的网络,要覆盖的不平衡部分较小。表4、表5、表6、表7、表8、表9、表10、表11还表明,当营业时间(或车辆容量)减少时,要弥补的不平衡部分会减少,因为访问的站点数量(或访问站点上车或下车的自行车数量)减少了一般的。

表14

在这里插入图片描述
对于第三组实例,CPLEX 无法找到 30 个实例中任何一个的最优解。在 2 小时的 CPU 时间限制内实现了四个实例的可行性(请参阅表 15和表 16)。我们的启发式方法设法找到了比 CPLEX 提供的边界更好的边界。短期计划范围实例和长期计划范围实例的平均差距(来自 LB)分别为 2.927% 和 3.878%。当启发式运行时间稍长时(例如,β=30).

表15,16

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

5. Conclusion

在本文中,我们提出了一种迭代禁忌搜索启发式方法来解决静态自行车重新定位问题。所实现的启发式利用专门的邻域结构和扰动来获得搜索的多样化。对156个实例进行了实验。计算结果表明,这种简单的迭代禁忌搜索启发式算法使用非常短的计算时间产生高质量的解决方案。

本文对文献的贡献包括以下内容。
(1) 本文对现有的自行车重新定位问题进行了修改,以提高其真实性并减少求解空间。
(2) 本文开发了一种高效新颖的启发式方法来获得高质量的解决方案,以解决所提出的问题。
(3) 所开发的特定算子也可以被纳入其他启发式方法中,以解决相同的重新定位问题或具有不同目标函数的其他重新定位问题。

在未来,我们将我们的方法扩展到解决多辆车的静态重新定位问题。我们还将开发一种有效的启发式方法,允许一个站点被访问不止一次。

参考资料:
csdn-《运筹系列20:IBM的cplex算法包》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值