本发明涉及路径规划领域,特别涉及一种改进的基于大规模多中心问题的路径规划方法。
背景技术:
容量受限的弧路由问题(capacitatedarcroutingproblem,carp)是一类经典而复杂的组合优化问题,其有着广泛的应用背景,如冬季路面除雪、路面撒盐、邮递、垃圾清扫等问题;carp的目标就是为驻扎在驻车中心的一队车辆寻找最优路径,使得所有需要服务的边(路面)均被服务,且车辆的总耗费最小化,并且行车过程中存在一定的约束,同时总耗费包括行车费用以及服务费用等。
服务中存在一定条件的约束:(1)车辆由站点出发,最后回归站点;(2)每辆车均有一定的车载容量限制;(3)一条道路通常只能被一辆车服务;由于各道路上的服务量存在差异,且道路分布情况往往较复杂,所以冬季路面除雪、路面撒盐、邮递、垃圾清扫等问题是一种复杂的车辆路径规划问题,其可归属于经典的容量受限的弧路由问题。
针对上述问题模型,已经存在大量的解决方案;然而,在现实生活中的一些问题,基本carp难以应对,如对于较大区域内的垃圾清扫问题,往往存在多个驻车点或回收中心,而基本carp则只涉及一个中心点;所以,针对具体问题,我们需要对carp模型进行扩展。
关于多中心点的容量受限的弧路由问题(mdcarp),已有学者提出了解决方案,如kansou和zhu等提出的mdma以及hga等;然而这些方法只关注较小规模的问题,忽略对大规模问题的考虑;现实中的mdcarp的应用背景往往涉及的面积很广,如垃圾清扫问题,一个城市总需要服务路面或街道数很多,分布区已很广;此时,已有方法则难以适应了。大规模、多中心点的容量受限的弧路由问题(largescalemdcarp,lsmdcarp)的难点是需要服务的路面或街道归属处理,同时由于问题规模的上升,问题解空间呈爆炸式增长。所以,使用较早的方法应对大面积垃圾清扫问题的车辆路径规划,往往会出现的问题有:(1)路径规划的满意度下降,即总费用没有得到有效降低;(2)规划过程中,消耗的时间会很长。
现有技术中提出了一种基于大规模多中心问题的路径规划方法,但是对于mdcarp而言,任何两个任务都可以置于同一条路径被服务,即任何两个任务都有相互联系的特性,所以mdcarp问题是一类完全不可分离问题,具有高复杂性;现有技术的上述路径规划方法对获取的解重新分解以期获得较好的效果,但是基于路径的处理方式存在优化空间,其准确性需要进一步提高。
技术实现要素:
针对上述车辆路径优化方法中存在的问题,本发明公布了一种改进的基于大规模多中心问题的路径规划方法对于大规模、多中心点的容量受限的弧路由问题有着良好的求解性能,取得现有的路径规划方法具有更好的效果。
本发明提供的一种改进的基于大规模多中心问题的路径规划方法,该方法包括如下步骤:
s1:对车辆服务对象,即街道,采用最近距离法将任务集t的任务划分至vd中的各中心点处,形成子问题rcs[1],rcs[2],…,rcs[|vd|],其中,vd为中心点集合。采用某种方法求解,获取所有子解s[i]。连接所有子解,形成整个问题的初始解决方案s;
s2:重复步骤s1若干次,获取最优初始解s,其可表示为
s3:利用初始解决方案,对s’中的任务寻找新的合适位置,并将改变后的路径放置入临时集合trs中;
s4:对临时集合trs中的所有路径采用优化的分割处理方法进行切割,并将所得路径并入至待分配路径集合rs’中;
s5:采用所述三标准问题分解方法将所述待分配路径集合rs’中的路径分配至vd中的中心点处,使用2-opt、ulusoysplitting方法进行处理,得到该子问题的子解s*i;
s6:采用局部优化方法对其邻域进行搜索,将所有的子问题的解s*i进行汇集,获得新的解决方案s*;
s7:若s*优于s,则以s*取代s;否则,放弃s*;如此,反复若干代后结束,最终的s即为满意的问题解。
作为本发明的进一步限定,所述步骤s3中对s’中的任务寻找新的合适位置,并将改变后的路径放置入临时集合trs的方法为:
对于某子解si中路径r,在其他子解中寻找nr-1条距离其最近的路径,以此nr条路径构成集合sr,从初始解决方案s中删除sr中的所有路径;然后对集合sr中的任务搜寻新的合适位置,并进行移动,得到新的集合sr’;若经过移动后,新的集合sr’中路径的总耗费有所降低,则将新的集合sr’中的路径加入临时集合trs中,否则,将集合sr加入到临时集合trs中。
作为本发明的进一步限定,所述步骤s1及s2的具体步骤为:
步骤1):采用最近距离法,将所有任务分配至vd中各中心点处的,得到|vd|个子问题,tcs[1],tcs[2],…,tcs[|vd|];
步骤2):d←1;
步骤3):对tcs[d]中的任务采用bih法,构造长路径rd;
步骤4):对长路径rd采用ulusoysplitting进行分割,得到子解sd;
步骤5):d←d+1;
步骤6):若d≤|vd|,则转步骤3)继续构造子解;
步骤7):连接所有子解,得到问题的完整解s,即
步骤8):k←1;
步骤9):以vd中每个点为中心,构造一空子解,得到
步骤10):从任务集t随机选取一任务t,分配至vd最近的中心点,令为d;
步骤11):将t采用bih法插入到子解sd中;
步骤12):重复步骤10)和11),直到任务集t中无任务可选;
步骤13):连接所有子解,得到问题的完整解s’,即
步骤14):若s’较s好,则以s’更新s;
步骤15):k←k+1;
步骤16):若k≤max_num-1,则转步骤9)继续构造随机解;
其中,步骤16中max_num为初始解的尝试次数,其值采用mdma的种群规模值。
作为本发明的进一步限定,所述步骤s3的具体步骤为:
以初始解决方案s为当前解,其中,
步骤11:随机生成{1:|vd|}的排列,s’←s,trs←φ,rs←φ;
步骤12:i←1;
步骤13:r←1;
步骤14:在s’的第
步骤15:对于集合sr,使用算子si及swap寻找各任务的合理位置,并移动,得到集合sr’;
步骤16:若集合sr’优于集合sr,则将集合sr’并入临时集合trs;否则,将集合sr并入临时集合trs;
步骤17:从s’中删除集合sr中的路径;
步骤18:r←r+1;
步骤19:若r≤|si’|,转步骤14继续,其中,|si’|为子解si’中的路径数;
步骤20:i←i+1;;
步骤21:若i≤|vd|,转步骤13继续搜索;
步骤22:将临时集合trs中的所有路径采用优化的分割处理方法进行切割,并将所得路径并入至待分配路径集合rs’中。
作为本发明的进一步限定,所述步骤14中计算路径距离采用以下方法:
其中,两条路径r1和r2的距离为:
两个任务x1和x2的距离为:
其中,hv(x1)、tv(x1)分别表示任务x1的第一和第二端点。
作为本发明的进一步限定,所述优化的分割处理方法的具体步骤如下:
步骤31:获取所述初始解决方案
步骤32:iter←1,noimp←0;
步骤33:improve←false;
步骤34:s’←s;
步骤35:对于s’每个子问题的解si’中的所有路径采用路径切割策略sr,形成较短的路径,放置rs中;
步骤36:采用所述三标准问题分解方法将rs中的路径分配至vd的相应中心点处,得到子问题rcs[1],rcs[2],…,rcs[|vd|];
步骤37:将每个子问题rcs[i]中的路径连接起来,形成一条长路径lri;
步骤38:使用2-opt、ulusoysplitting方法和局部优化方法对路径lri进行切割和优化,得到子解s*i;
步骤39:连接所有子解,得到完整解s*,即
步骤40:若s*优于s,则以s*更新s,即s←s*,并置improve←true;
步骤41:若improve=true,则置noimp←0,否则,置noimp←noimp+1;
步骤42:iter←iter+1;
步骤43:若iter≤maxiter且noimp≤maxnoimpiter,则转步骤32继续执行,否则输出解决方案s;
上述步骤中,maxiter为最大迭代次数,maxnoimpiter为最大改进迭代次数,即问题解若持续maxnoimpiter未得到改善,则问题求解过程提前结束。
作为本发明的进一步限定,所述步骤35具体为:
步骤61:i←1;
步骤62:r←1;
步骤63:采用路径切割策略sr对子解si’中的路径r切割,并将所得子路径归入rs’中;
步骤64:r←r+1;
步骤65:若r≤|si’|,则转步骤63继续切割si’中的路径,|si’|为子解si’中的路径数;
步骤66:i←i+1;
步骤67:若i≤|vd|,则转步骤62继续切割后续子解中的路径。
作为本发明的进一步限定,所述路径切割策略sr具体为:
步骤71:依据s*以及等级矩阵mrank,对s*中所有连接按等级升序排列,取中位数mlv;
步骤72:令k=1;
步骤73:从s*中删除rk;
步骤74:根据步骤71所计算arv,将rk的连接归类到集合goodset和badset;其中,goodset为优良连接集合,badset为劣质连接集合;
步骤75:从goodset和badset中分别挑选出连接goodlink,badlink:
步骤76:令pr1=rand()%1000/1000,若pr1<pgsr,则从rk中删除goodlink;
步骤77:令pr2=rand()%1000/1000,若pr2<pbsr,则从rk中删除badlink;
步骤78:将分割后的子路径插入到s*中;
步骤79:k=k+1,若k<=m,则转步骤73,继续分割路径。
步骤80:返回分割后的车辆路由方案s*。
其中,mrank为等级矩阵,rand()表示随机产生一非负整数,pr1与pr2为由rand()函数随机产生的变量,pgsr、pbsr分别为删除优良连接和劣质连接的概率。
作为本发明的进一步限定,所述步骤75中选取goodlink,badlink的具体方法为:采用轮盘赌的方式选取goodlink,badlink。
作为本发明的进一步限定,所述三标准问题分解方法为:
对待分配路径集合rs,构造vd由各中心点d组成的虚拟路径,并以其初始化子问题rcs[d];并计算rs中的每条路r经到各rcs[i]的平均距离adisr,i,两条路径r1和r2的距离计算如下:
其中,
标准1:对于待分配路径集合rs中路径r,计算其最小平均距离对于次小距离的提高比例impdisr;若rs中存在impdisr≥10%的路径,则选择提高比例最大的路径,将其加入到离其最近的rcs[]中,同时从rs中删除,继续分解过程;
标准2:如果标准1失败,即待分配路径集合rs中所有路径的提高比例都小于10%,则计算rs中每条路径r到各rcs[i]的方差vadisr,i,并计算最小方差对于次小方差的提高比例impvarr;若rs中存在impvarr≥40%的路径,则选择提高比例最大的路径,将其加入到离其最近的rcs[]中,同时从rs中删除,继续分解过程;
标准3:若标准1和2均失败,计算待分配路径集合rs中每条路径r到最近rcs[]中最近路径的距离minadisr,选择最小minadisr对应的路径,将其添加至最近的rcs[]中,并从rs中删除该路径;
重复标准1、2和3,直到待分配路径集合rs为空集为止。
本发明的有益效果如下:
1、本发明通过在现有的大规模多中心问题的路径规划方法的基础上,增加优化策略,使得本发明的路径规划方法对于大规模、多中心点的容量受限的弧路由问题有着良好的求解性能,取得了相对于现有的dcha方法具有更好的效果。
2、本发明的改进的路径规划方法相对于hga、mdma以及现有的dcha方法,在所有10个算例上取得了明显更好的结果;虽然在耗时上有所增加,但是在所有算例上均取得了最优解,而其他方法取得最优解的个数均为0,且运行耗时均值依然少于mdma,这表明本发明的改进的路径规划方法对于大规模、多中心问题中的路径规划问题中有着良好的求解性能,能够获取良好的车辆路径安排。
附图说明
图1为本发明的大规模多中心问题的路径规划方法的流程图;
图2为现有技术的基于大规模多中心问题的路径规划方法的流程图;
图3为本发明实施例二中各方法在测试集mdegl-g上的平均结果;
图4为本发明实施例二在测试集mdegl-g上的最好结果;
图5为本发明实施例二在算例mdegl-g1-a上的运行收敛曲线;
图6为本发明实施例二在算例mdegl-g2-e上的运行收敛曲线。
具体实施方式
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例;基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
关于mdcarp问题模型,张玉州等已给出描述。为便于问题理解,这里对问题进行简要叙述。mdcarp可表示为一无向图g=(v,e),其中v是顶点集,e是边集合。顶点集v由非中心点顶点集合vn和中心点顶点集合vd组成。边e∈e存在三个非负属性值:需求量dem(e),服务费用sc(e)和路过费用dc(e)。当边的需求量dem(e)>0时,称其为任务,所有任务构成任务集t。t中所有的任务由vd中各中心点处的车队提供服务,每辆车的容量为q。一辆车所服务的所有任务构成一条路径,路径中需要关注两项参数,费用以及负载量。费用包括行车耗费dc(e)以及任务服务费用sc(e),而负载为所有任务的dem(e)。mdcarp的目标则是寻求最优路径,并满足以下约束条件:
(1)每辆车由vd某一中心点出发、返回该中心点;
(2)任意任务须且仅服务一次;
(3)车辆需要满足容量限制,即负载量收到容量q的限制。
针对lsmdcarp的特点,现有技术提出了采用分而治之的解决方法,即dcha方法。其基本思路是:首先按照中心点集合vd的组成情况,将集合t中的所有任务划分到各中心点处,形成|vd|个子问题,每个子问题相当于基本carp问题;对于每个子问题,采用有效的优化器进行优化处理。
该方法中的问题分解策略是对多中心vrp提出三标准任务分解策略的修改而得到,具体是根据路径与各中心点处形成的路径集合的距离来对未分配路径进行划分,包括平均距离标准、距离方差标准以及最近集合最近路径标准等。
对于mdcarp,采用修改所得三标准分解策略,得到|vd|个子问题或路径集合rcs[1],rcs[2],…,rcs[|vd|];然后,对每个子问题,将其中的所有路径连接成一条长路径,并使用2-opt、ulusoysplitting方法进行处理,得到子解si。而为了提高子解si的质量,进一步采用局部优化方法对子解si的邻域进行搜索,然后将所有子解连接,最终得出问题的初始解,即
为进一步优化初始解s,将初始解s中的所有路径使用路径分割技术sr,对每条路径进行切割,并将所得较短的子路径加入路径集合rs中,路径集合rs成为待分配路径集合。对路径集合rs中的路径,采用三标准分解策略进行处理,分配至合适的中心点处,从而再次得到子问题rcs[1],rcs[2],…,rcs[|vd|],并对各子问题采取初始解的生成方法,如连接短路径,得到长路径,使用2-opt、ulusoysplitting和优化处理,得到子解,连接子解,得到新的解s*。若s*优于原解s,则取代s,否则放弃。这样的优化过程,持续若干代后结束;最后,得到mdcarp的满意解。该方法的流程图如图2所示。
但是,现有的上述dcha方法主要是通过不断地对当前已获取的解进行提炼,并进一步优化,从而得到更优的问题解。上述dcha方法是一种分而治之的方法,其通过对多中心容量受限的弧路由问题mdcarp的分解,将问题的求解,转化为以各中心点而形成的子问题的求解。虽然,大量的实验结果验证了dcha的有效性,但是上述dcha方法依然具有改进的空间。因为,对于mdcarp而言,任何两个任务都可以置于同一条路径被服务,也即任何两个任务都有相互联系的特性,所以mdcarp问题是一类完全不可分离问题,具有高复杂性。由此可知,任何两个子问题中的任务均存在联系、相互影响,所以分而治之方法难以克服mdcarp这一特性所带来的困难。尽管,dcha对获取的解重新分解,但是基于路径的方式较粗糙。同时,dcha的初始化过程较为复杂,简化此过程,对于大规模mdcarp的求解,可以赢取时间。鉴于此,本发明对上述dcha方法进行了改进和完善,提出改进的方法idcha。
基于上述目的,如图1所示为本发明改进的idcha方法的流程图,本发明的改进型基于大规模多中心问题的路径规划方法,包括如下步骤:
s1:对车辆服务对象,即街道,采用最近距离法将任务集t的任务划分至vd中的各中心点处,形成子问题rcs[1],rcs[2],…,rcs[|vd|],其中,vd为中心点集合。采用某种方法求解,获取所有子解s[i]。连接所有子解,形成整个问题的初始解决方案s;
s2:重复步骤s1若干次,获取最优初始解s,其可表示为
s3:利用初始解决方案,对s’中的任务寻找新的合适位置,并将改变后的路径放置入临时集合trs中;
s4:对临时集合trs中的所有路径采用优化的分割处理方法进行切割,并将所得路径并入至待分配路径集合rs’中;
s5:采用所述三标准问题分解方法将所述待分配路径集合rs’中的路径分配至vd中的中心点处,使用2-opt、ulusoysplitting方法进行处理,得到该子问题的子解s*i;
s6:采用局部优化方法对其邻域进行搜索,将所有的子问题的解s*i进行汇集,获得新的解决方案s*;
s7:若s*优于s,则以s*取代s;否则,放弃s*;如此,反复若干代后结束,最终的s即为满意的问题解。
其中,所述三标准问题分解方法为:
对待分配路径集合rs,构造vd由各中心点d组成的虚拟路径,并以其初始化子问题rcs[d];并计算rs中的每条路r经到各rcs[i]的平均距离adisr,i,两条路径r1和r2的距离计算如下:
其中,
标准1:对于待分配路径集合rs中路径r,计算其最小平均距离对于次小距离的提高比例impdisr;若rs中存在impdisr≥10%的路径,则选择提高比例最大的路径,将其加入到离其最近的rcs[]中,同时从rs中删除,继续分解过程;
标准2:如果标准1失败,即待分配路径集合rs中所有路径的提高比例都小于10%,则计算rs中每条路径r到各rcs[i]的方差vadisr,i,并计算最小方差对于次小方差的提高比例impvarr;若rs中存在impvarr≥40%的路径,则选择提高比例最大的路径,将其加入到离其最近的rcs[]中,同时从rs中删除,继续分解过程;
标准3:若标准1和2均失败,计算待分配路径集合rs中每条路径r到最近rcs[]中最近路径的距离minadisr,选择最小minadisr对应的路径,将其添加至最近的rcs[]中,并从rs中删除该路径;
重复标准1、2和3,直到待分配路径集合rs为空集为止。
现有dcha技术中初始解的生成是利用后期搜索过程中三标准路径划分方法进行生成,显然过于复杂。对于初始化过程,简化解的生成方式,降低复杂度,减少初始阶段的时间消耗,为整个大规模问题的求解赢取时间。具体的改进方法为,将所有任务按距中心点的距离进行划分,每个任务分配至离其最近的中心点处。然后,将各中心点处的任务采用最优插入法(bih),构造一条长路径。由于mdma是基于种群智能搜索的方法,所以初始化方法采用两种策略,一种是将所有任务分配至个中心点处,对于每个中心点所形成的子问题,每次选择最好的任务进行bih操作;另一种是每次随机选择一任务,分配至最近的中心点,并采用bih方法将其插入到已构建的子解中。显然,第二种随机方法所得子解一般较第一种方法的子解弱,但可以增加群体的多样性。
因此,本发明参照mdma方法对步骤s1、s2进行如下改进:
步骤1):采用最近距离法,将所有任务分配至vd中各中心点处的,得到|vd|个子问题,tcs[1],tcs[2],…,tcs[|vd|];
步骤2):d←1;
步骤3):对tcs[d]中的任务采用bih法,构造长路径rd;
步骤4):对长路径rd采用ulusoysplitting进行分割,得到子解sd;
步骤5):d←d+1;
步骤6):若d≤|vd|,则转步骤3)继续构造子解;
步骤7):连接所有子解,得到问题的完整解s,即
步骤8):k←1;
步骤9):以vd中每个点为中心,构造一空子解,得到
步骤10):从任务集t随机选取一任务t,分配至vd最近的中心点,令为d;
步骤11):将t采用bih法插入到子解sd中;
步骤12):重复步骤10)和11),直到任务集t中无任务可选;
步骤13):连接所有子解,得到问题的完整解s’,即
步骤14):若s’较s好,则以s’更新s;
步骤15):k←k+1;
步骤16):若k≤max_num-1,则转步骤9)继续构造随机解;
其中,步骤16中max_num为初始解的尝试次数,其值采用mdma的种群规模值。
另一方面,在现有的dcha方法中,对初始解决方案s所有子解中的路径使用特定技术进行分割,然后形成待分配路径集合rs,继而对待分配路径集合rs中的路径进行划分,分配至vd的各中心点处,形成新的子问题集合。显然,在初始解决方案s的子解路径未分割之前,对不同子解中的任务进行合适的位置移动,从而获取更良好的路径,然后再切割;如此,会使得联系紧密的任务聚集在同一条路径上,经过后续的路径再分配,从而进入同一子问题中,进一步提高解的质量。
那么,如何进行寻觅任务的合适位置、如何移动,即成为关键问题。对于某一任务,在整个问题范围内搜索理想的位置,会增加问题解决过程的复杂性。本发明的策略是对于某子解中路径r,在其他子解中寻找nr-1条距该子解最近的路径,由此nr条路径构成集合sr,从s中删除集合sr中的所有路径;然后对集合sr中的任务搜寻新的合适位置,并进行移动,得到新的集合sr’。若经过移动,集合sr’中路径的总耗费有所降低,则将集合sr’的路径加入临时集合trs中,否则将集合sr加入到临时集合trs中。一直持续此过程,结束条件是:1)s中剩余路径属于某一子解,直接加入临时集合trs中;2)无剩余路径可考虑。当s中剩余路径数不足nr条且不属于同一子解时,由这些路径构成集合进行任务移动。
因此,本发明的上述步骤s3中对s’中的任务寻找新的合适位置,并将改变后的路径放置入临时集合trs的方法记为comm,具体描述为:
对于某子解si中路径r,在其他子解中寻找nr-1条距离其最近的路径,以此nr条路径构成集合sr,从初始解决方案s中删除sr中的所有路径;然后对集合sr中的任务搜寻新的合适位置,并进行移动,得到新的集合sr’;若经过移动后,新的集合sr’中路径的总耗费有所降低,则将新的集合sr’中的路径加入临时集合trs中,否则,将集合sr加入到临时集合trs中。
当s为空,对临时集合trs中的路径使用特定技术切割,从而形成待分配路径rs,然后划分,得到各子问题。在上述sr的形成以及后续任务合适位置的搜索过程中,需要说明的是:(a)路径间的距离如何衡量;(b)任务合适位置的搜索策略。
因此,本发明提出如下路径间距计算方式:
其中,两条路径r1和r2的距离为:
两个任务x1和x2的距离为:
其中,hv(x1)、tv(x1)分别表示任务x1的第一和第二端点。
对于sr中任务合适位置的搜索,采用单点插入(singleinsertion,si)及交换swap算子对来自于不同子解的路径之间进行搜索,这样可以提升搜索效率。
因此,所述步骤s3的具体步骤为:
以初始解决方案s为当前解,其中,
步骤11:随机生成{1:|vd|}的排列,s’←s,trs←φ,rs←φ;
步骤12:i←1;
步骤13:r←1;
步骤14:在s’的第
步骤15:对于集合sr,使用算子si及swap寻找各任务的合理位置,并移动,得到集合sr’;
步骤16:若集合sr’优于集合sr,则将集合sr’并入临时集合trs;否则,将集合sr并入临时集合trs;
步骤17:从s’中删除集合sr中的路径;
步骤18:r←r+1;
步骤19:若r≤|si’|,转步骤14继续,其中,|si’|为子解si’中的路径数;
步骤20:i←i+1;;
步骤21:若i≤|vd|,转步骤13继续搜索;
步骤22:将临时集合trs中的所有路径采用优化的分割处理方法进行切割,并将所得路径并入至待分配路径集合rs’中。
本发明将初始解决方案s中的路径使用路径切割策略sr进行分割,从而获得较短的路径;
由上述所有的较短的路径构成待分配集合rs’,采用所述三标准问题分解方法将待分配集合rs’中的路径分配至vd中的中心点处,再使用2-opt、ulusoysplitting方法进行处理,得到该子问题的解s*i;
采用局部优化方法对其邻域进行搜索,将所有的子问题的解s*i进行汇集,获得新的解决方案s*;
若s*优于s,则以s*取代s;否则,放弃s*;如此,反复若干代后结束,最终的s即为满意的问题解。
其中,所述优化的分割处理方法的具体步骤如下:
步骤31:获取所述初始解决方案
步骤32:iter←1,noimp←0;
步骤33:improve←false;
步骤34:s’←s;
步骤35:置rs为空集,即rs←φ;
步骤36:对于s’每个子问题的解si’中的所有路径采用路径切割策略sr,形成较短的路径,放置rs中;
步骤37:采用所述三标准问题分解方法将rs中的路径分配至vd的相应中心点处,得到子问题rcs[1],rcs[2],…,rcs[|vd|];
步骤38:将每个子问题rcs[i]中的路径连接起来,形成一条长路径lri;
步骤39:使用2-opt、ulusoysplitting方法和局部优化方法对路径lri进行切割和优化,得到子解s*i;
步骤40:连接所有子解,得到完整解s*,即
步骤41:若s*优于s,则以s*更新s,即s←s*,并置improve←true;
步骤42:若improve=true,则置noimp←0,否则,置noimp←noimp+1;
步骤43:iter←iter+1;
步骤44:若iter≤maxiter且noimp≤maxnoimpiter,则转步骤32继续执行,否则输出解决方案s;
上述步骤中,maxiter为最大迭代次数,maxnoimpiter为最大改进迭代次数,即问题解若持续maxnoimpiter未得到改善,则问题求解过程提前结束。
其中,所述步骤36具体为:
步骤61:i←1;
步骤62:r←1;
步骤63:采用路径切割策略sr对子解si’中的路径r切割,并将所得子路径归入rs’中;
步骤64:r←r+1;
步骤65:若r≤|si’|,则转步骤63继续切割si’中的路径,|si’|为子解si’中的路径数;
步骤66:i←i+1;
步骤67:若i≤|vd|,则转步骤62继续切割后续子解中的路径。
本发明采用的路径切割策略sr具体为:
所述路径切割策略sr具体为:
步骤71:依据s*以及等级矩阵mrank,对s*中所有连接按等级升序排列,取中位数mlv;
步骤72:令k=1;
步骤73:从s*中删除rk;
步骤74:根据步骤71所计算arv,将rk的连接归类到集合goodset和badset;其中,goodset为优良连接集合,badset为劣质连接集合;
步骤75:从goodset和badset中分别挑选出连接goodlink,badlink:
步骤76:令pr1=rand()%1000/1000,若pr1<pgsr,则从rk中删除goodlink;
步骤77:令pr2=rand()%1000/1000,若pr2<pbsr,则从rk中删除badlink;
步骤78:将分割后的子路径插入到s*中;
步骤79:k=k+1,若k<=m,则转步骤73,继续分割路径。
步骤80:返回分割后的车辆路由方案s*。
其中,mrank为等级矩阵,rand()表示随机产生一非负整数,pr1与pr2为由rand()函数随机产生的变量,pgsr、pbsr分别为删除优良连接和劣质连接的概率。
其中,所述步骤75中选取goodlink,badlink的具体方法为:采用轮盘赌的方式选取goodlink,badlink。
测试集及运行环境
本发明选择在大规模测试集mdegl-g上验证性能。mdegl-g具有8个中心点,375条边,10个测试样例。所有方法均采用c++实现,运行电脑的cpu为intelcorei5-7500,3.4ghz。每个算例,独立运行30次。所有方法均从平均性能和最好性能两方面进行比较。比较的方法kansou和zhu等提出的mdma以及hga,以及张玉州提出的dcha。
图3和图4记录了各方法在测试集mdegl-g上的平均结果和最好结果。表中|v|,|e|,|t|和q分别表示顶点数、边数、任务数和车容量。由于比较的几种方法均属于随机方法,多次运行同一算例,故而表中给出了每种方法对应结果的标准差,同时对结果进行了秩和检验,以0.05为标准。若比较的方法结果明显好于(差于)本方法(idcha),则标以“+”(“-”),否则认为无明显差别。“w-d-l”分别统计比较方法相对于idcha明显好、无差别和明显差的算例数。同时,附上方法的计算耗时,单位秒(s)。
图3和图4分别为各方法在测试集mdegl-g上的平均结果和最好结果,mdegl-g的规模大于mdgdb和mdegl,任务数上升至375,为大规模测试集。由图3知,idcha在所有10个算例上取得了明显好于其他所有比较方法,如hga、mdma以及dcha,效果明显。并且,从图4可以看出,本发明的方法(idcha)在所有算例上,取得最优解,而其他方法取得最优解的个数均为0。
由上述结果知,本发明的方法idcha对于大规模mdcarp有着良好的求解性能,取得较原方法dcha明显好的效果,主要原因在于本发明的方法中对子问题的有着较紧密联系的任务进行了位置移动,促使这些任务在问题划分时,能够进入同一子问题,从而为后续搜索带来便利。
从运行时间角度考虑,本发明的方法idcha耗费了较多时间,主要是任务的移动引起。为了更直观地对各方法进行比较,这里给出它们在有代表性的算例上的运行收敛曲线,如图5和图6所示,图中以最短时间的方法为终止点,其余方法的曲线进行截断。
由图5和图6可以看出,尽管本发明的方法idcha运行耗时较长,但从算法的开始,本发明的方法idcha就在其他方法曲线下方,而且落差很明显。由此可以看出,本发明的方法idcha的性能体现并非通过耗时较多实现,而是源于方案的改进。同时,可以看出,随着comm的引入,算法的时间开销会增大,从而本发明的初始解生成方法的简化,对于这个问题求解过程时间的控制具有十分重要的意义。
综上对本发明的技术方案的说明,以及在相同算例下与其他算法的对比,本发明的改进的基于大规模多中心问题的路径规划方法,通过在现有的大规模多中心问题的路径规划方法的基础上,增加优化策略,使得本发明的路径规划方法对于大规模、多中心点的容量受限的弧路由问题有着良好的求解性能,取得了相对于现有的dcha方法具有更好的效果,具有较好的应用前景。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。