一种基于可变邻域下降混合算法的轮渡服务网络优化方法与流程

文档序号:21978066发布日期:2020-08-25 19:11阅读:277来源:国知局
一种基于可变邻域下降混合算法的轮渡服务网络优化方法与流程

本发明涉及海岛交通优化技术领域,特别涉及一种基于可变邻域下降混合算法的轮渡服务网络优化方法。



背景技术:

对游客和居住在离岛上的居民而言,轮渡是至关重要、有时甚至是唯一的用于穿行于群岛间的交通工具。作为公共交通的重要组成部分,轮渡网络设计问题(fndp)已被广泛研究了数十年。

正如karapetyan和punnen(2015)所指出的那样,即使只有四艘轮渡和七个港口的小规模问题,其最优化设计也被证明具有很大的挑战性。lai和lo(2004)研究了一个轮渡的调度问题,并得出了最优的船队规模、渡轮路线和时间表。在an和lo(2014)中,随机需求被纳入渡轮服务设计中,并且开发了一种基于服务可靠性且具有用户均衡流的建模方式,其中考虑了两种类型的服务(即常规服务和临时服务)。最近,bell等(2019)提出了一种熵最大化方法来解决fndp问题,其中采用了熵最大化和效用最大化之间的等价关系,从乘客的角度寻找最佳渡轮路线。

以上学者都对海岛轮渡网络提出了相应的优化方法,但其都是适用于乘客和轮渡信息规模较小的情况。随着海岛旅行业的不断发展,乘客和轮渡信息规模越来越大,这些算法都不再适用或者表现出低况性能。因此,面对海岛运输问题中出现的数据暴增的这一困境,迫切需要优化当前的渡轮服务网络。



技术实现要素:

本发明的第一目的在于克服现有技术的缺点与不足,提供一种基于可变邻域下降混合算法的轮渡服务网络优化方法,该方法可以为乘客提供更优化的渡轮服务方案,优化渡轮服务网络,适用于乘客和轮渡信息规模较大的轮渡运输。

本发明的第二目的在于提供一种存储介质。

本发明的第三目的在于提供一种计算设备。

本发明的第一目的通过下述技术方案实现:一种基于可变邻域下降混合算法的轮渡服务网络优化方法,步骤如下:

s1、针对轮渡服务网络,构建fndp-sa的整数规划模型;

s2、对于步骤s1构建的fndp-sa的整数规划模型,先基于给定的航段,采用第一启发式算法生成可行的轮渡时间表;然后采用第二启发式算法,根据轮渡时间表生成初始解,初始解即是为乘客提供渡轮服务的初始解决方案;

s3、设计可变邻域下降算法使用的一系列邻域;

s4、为避免搜索陷入局部最优状态,基于禁忌搜索ts设计接收准则;

s5、采用基于可变邻域下降算法迭代地对初始解进行改善:在每一次迭代中,基于接收准则,搜索邻域内是否有更优的解决方案,直至搜索过程终止,以此完成对初始解决方案的优化。

优选的,在步骤s1中,通过合并泊位限制和容量分配策略,得出fndp-sa的集合划分公式,即整数规划模型:

subjectto:

其中,f为轮渡,f为轮渡集合;s为轮渡时间表,s为基于候选航段生成的所有轮渡时间表的集合;为决策变量,如果将时间表s分配给渡轮f,则等于1,否则,等于0;为轮船f执行的时刻表s的运营成本;

cf为轮渡f的容量;d为乘客的旅行需求,对于每个d,其出发和目的地港口以及所需的出发时间都是已知的,d为旅行需求集合;r为航段,r为候选航段,rs为时间表s中的候选航段;md为有需求d的乘客人数;是指航段r中可用于满足需求d的最大比率;

τ为时间周期,t为时间周期集合;k为港口,p为港口集合;bk为港口k的泊位数量;等于1或者等于0,表示在τ时期内,时间表s占用了港口k的泊位;表示在τ时期内,时间表s没有占用港口k的泊位;

表达式(1)为目标函数,表示最小化所有已执行轮渡时间表的总运营成本;表达式(2)~(4)为约束条件,表达式(2)确保在时间范围内最多可以将一个渡轮分配给一个时间表;表达式(3)要求在容量分配策略下必须满足所有要求;表达式(4)确保在任何时间周期内每个港口上的占用泊位数量都不会超过可用泊位数量;决策变量都是二进制的,如表达式(5)中所定义。

