首页> 中国专利> 基于改进粒子群算法的多路径规划方法

基于改进粒子群算法的多路径规划方法

摘要

本发明公开一种基于改进粒子群算法的多路径规划方法,在解决单路径规划中对粒子群算法做的改进的基础上,融合贪心算法、遗传算法和模拟退火算法的思想,使用贪心算法初始化粒子群算法,并且加入一种良好的变异算子与模拟退火思想。将算出来的路径看成首尾相连的环状,对于出发城市相同的多路径问题,要计算N条路径,就增加N个与出发城市位置相同的虚拟城市,路径中只要遇到虚拟城市就代表回到出发城市,这样将环分割成N条路径;对于出发城市不相同的多路径问题,则不用增加虚拟城市,所有的出发城市就起到了虚拟城市的作用。此多路径计算方法比原来的更简单且更具有通用性。

著录项

  • 公开/公告号CN104063745A

    专利类型发明专利

  • 公开/公告日2014-09-24

    原文格式PDF

  • 申请/专利权人 河海大学;

    申请/专利号CN201410162014.3

  • 发明设计人 张雪洁;严祥光;周文欢;蒋悦达;

    申请日2014-04-21

  • 分类号G06Q10/04;

  • 代理机构南京苏高专利商标事务所(普通合伙);

  • 代理人李玉平

  • 地址 211100 江苏省南京市江宁区佛城西路8号

  • 入库时间 2023-12-17 01:34:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-03

    授权

    授权

  • 2014-10-22

    实质审查的生效 IPC(主分类):G06Q10/04 申请日:20140421

    实质审查的生效

  • 2014-09-24

    公开

    公开

说明书

技术领域

本发明涉及一种基于改进粒子群算法的多路径规划方法。>

背景技术

多路径规划问题,即多旅行商问题是经典旅行商问题的一种泛化,加上某些特定的附加条件,则能够演化成一些较现实的问题,因而具有较高的理论研究和应用价值。在多旅行商问题中,一个任务由多位旅行商共同完成,其问题的求解难度较经典旅行商问题更大,用于经典旅行商问题求解的方法或策略不能简单地应用于多旅行商问题的求解,有关该问题的研究成果远比经典旅行商问题少,现有计算多路径的方法是通过增加虚拟城市,将所有城市隔开,转化为单路径来计算。转化之后的单路径问题有许多限制条件,算法复杂并且效率低下,而且不能解决有多个出发城市的多旅行商问题,而实际中的路径规划通常出发点都不只一个。>

粒子群算法,也称粒子群优化算法(Particle Swarm Optimization,PSO),是近年来发展起来的一种新的进化算法(Evolutionary Algorithm-EA),是解决多路径规划问题的有效方法之一。PSO算法属于进化算法的一种,从随机解出发,通过迭代寻找最优解,它是通过适应度来评价解的品质,通过追随当前搜索到的最优值来寻找全局最优。这种算法具有实现容易、精度高、收敛快等优点,但也仍有容易陷入局部最优解导致“早熟”的缺点。>

发明内容

发明目的:针对现有的多路径规划问题计算方法的不足,本发明提供一种基于改进粒子群算法的多路径规划方法,在前人对粒子群算法做出的改进的基础上做了进一步的改进,有效的跳出局部最优解,避免“早熟”,克服了粒子群算法本身的缺点,用于解决路径规划问题取得了良好的效果。>

技术方案:一种基于改进粒子群算法的多路径规划方法,首先根据实际需求,对城市数据进行预处理。分如下两种情况:>

a对于只有一个出发城市的多路径问题,如果要计算出首发相连的N条路径,这N条路径除了出发城市相同外其余经过的城市各不相同,但覆盖所有 城市,则需增加N个与出发城市位置相同的虚拟城市。>

b对于出发城市互不相同的多路径问题,则不需要进行预处理。>

然后使用上述求解旅行商问题的算法计算出一条城市序列X=(x1,x2,…,xi,xv1,xj,…,xk,xv2,xl,…,xn)。(假设需要计算两条路径,其中xv1和xv2代表两个虚拟城市或者出发城市)>

最后将算出来的城市序列看成首尾相连的环状。城市序列中只要遇到虚拟城市或者出发城市就代表回到上一个出发城市,这样将环分割成多条路径,X1=(xv1,xj,…,xk,xv1),X1=(xv2,xl,…,xn,x1,x2,…,xi,xv2),得到最终需要的多条路径。>

