Particle_swarm_optimization_for_traveling_salesman_problem
摘要:提出了粒子群优化算法在旅行商问题中的一种新应用。我们开发了一些使用粒子群算法求解TSP的特殊方法。我们还提出了交换算子和交换序列的概念,并在此基础上重新定义了一些算子,从而设计了一种特殊的粒子群优化算法。实验表明,该方法能取得较好的效果。
1简介
粒子群优化;旅行推销员粒子群优化算法(PSO)最初由Kennedy和Eberhart提出[lJ,它与遗传算法[4,5,6]相比,它是受个体间社会行为的启发,这些个体(我们称之为粒子)在n维搜索空间中移动,每个粒子都代表问题的潜在解决方案,并能记住它所达到的最佳位置。所有粒子都可以共享关于搜索空间的信息,因此有一个全局最佳解决方案。在每次迭代中,每个粒子都根据以下公式计算其速度:
其中w是惯性因子,Xid是粒子的当前位置,Pid是该粒子达到的最佳解;Pgd是所有粒子的全局最佳解决方案。
计算Vid后,我们可以在下一次迭代中获得新位置:
粒子群优化是一种进化计算技术,因为它具有共同的进化属性:
1.它有一个初始化过程,在这个过程中,有一个由一定数量的个体组成的种群,种群中的每个个体都有一个随机解。
2.通过产生更好的新一代,在搜索空间中搜索更好的解决方案。
3.新一代的生产以上一代为基础。
旅行商问题(Traveling Salesman Problem,TSP)是一个著名的“NP-hard”组合优化问题。到目前为止,TSP已经通过许多元分析方法得到了很好的研究,如最近邻搜索(NNS)、模拟退火(SA)、禁忌搜索(TS)、神经网络(“)、蚁群系统(ACS)[7]和遗传算法(GA)[8]。自1995年以来,粒子群优化已被证明在连续问题上取得了成功,在这方面已经做了许多有效的工作,但对于离散问题,它仍然是一个新的领域,特别是将PSO算法应用于TSP是一个全新的研究方向。
2.基本概念
2.1 交换运算符
考虑具有n个节点的TSP的正常解序列
S=(ai),i=1…n。
这里我们定义了交换运算符。SO(i1,i2)代表解决方案S中的交换节点ai1和节点ai2。然后,我们将S'=S+SO(i1,i2) 定义为运算符SO(i1,i2)作用的新解决方案。因此,上面的加号“+”有了新的含义。
可以给出一个具体的例子:假设有一个有五个节点的TSP问题,这里有一个解:S=(1,3,5,2,4),交换运算符是SO(1,2),然后
S’=S+SO(1,2)=(1,3,5,2,4)+(1,2)=(3,1,5,2,4)。
2.2 交换序列
交换序列SS由一个或多个交换运算符组成。例如:SS=(SO1,SO2,SO3,......,SOn),SO1,SO2,SO3,......,SOn为交换运算符。SS中交换运算符的顺序很重要。
2.3 交换序列的特征
作用于解决方案的交换序列是指交换序列的所有交换运算符都按顺序作用于该解决方案。这可以用以下公式来描述:
作用于同一解决方案的不同交换序列可能会产生相同的新解决方案。所有这些交换序列都被命名为等效的交换序列集。在等价集合中,交换运算符最少的序列称为集合的基本交换序列或简称基本交换序列(BSS)。
几个交换序列可以合并为一个新的交换序列,我们将运算符⊕定义为将两个交换序列合并为新的交换顺序。假设有两个交换序列,SSI和SS2,SSI与SS2依次作用于一个解决方案S,即SSI第一,SS2第二,我们得到一个新解决方案的S',还有另一个交换序列ss'作用于相同的解决方案S上,然后得到相同的解决方案S',描述如下:
2.4 基本交换序列的构造
假设有两个解,A和B,我们的任务是构造一个基本交换序列SS,它可以作用于B以获得解A,我们定义SS=A-B(这里的符号-也有新的含义)。我们可以根据A从左到右交换B中的节点以获得SS。所以必须有一个方程A=B+SS。
3. 公式的转换及因素的处理
公式(1)已不再适用于TSP问题。我们更新如下
其中α,β是介于0和1之间的随机数。α*(Pid-Xid)表示基本交换序列(Pid -Xid)中的所有交换运算符应保持α的概率,它与β*(Pgd-Xid)相同。
我们可以看出,α的值越大,Pid的影响就越大,因为(Pid-Xid)中将需要更多的交换运算符,它也与β*(Pgd-Xid)相同。
4. TSP-PSO算法描述
TSP-PSO-1
初始化:每个粒子得到一个随机解和一个随机交换序列,即速度。
TSP-PSO-2
如果算法结束,请转至TSP-PSO-5。
TSP-PSO-3
对于位置Xid中的所有粒子,计算下一个位置Xid'
3-1根据我们上面提出的方法,计算Pid和Xid之间的差值,A=Pid - Xid,其中A是一个基本序列。
3-2计算B=Pgd-Xid,B也是一个基本序列
3-3根据公式(6)计算速度Vid,然后将交换序列Vid转换为基本交换序列。
3-4计算新解决方案
Xid=Xid+Vid(7)
公式(7)表示交换序列Vid作用于解Xid以获得新解。
3-5如果新解决方案优于Pid,则更新Pid
TSP-PSO-4
如果有新的最佳解决方案,且该解决方案优于Pgd,则更新Pgd。转到TSP-PSO-2。
TSP-PSO-5
给出全局最佳解决方案。
5. 实验结果
我们使用14个节点的TSP基准问题来测试我们方法的有效性。实验在PC机上进行(PentiumIV-2GHz CPU,256M RAM,Win2000操作系统,VC++6.0)。
TSP问题如表1所示。初始随机解如图1所示,我们得到的最佳解如图2所示:
实验性能:
解决方案空间的大小:14!1(14*2) = 3113510400
粒子数:100
算法的迭代次数:20000。
搜索空间大小:200万
搜索空间/解决空间:0.064%
我们拥有的最佳解决方案:
1 10 9 11 8 13 7 12 6 5 4 14 2
成本:30.8785(等于最佳解决方案)
6结论
上述实验结果表明,我们的算法只搜索了很小比例的解空间,即收敛速度快,而且算法的空间开销很小。我们得到的令人鼓舞的结果与最优解相同。因此,它给了我们进一步研究的信心。