优选的,在步骤s2中,基于给定的航段,采用第一启发式算法生成可行的轮渡时间表,过程如下:

s211、设可行的轮渡时间表的集合可供选择的随机航段集合r*=r;令max表示未能将航段扩展到给定时间表的连续迭代的最大次数;

s212、判断r*是否为若是,则结束算法;若否,则从中选择一随机航段r,r∈r*,r*=r*\{r},每个航段仅用作一次初始航段;

s213、判断该随机航段r的出发港口αr是否属于出发港口集合π,p为港口集合,若是,则创建一个新的轮渡时间表s={r},一个轮渡时间表是由一系列航段前后衔接而成的航段序列,s={r}表示时间表中先选择一个航段r作为该航段序列中的第一个航段;若否,则返回步骤s212;

s214、设迭代次数count=0;当新的轮渡时间表s的目标港口βs∈π时,令s=s∪s;

s215、令count=count+1,若count≤max,则选择新的随机航段r'∈r,若count>max,则返回步骤s212;

s216、判断新的随机航段r'的出发港口αr'是否等于βs,ts+ls+π是否小于或等于tr',ts为轮渡时间表s的出发时间,ls为轮渡时间表s的总服务时间,tr'为航段r'的出发时间,

若αr'=βs且ts+ls+π≤tr',则令s=s∪r',count=0;若αr'不等于βs或者ts+ls+π大于tr',则返回步骤s215;

s217、输出最终的所有可行的轮渡时间表s。

优选的,在步骤s2中,采用第二启发式算法,根据轮渡时间表生成初始解,过程如下:

s221、令δ表示初始解:令可供选择的随机旅行需求集合d*=d,d为旅行需求集合;

s222、判断d*是否等于若是,则结束算法;若否,则从中随机选择一个旅行需求d*,d*∈d*,d*=d*\{d*};

s223、判断有需求d*的乘客人数是否大于0,若否,则返回步骤s222;若是,则随机选择一个轮渡时间表s={r1,r2,...,rn}∈s;

s224、判断需求d*是否可以被随机选择的轮渡时间表s服务,即是否大于0,若否,则返回步骤s222;若是,则为需求d*随机选择一个轮渡f∈f;

s225、选择新的随机旅行需求d'∈d,并判断d'是否属于d*,若是,则有需求d'的乘客人数表示一个航段r由轮渡f来执行时,可用于满足需求d'的最大座位数量,表示时间表s内所有航段由轮渡f来执行时,可用于服务需求d'的最大座位总数;初始解δ=δ∪{s,f},并返回步骤s223;若否,则返回步骤s222;

s226、输出最终的所有初始解。

优选的,在步骤s3中,利用突变、交换和循环交换这三种运算符来开发一系列不同的邻域结构κ为邻域序号;突变运算符和交换运算符可反复使用;

邻域是指使用运算符对当前的解决方案进行变换而得到潜在解的集合;邻域结构是指解决方案中的轮渡时间表和分配给时间表的轮渡;开发过程如下:

1)利用突变运算符从第一启发式算法生成的所有可行的轮渡时间表中随机选择一个轮渡时间表,

如果该时间表已包含在现有解决方案中,则将当前分配给该时间表的轮渡进行随机变异,在船队中增加一条虚拟渡轮,当选择了虚拟渡轮并将其分配给时间表时,则该时间表被视为已从现有解决方案中删除;

如果现有解决方案中没有这个随机选择的时间表,则为该时间表分配随机渡轮,这等效于在以前的解决方案中添加新的轮渡时间表;

2)利用交换运算符从第一启发式算法生成的所有可行的轮渡时间表中随机选择两个轮渡时间表,并交换分配给它们的轮渡,

如果在现有解决方案中同时使用了这两个时间表,则将简单地交换分配的渡轮;

如果当前仅使用这两个时间表中的一个时间表,则将这个被使用的时间表从当前解决方案中删除,而其渡轮将分配给另一个时间表;

如果当前解决方案中未使用这两个时间表,则选择新的随机时间表对,直到当前使用这两个时间表中的至少一个为止,然后按照上述过程分配渡轮;