本发明在前人解决单路径规划中对粒子群算法做的改进的基础上,融合贪心算法、遗传算法和模拟退火算法的思想,使用贪心算法初始化粒子群算法,并且加入一种良好的变异算子与模拟退火思想。变异能够解开计算出来的路径中有交叉的地方,大大增加了算法找到最优解的概率;模拟退火增大了搜索最优解的范围,避免陷入局部最优解。这些改进使得改进后的粒子群算法能够有效的跳出局部最优解,避免“早熟”,克服了粒子群算法本身的缺点,用于解决路径规划问题取得了良好的效果。>

传统计算多路径是通过增加虚拟城市,将所有城市隔开,转化为单路径来计算。要计算N条路径,需要增加N-1个与出发城市位置相同的虚拟城市,路径中只要遇到虚拟城市就代表回到出发城市,最后一个城市之后也回到出发城市,这样将多路径问题转化为单路径问题计算。这样的处理方法有很多边界情况需要考虑,例如要保证每次迭代算出的路径中第一个城市为出发城市等。并且不能用于计算出发城市不相同的多路径。>

本发明公布了的通用的多路径规划方法。将算出来的路径看成首尾相连的环状,对于出发城市相同的多路径问题,要计算N条路径,就增加N个与出发城市位置相同的虚拟城市,路径中只要遇到虚拟城市就代表回到出发城市,这样将环分割成N条路径;对于出发城市不相同的多路径问题,则不用增加虚拟城市,所有的出发城市就起到了虚拟城市的作用。此新型的多路径计算方法比原来的更简单且更具有通用性。>

附图说明

图1为变异算子解开交叉的算法的示意图;>

图2为本发明方法流程图。>

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。>

1.旅行商问题(TSP)>

TSP即寻找一条最短的遍历N个城市的路径,其数学描述如下:>

设有N个城市的集合C={c1,c2,...,cN},每2个城市之间的距离为d(ci,cj)∈R+其中,ci,cj∈C(1≤i,j≤N)求使目标函数Td=∑d(c∏(i),c∏(i+1))+d(c∏(N),c∏(1))达到最小的城市序列{c∏(1),c∏(2),...,c∏(N)},其中∏(1),∏(2),...,∏(N)是1,2,...,N的全排列。>

2.标准粒子群算法>

标准的粒子群算法的数学描述如下:设搜索空间为D维,粒子数为n,第i个粒子的位置用Xi=(xi1,xi2,...,xiD)表示;第i个粒子的速度变化率用vi=(vi1,vi2,...,viD)表示;第i个粒子迄今为止搜索到得最好位置为pi=(pi1,pi2,...,piD)也记为pbest,所有粒子迄今为止搜索到得最好位置为g=(g1,g2,…,gD),对于每一次迭代,第i个粒子在第d维运动的表达式如下:>

vid(t+1)=ωvid(t)+c2rand()·[gd(t)-xid(t)]+c1rand()·[pid(t)-xid(t)]>

xid(t+1)=xid(t)+vid(t+1)1≤i≤n,1≤d≤D>

式中:t代表迭代的次数;ω称为惯性因子;c1,c2为正常数,称为加速因子;vid(t)为第t次迭代后第i个粒子的速度变化率vi的第d维的数值;rand()为[0,1]之间的随机数;gd(t)是第t次迭代后所有粒子迄今为止搜索到得最好位置g的第d维的数值;xid(t)是第t次迭代后第i个粒子的位置Xi的第d维的数值;pid(t)是第t次迭代后第i个粒子迄今为止搜索到得最好位置pi的第d维的数值;第d维的位置和速度的变化范围为[-xdmax,xdmax]和[-vdmax,vdmax]如果在某一维中迭代的xid和vid超过边界值的取值范围则按边界值取值。>

3.TSP问题中的改进粒子群算法>

3.1TSP问题中改进粒子群算法相关定义>

定义1交换子:2个城市序列Xi=(xi1,xi2,...,xim)与Xj=(xj1,xj2,...,xjm),>ia≠xja,称(xia,xja)为城市序列的交换子即为Vij=(xia,xja)。>

定义2交换序列:由交换子组成的序列V=(V1,V2,...,Vn),其中n为2个城市对应序列相同但数值不同位置的个数。>

定义3粒子的位置:粒子的位置是由城市序列X=(X1,X2,...,Xm)表示,m为城市的个数。>

定义4粒子的速度:粒子的速度是由交换序列V=(V1a,V2b,...,Vmn)表示,其中Vmn表示交换子。>

3.2交换子与交换序列的运算法则>

(1).位置与交换子的加法>

位置与速度的加法形成新的城市序列:设X=(X1,X2,...,Xm)为城市序列Vij(Xi,Xj)为交换子。>

X=(X1,X2,...,Xi,Xj,Xm)+Vij(Xi,Xj)=(X1,X2,...,Xj,Xi,Xm)>

为新形成的城市序列。>

例:X1(4,3,6,2,1,5)+V12=X2(3,4,6,2,1,5)>