3)利用循环交换运算符在一次迭代中干扰两个以上的轮渡时间表:仅选择当前使用的时间表来执行循环交换,每次迭代选择一组m个时间表{s1,f1},{s2,f2},...,{sm,fm},

然后从第一个时间表s1开始,将其分配到的渡轮与先前分配给第二个时间表s2的轮渡进行重新分配,即f1分配给s2,f2分配给s1,然后从第二个时间表开始s2,将其分配到的渡轮与先前分配给第三个时间表s3的轮渡进行重新分配,即f1分配给s3,f3分配给s2,以此类推,最后,第m个时间表sm分配到f1,由此完成m个所选船期表的循环交换,并且所有所选择的时间表均已更改。

优选的,在步骤s4中,基于禁忌搜索ts设计接收准则,具体如下:

1)定义解决方案x的目标值obj(x)的计算公式为:

obj(x)=e(x)+ε1·u(x)+ε2·v(x)+ε3·g(x);

其中,e(x)为总成本和;u(x)为违反了船队规模约束的成本;v(x)为违反了泊位限制约束的成本;g(x)为违反了旅行需求约束的成本;ε1为违反了船队规模约束的惩罚系数;ε2为违反了泊位限制约束的惩罚系数;ε3为违反了旅行需求约束的惩罚系数;

2)对于各个违规成本:

由于每个轮渡最多可以分配给一个轮渡时间表,如果将轮渡同时分配给多个时间表,则每次使用都会给加上一个违规成本u(x);

如果在任何时间周期内某个港口停泊的渡轮数量大于可用泊位的数量,则将被计为违规成本v(x);

由于要求解决方案中的轮渡时间表能够满足所有要求,如果轮渡时间表未完全满足任何要求,则将添加一项违规成本g(x);

3)对于惩罚系数:

ε1、ε2和ε3在开始时均以1作为初始值,并根据搜索过程中接受的解决方案的可行性进行动态调整:

如果在最近接受的解决方案中违反了船队规模,泊位限制或者旅行需求约束,则对应的惩罚系数将乘以1.1,否则将被除以1.1。

优选的,步骤s5包括如下步骤:

在每次迭代期间,按照邻域顺序从第一个邻域开始搜索第一个邻域内的局部最优,将x的第一个邻域内的局部最优表示为x',并基于接收准则,判断x'是否优于x,即判断局部最优是否有改善初始解:

如果局部最优有改善初始解,当前邻域中有更好的解决方案,则将x'代替x成为新的初始解,每当在邻域中找到更好的解决方案时,重复此过程;

如果在当前邻域中没有找到更好的解决方案,则令κ=κ+1,让搜索将切换到邻域序列中的下一个邻域,继续搜索局部最优;

在上述过程中,每次找到新的解决方案时,令κ=1,让搜索从序列中的第一个邻域开始;

当最后一个邻域无法提供更好的解决方案,或者达到了设置的计算时间限制,则终止搜索过程。

本发明的第二目的通过下述技术方案实现:一种存储介质,存储有程序,所述程序被处理器执行时,实现本发明第一目的所述的基于可变邻域下降混合算法的轮渡服务网络优化方法。

本发明的第三目的通过下述技术方案实现:一种计算设备,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现本发明第一目的所述的基于可变邻域下降混合算法的轮渡服务网络优化方法。

本发明相对于现有技术具有如下的优点及效果:

(1)本发明基于可变邻域下降混合算法的轮渡服务网络优化方法,先给出了fndp-sa的整数规划模型,并针对轮渡服务网络中存在大量可行的轮渡时间表,采用精确算法来解决大型实例在计算上会非常棘手的这一问题,提出了一种混合算法,先开发了两个启发式算法,一个是基于给定的服务弧(服务弧即航段)生成可行的渡轮时间表,另一个是构造初始解决方案,然后开发了基于可变邻域下降(vnd)算法来迭代地改善初始解,并且考虑到研究问题的性质,还设计了一组邻域结构,使混合算法能够在一系列越来越大的邻域中搜索高质量的解决方案。因此,本发明采用可变邻域下降混合算法,能够为乘客提供更优化的渡轮服务方案,同时也能减少运输数据暴增,优化渡轮服务网络,因此更适用于乘客和轮渡信息规模较大的轮渡运输。

(2)本发明方法根据违反船队规模、泊位限制和旅行需求约束这些行为的违规成本和对应的惩罚系数设计了接收准则,在每一次寻找更优解的迭代中,基于接收准则搜索邻域内是否有更优的解决方案,能够更方便地找出更优解,多次迭代能够最大程度上提供更好的解决方案。

(3)本发明方法利用突变、交换和循环交换这三种运算符来开发一系列不同的邻域结构,能够充分干扰现有解决方案,同时又要保留重要部分,实现对邻域的有效开发。

附图说明

图1是本发明基于可变邻域下降混合算法的轮渡服务网络优化方法的流程图。

图2是珠海群岛分布图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例1

本实施例公开了一种基于可变邻域下降混合算法的轮渡服务网络优化方法,如图1所示,步骤如下:

s1、针对轮渡服务网络,构建fndp-sa的整数规划模型。

本实施例具体是通过合并泊位限制和容量分配策略,得出fndp-sa的集合划分公式,即整数规划模型:

subjectto:

其中,f为轮渡,f为轮渡集合;s为轮渡时间表,s为基于候选航段生成的所有轮渡时间表的集合;为决策变量,如果将时间表s分配给渡轮f,则等于1,否则,等于0;为轮船f执行的时刻表s的运营成本;

cf为轮渡f的容量;d为乘客的旅行需求,对于每个d,其出发和目的地港口以及所需的出发时间都是已知的,d为旅行需求集合;r为航段,r为候选航段,rs为时间表s中的候选航段;md为有需求d的乘客人数;是指航段r中可用于满足需求d的最大比率;

τ为时间周期,t为时间周期集合;k为港口,p为港口集合;bk为港口k的泊位数量;等于1或者等于0,表示在τ时期内,时间表s占用了港口k的泊位;表示在τ时期内,时间表s没有占用港口k的泊位。

表达式(1)为目标函数,表示最小化所有已执行轮渡时间表的总运营成本;表达式(2)~(4)为约束条件,表达式(2)确保在时间范围内最多可以将一个渡轮分配给一个时间表;表达式(3)要求在容量分配策略下必须满足所有要求;表达式(4)确保在任何时间周期内每个港口上的占用泊位数量都不会超过可用泊位数量;决策变量都是二进制的,如表达式(5)中所定义。

s2、对于步骤s1构建的fndp-sa的整数规划模型,由于该轮渡服务规划问题存在大量可行的轮渡时间表,采用精确算法来解决大型实例在计算上是非常棘手的。因此这里先基于给定的航段,采用第一启发式算法生成可行的轮渡时间表;然后采用第二启发式算法,根据轮渡时间表生成初始解,初始解即是为乘客提供渡轮服务的初始解决方案。

其中,第一启发式算法先是在某个起始港口开始的航段生成轮渡时间表,每个航段仅用作一次初始航段。如果以上选择的航段也终止于一个起始港口,则可以将航段本身作为可行的渡轮计划添加到最终集合中。然后,在满足连续性和时间条件的同时,将航段反复添加到当前渡轮计划中,直到尝试了最大次数后再找不到其他可行的渡轮计划。采用第一启发式算法生成可行的轮渡时间表的过程如下:

s211、设可行的轮渡时间表的集合可供选择的随机航段集合r*=r;令max表示未能将航段扩展到给定时间表的连续迭代的最大次数;

s212、判断r*是否为若是,则结束算法;若否,则从中选择一随机航段r,r∈r*,r*=r*\{r},每个航段仅用作一次初始航段;

s213、判断该随机航段r的出发港口αr是否属于出发港口集合π,p为港口集合,若是,则创建一个新的轮渡时间表s={r},一个轮渡时间表是由一系列航段前后衔接而成的航段序列,s={r}表示时间表中先选择一个航段r作为该航段序列中的第一个航段;若否,则返回步骤s212;

s214、设迭代次数count=0;当新的轮渡时间表s的目标港口βs∈π时,令s=s∪s;这里的轮渡时间表s的目标港口也是s中最后一条航段的目标港口;

s215、令count=count+1,若count≤max,则选择新的随机航段r'∈r,若count>max,则返回步骤s212;

s216、判断新的随机航段r'的出发港口αr'是否等于βs,ts+ls+π是否小于或等于tr',ts为轮渡时间表s的出发时间,ls为轮渡时间表s的总服务时间,tr'为航段r'的出发时间,