(2).位置与位置的减法>

位置与位置的减法形成交换序列即生成新速度:>

Vij=Xi-Xj其中Xi、Xj为城市序号:先找到与第1个城市序列中第1个元素相同的第2个城市序列位置,形成交换子V(1,i),然后将此交换子作用在第1个序列上得到新的第1序列,再找到新的第1城市序列与第2城市序列数值相同的第1个位置,形成交换子V(2,i)依次进行下去,得到2个城市序列的交换序列。>

例:X1(4,3,6,2,1,5)-X2(5,6,2,1,4,3)=V(v(1,5)+v(2,6)+v(3,6)+v(4,6)+v(5,6))>

(3).交换子的数乘>

速度的数乘具有概率意义,例如Via=cVjb其中c∈[0,1]是一个常数,在计算Via时,对Vjb中的每一维速度Vjn生成一个(0,1)的随机数计算如下式:>

Via=Vjb,ifrand<c0,else

3.3变异算子与模拟退火>

粒子群算法的本质是利用本身信息、个体极值信息和全局极值3个信息,指导粒子下一步迭代位置。对于TSP问题,其当前位置是基本路径,若按基本粒子群算法,其速度难以表达,故采用遗传算法的思想解决。标准粒子群算法中粒子运动表达式中的ωvid(t)项可看作遗传算法的变异操作。c2rand()·[pgd(t)-xid(t)]+c1rand()·[pid(t)-xid(t)]项可看作遗传算法的交叉操作,使当前解与个体极值和全局极值分别作交叉操作,产生的解为新的位置。变异操作和交叉操作后,新的解可能比原来的解要坏,接受准则是采用模拟退火算法的思想,允许目标函数有限范围内变坏,接受坏解的概率随着温度的下降而减小,最终趋于零。>

变异算子不是像遗传算法那样盲目的变异,而是将粒子的位置,即基本路径中有交叉的地方解开,使之不再交叉,大大变短了路径的长度。但是并不一定保证在解开某一处交叉的过程中不会导致别的地方又增加交叉,因此变异操作不能保证解一定会变好,固采用模拟退火算法的思想,以一定的概率接受变坏的解成为个体极值,引导粒子跳出局部最优解,大大增加了搜索到全局最优解的概率。>

为了简化计算,软件将模拟退火的初始温度设为最大迭代次数的三分之一,退火,接受变坏解的概率设为温度与最大迭代次数的比值,退火系数为0.99。>

变异算子解开交叉的算法思想:如图1所示,线段(i-1,i)与(j-1,j)相交,则将路径中[i,j-1]范围内的点的顺序反转,达到解开路径中的交叉的目的。程序伪代码如下:>

即遍历路径中的每两个相邻城市之间的线段,寻找路径中与之相交的另外两相邻城市之间的线段,若找到,则反转路径中交点之间的所有城市,以解开交叉。>

3.4解决TSP的改进粒子群算法>

针对TSP问题,改进粒子群的更新公式变为:>

Vi(K+1)=ωVi(k)+c1(Pibest-Xi(k))+c2(Gbest-Xi(k))>

Xi(K+1)=c3variation(Xi(k)+Vi(K+1))>

式中ω,c1,c2,c3为(0,1)之间的数,c3variation(X)表示以概率c3对X进行变异操作。Xi(k)为第i个粒子的当前位置,即第i个当前城市序列,Xi(K+1)为第i个粒子新的位置,即新生成的第i个城市序列。Pibest表示第i个粒子的最好位置,即第i个粒子搜索到的最好城市序列,Pibest采用模拟退火思想,即第i个粒子的新位置如果好于Pibest则将Pibest设为该位置,否则以模拟退火的概率接受该位置。Gbest表示全局最好位置,即所有粒子搜索到的最好城市序列。Pibest-Xi(k)为交换序列,c1(Pibest-Xi(k))表示以概率c1接受交换序列中的交换子,c2(Gbest-Xi(k))同理。>

4.改进粒子群算法解决TSP步骤(如图2所示)>

1.利用贪心算法初始化粒子群,从每一个城市出发,得到N个初值良好的城市序列。>

2.如果达到最大迭代次数转到5,如不满足对种群进行更新,找到个体最好位置Pibest,以及全局最好位置Gbest。>

3.更新所有粒子的位置。>

a、Xtemp=Xi(k)+ωVi(k)>

b、Vtemp=c1(Pibest-Xtemp)>

c、Xtemp=Xtemp+Vtemp

d、Vtemp=c2(Gbest-Xtemp)>

e、Xtemp=Xtemp+Vtemp

f、Xi(K+1)=c3variation(Xtemp)>

g、Vi(K+1)=Xi(K+1)-Xi(k)>