若αr'=βs且ts+ls+π≤tr',则令s=s∪r',count=0;若αr'不等于βs或者ts+ls+π大于tr',则返回步骤s215;

s217、输出最终的所有可行的轮渡时间表s。

第二启发式算法描述了覆盖需求的基本思想,通过迭代添加轮渡时间表并为每个添加的时间表分配特定的轮渡来构建初始解决方案,采用第二启发式算法生成初始解的过程如下:

s221、令δ表示初始解:令可供选择的随机旅行需求集合d*=d,d为旅行需求集合;

s222、判断d*是否等于若是,则结束算法;若否,则从中随机选择一个旅行需求d*,d*∈d*,d*=d*\{d*};

s223、判断有需求d*的乘客人数是否大于0,若否,则返回步骤s222;若是,则随机选择一个轮渡时间表s={r1,r2,...,rn}∈s;

s224、判断需求d*是否可以被随机选择的轮渡时间表s服务,即是否大于0,若否,则返回步骤s222;若是,则为需求d*随机选择一个轮渡f∈f;

s225、选择新的随机旅行需求d'∈d,并判断d'是否属于d*,若是,则有需求d'的乘客人数表示一个航段r由轮渡f来执行时,可用于满足需求d'的最大座位数量,表示时间表s内所有航段由轮渡f来执行时,可用于服务需求d'的最大座位总数;初始解δ=δ∪{s,f},并返回步骤s223;若否,则返回步骤s222;

s226、输出最终的所有初始解。

s3、设计可变邻域下降算法(vnd)使用的一系列邻域,邻域是指使用运算符对当前的解决方案进行变换而得到潜在解的集合;邻域结构是指解决方案中的轮渡时间表和分配给时间表的轮渡;设计的一系列邻域应探索与当前解决方案越来越远的区域,以便有效地摆脱局部最优。

本实施例利用了突变(mutate)、交换(swap)和循环交换(cyclicexchange)这三种运算符来开发一系列不同的邻域结构κ为邻域序号。这些运算符能够充分干扰现有解决方案,同时又要保留重要部分。mutate和swap运算符可以反复采用,以对现有解决方案进行足够的扰动。开发过程如下:

1)利用突变运算符从第一启发式算法生成的所有可行的轮渡时间表中随机选择一个轮渡时间表,

如果该时间表已包含在现有解决方案中,则将当前分配给该时间表的轮渡进行随机变异,在船队中增加一条虚拟渡轮,当选择了虚拟渡轮并将其分配给时间表时,则该时间表被视为已从现有解决方案中删除;

如果现有解决方案中没有这个随机选择的时间表,则为该时间表分配随机渡轮,这等效于在以前的解决方案中添加新的轮渡时间表;

2)利用交换运算符从第一启发式算法生成的所有可行的轮渡时间表中随机选择两个轮渡时间表,并交换分配给它们的轮渡,

如果在现有解决方案中同时使用了这两个时间表,则将简单地交换分配的渡轮;

如果当前仅使用这两个时间表中的一个时间表,则将这个被使用的时间表从当前解决方案中删除,而其渡轮将分配给另一个时间表;

如果当前解决方案中未使用这两个时间表,则选择新的随机时间表对,直到当前使用这两个时间表中的至少一个为止,然后按照上述过程分配渡轮;

3)利用循环交换运算符在一次迭代中干扰两个以上的轮渡时间表:仅选择当前使用的时间表来执行循环交换,每次迭代选择一组m个时间表{s1,f1},{s2,f2},...,{sm,fm},

然后从第一个时间表s1开始,将其分配到的渡轮与先前分配给第二个时间表s2的轮渡进行重新分配,即f1分配给s2,f2分配给s1,然后从第二个时间表开始s2,将其分配到的渡轮与先前分配给第三个时间表s3的轮渡进行重新分配,即f1分配给s3,f3分配给s2,以此类推,最后,第m个时间表sm分配到f1,由此完成m个所选船期表的循环交换,并且所有所选择的时间表均已更改。

例如,表1为基于上述三个算子设计的vnd的邻域结构集。这里设置单个运算符最多可安排4个轮渡时间表。当κ=2时,将采用mutate运算符两次,并且在每个相邻解决方案中将两个时间表分配给不同的渡轮。同样,当κ=4时,将选择两对不同的时间表以交换其分配的渡轮。并且,列表中的第一个邻域结构通常对生成更高质量的解决方案贡献更大,最后的邻域结构有助于防止算法容易陷入局部最优状态。

表1

s4、考虑到基本的vnd算法仅接受可改善当前状态的可行解决方案,很容易使搜索陷入局部最优状态,在某些条件下接受不可行的解决方案又具有重大意义,因此为了避免搜索陷入局部最优状态,基于禁忌搜索ts设计接收准则,这一接收准则可接受不可行的处罚方案,具体如下:

1)定义解决方案x的目标值obj(x)的计算公式为:

obj(x)=e(x)+ε1·u(x)+ε2·v(x)+ε3·g(x);

其中,e(x)为总成本和;u(x)为违反了船队规模约束的成本;v(x)为违反了泊位限制约束的成本;g(x)为违反了旅行需求约束的成本;ε1为违反了船队规模约束的惩罚系数;ε2为违反了泊位限制约束的惩罚系数;ε3为违反了旅行需求约束的惩罚系数;

2)对于各个违规成本:

由于每个轮渡最多可以分配给一个轮渡时间表,如果将轮渡同时分配给多个时间表,则每次使用都会给加上一个违规成本u(x);

如果在任何时间周期内某个港口停泊的渡轮数量大于可用泊位的数量,则将被计为违规成本v(x);

由于要求解决方案中的轮渡时间表能够满足所有要求,如果轮渡时间表未完全满足任何要求,则将添加一项违规成本g(x);

3)对于惩罚系数:

ε1、ε2和ε3在开始时均以1作为初始值,并根据搜索过程中接受的解决方案的可行性进行动态调整:

如果在最近接受的解决方案中违反了船队规模,泊位限制或者旅行需求约束,则对应的惩罚系数将乘以1.1,否则将被除以1.1。

s5、采用基于可变邻域下降算法迭代地对初始解进行改善:在每一次迭代中,基于接收准则,搜索邻域内是否有更优的解决方案,直至搜索过程终止,以此完成对初始解决方案的优化。具体包括如下步骤:

在每次迭代期间,按照邻域顺序从第一个邻域开始搜索第一个邻域内的局部最优,将x的第一个邻域内的局部最优表示为x',并基于接收准则,判断x'是否优于x,即判断局部最优是否有改善初始解:

如果局部最优有改善初始解,当前邻域中有更好的解决方案,则将x'代替x成为新的初始解,每当在邻域中找到更好的解决方案时,重复此过程;

如果在当前邻域中没有找到更好的解决方案,则令κ=κ+1,让搜索将切换到邻域序列中的下一个邻域,继续搜索局部最优;

在上述过程中,每次找到新的解决方案时,令κ=1,让搜索从序列中的第一个邻域开始;

当最后一个邻域无法提供更好的解决方案,或者达到了设置的计算时间限制,则终止搜索过程。

表2为基于历史数据的实例a到j的优化结果,具体是将本实施例的接收准则和两个现有基准来对基于历史数据的优化结果进行比较。其中,一个现有基准是从当前的运行计划中得出优化结果,这些计划主要是基于专业知识来手动制定的,另一个现有基准是通过禁忌搜索(ts)元启发式方法获得优化结果。

“dura”是指解决方案中所有已采用轮渡时间表的总时长(以分钟为单位),“ins”表示实例,“avg”表示平均结果,“cost”代表千元的总费用。每个实例的最佳解决方案均以粗体标记。

从结果可以看出,与人工结果相比,所需的渡轮平均数量(fleetavg)从人工结果(manual)中的12.1减少到本实施例算法(hybridvnd)得到的结果中的9.2。并且,参见costgap一列,本实施例提出的算法针对所有10个实例都获得了最佳解决方案,与人工结果相比,利用本实施例算法的每个实例都能节省大量成本,与ts结果相比,本实施例算法得到的结果以平均6%的差距跑赢表现,这也验证了本实施例算法的有效性。

表2

表3中给出了基于未来需求的实例a到j的优化结果。手动结果不适用于这些实例。因此,这里仅报告通过ts和本实施例算法获得的结果。

表3