4.迭代次数加一,模拟退火降温,转到步骤2。>

5.输出最优城市序列,并输出最短距离。>

5.多旅行商问题(mTSP)>

一般来讲,泛化的mTSP定义如下:给定一个n个城市集合,让m个旅行商 各自从一个城市出发,每位旅行商访问其中一定数量的城市,最后回到其出发城市,要求每个城市至少被一位旅行商访问一次并且只能一次,问题的目标是求得访问m条环路代价最小访问次序,其中代价可以是距离、时间、费用等。问题中称旅行商出发的城市称为中心城市,其它城市称为访问城市。>

一般情况下,mTSP分为四种类型:>

第一种:m个旅行商从同一个城市出发访问其中一定数量的城市,即只有一个中心城市,使得每个城市必须被某一个旅行商访问而且只能访问一次,最后回到出发城市。>

第二种:m个旅行商从m个不同城市出发访问其中一定数量的城市,使得每个城市必须被某一个旅行商访问而且只能访问一次,最后回到各自的出发城市。>

第三种:m个旅行商从同一个城市出发访问其中一定数量的城市,使得每个城市必须被某一个旅行商访问而且只能访问一次,最后到达m个不同的城市。>

第四种:m个旅行商从m个不同城市出发访问其中一定数量的城市,使得每个城市必须被某一个旅行商访问而且只能访问一次,最后到达同一个城市。>

软件要解决的问题其实是mTSP的第一种和第二种。>

6.解决TSP与mTSP的改进粒子群算法>

软件解决mTSP的策略是将问题转化为TSP求解,这样用于解决TSP的方法都可以用来解决mTSP。然而,转化后的mTSP求解不能简单地等同于TSP的求解,如何用TSP的描述方式有效的表示mTSP,其中还会涉及很多转化后带来的问题。>

结合实际需求,多路径规划问题中要解决的是mTSP的前两种,出发点相同的多路径规划问题属于mTSP的第一种,出发点不同的多路径规划问题属于mTSP的第二种,下面将分别介绍解决这两种mTSP问题的算法设计思想。>

6.1出发点相同的多路径规划问题(第一种mTSP)>

解决此类mTSP的思想是对于一个有m个旅行商的mTSP,增加m-1个与惟一的仓库地址相同的虚拟城市,用来对不同的旅行商访问的城市进行间隔,并且将这些虚拟城市与仓库之间的直达距离和任意两虚拟城市之间的直达距离以及虚拟城市到自己的距离都设为无穷大,以阻止粒子群算法中粒子和位置,即城市序列出现不合理的排列现象。这m-1个虚拟城市索引分别为n+1,n+2,...,n+m-1。 增加的虚拟城市因与惟一的仓库地址相同而具有与仓库等价的性质。粒子的位置,即城市序列中隔的最近的两虚拟城市之间的城市构成一条路径,将路径看成闭合的回路,则最后一个虚拟城市与第一个虚拟城市之间的城市构成一条路径。>

例如,1个仓库,10个客户的城市序列如下。10个客户的索引为0,1,...,9,仓库的索引为10,假设送货车辆为3,即要算出3条路径。>

3 5 11 8 4 6 1 12 7 0 10 2 9

则三条路径分别分:>

由于虚拟城市与仓库之间的直达距离和虚拟城市之间的直达距离以及虚拟城市到自己的距离都为无穷大,固在计算过程中城市序列中不会出现有两个虚拟城市或者一个虚拟城市与仓库相邻的情况,保证每条路径上的城市个数大于一。>

6.2出发点不相同时的多路径规划问题(第二种mTSP)>

解决此类mTSP不需要增加任何城市,仓库充当了解决第一类mTSP问题中所增加的虚拟城市的角色,将不同的旅行商访问的城市进行间隔。但也需要将任意两仓库之间的直达距离都设为无穷大,避免在计算过程中两个仓库出现在城市序列的相邻位置。粒子的位置,即城市序列中隔的最近的两仓库之间的城市构成一条路径,将路径看成闭合的回路,则城市序列中最后一个仓库与第一个仓库之间的城市构成一条路径。>

例如,3个仓库,10个客户的城市序列如下。10个客户的索引为0,1,...,9,仓库的索引为10,11,12。要算出3条路径。>

3 5 11 8 4 6 1 12 7 0 10 2 9

则三条路径分别分:>

11—8—4—6—1—11>

12—7—0—12>

10—2—9—3—5—10>

解决两类mTSP的算法思想基本一致,都是将mTSP转化为TSP求解,因为在解决mTSP问题时,计算出来的多条路径实际上是一条路径分割形成的,固 贪心算法也同样适用,为改进后的粒子群算法提供一组良好的初值,然后采用改进后的粒子群算法求解。>

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号