从数值结果可以看出,尽管未来需求总量超过当前数量超过130%,但所需机队规模和总体运营成本的增长分别为50%和67%,这表明所提出的算法在较大的情况下效果很好。此外,对于这10个实例,vnd混合算法都比ts得出更好的解决方案,平均差距为13%。当将来解决旅行需求更高的实例时,这也验证了本实施例提出的基于vnd混合算法的方法的有效性。

在本实施例中,如图2所示,以珠海群岛为例,所研究的轮渡服务网络由珠海半岛上的一个主要港口(xz港口)和地理上分布的岛屿(即gs岛,wld岛,dg岛,ws岛和da岛)上的五个港口组成,xz港口和gs港口是起始港口,渡轮可在此停泊过夜。六个港口之间仅通过轮渡运送旅客。每个旅行需求可以描述为一对两个节点之间的有向箭头。根据实际情况,在这项研究中没有考虑涉及两个以上节点的旅行需求。表4列出了港口的一些关键信息。

表4

在过去三年中,已经并分析了超过500万次旅行的历史门票销售数据来获取旅行需求的模式。首先,将1095天(3年)分为10个不同的组,例如“非高峰季节的工作日”,“新年假期”等。不同组的数据可能会重叠(例如,新年假期中的一天)也可能是周末)。表5中列出了这些组的说明。

表5

对于每个组,收集历史票务销售数据,并获取每对港口之间的平均每日旅行需求。为了提高可读性,还汇总了一天中所有时间段的需求,以显示实例的整体大小。这样获得的10个实例表示为a至j,如表6所示,表6中列出了当前的旅行需求。

此外,通过合并每个组的调查结果来获得未来的估计需求,并将由此得出的11个实例表示为a至j,如表7所示,表7中列出了新港口对(新航段)的未来旅行需求。

表6

表7

将本实施例基于可变邻域下降混合算法的轮渡服务网络优化方法应用于解决珠海群岛航运规划的问题中,基于珠海群岛的实际距离、成本、上述旅客需求等数据,求解结果如表2,从表2可以看出,与人工结果相比,本实施例提出的轮渡服务网络优化方法可节省大量成本,平均节省59%。可见,本实施例基于可变邻域下降混合算法的轮渡服务网络优化方法确实能够提供更优化的渡轮服务方案,优化轮渡服务网络。

实施例2

本实施例公开了一种存储介质,存储有程序,所述程序被处理器执行时,实现实施例1中所述的基于可变邻域下降混合算法的轮渡服务网络优化方法,具体如下:

s1、针对轮渡服务网络,构建fndp-sa的整数规划模型;

s2、对于步骤s1构建的fndp-sa的整数规划模型,先基于给定的航段,采用第一启发式算法生成可行的轮渡时间表;然后采用第二启发式算法,根据轮渡时间表生成初始解,初始解即是为乘客提供渡轮服务的初始解决方案;

s3、设计可变邻域下降算法使用的一系列邻域;

s4、为避免搜索陷入局部最优状态,基于禁忌搜索ts设计接收准则;

s5、采用基于可变邻域下降算法迭代地对初始解进行改善:在每一次迭代中,基于接收准则,搜索邻域内是否有更优的解决方案,直至搜索过程终止,以此完成对初始解决方案的优化。

本实施例中的存储介质可以是磁盘、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、u盘、移动硬盘等介质。

实施例3

本实施例公开了一种计算设备,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现实施例1中所述的基于可变邻域下降混合算法的轮渡服务网络优化方法,具体如下:

s1、针对轮渡服务网络,构建fndp-sa的整数规划模型;

s2、对于步骤s1构建的fndp-sa的整数规划模型,先基于给定的航段,采用第一启发式算法生成可行的轮渡时间表;然后采用第二启发式算法,根据轮渡时间表生成初始解,初始解即是为乘客提供渡轮服务的初始解决方案;

s3、设计可变邻域下降算法使用的一系列邻域;

s4、为避免搜索陷入局部最优状态,基于禁忌搜索ts设计接收准则;

s5、采用基于可变邻域下降算法迭代地对初始解进行改善:在每一次迭代中,基于接收准则,搜索邻域内是否有更优的解决方案,直至搜索过程终止,以此完成对初始解决方案的优化。

本实施例中所述的计算设备可以是台式电脑、笔记本电脑、智能手机、pda手持终端、平板电脑或其他具有处理器功能的终端设备。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1