失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【TSP】基于matlab狼群算法求解旅行商问题【含Matlab源码 211期】

【TSP】基于matlab狼群算法求解旅行商问题【含Matlab源码 211期】

时间:2023-10-14 00:32:42

相关推荐

【TSP】基于matlab狼群算法求解旅行商问题【含Matlab源码 211期】

一、TSP简介

旅行商问题(traveling salesman problem,TSP)是一种常见的路径优化问题,其目的是为了求得一条经过所有城市的最短路径。现实生活中,很多问题都被抽象为TSP进行求解。例如机器人控制、车间调度、无人机航迹规划、计算机连网、网络路由器布设等。虽然TSP属于NP-hard的组合优化问题,求解困难,但是其研究具有实际价值和重要的理论意义。

理论上,较小规模的TSP可以用传统算法获得最优解,较大规模的TSP一般采用启发式算法,但启发式算法也存在着有限时间内无法取得最优解的局限。而由自然界生物群体演化而来的群体智能算法(遗传算法、粒子群优化算法、蚁群算法、人工蜂群算法、萤火虫群优化算法、生物地理迁移算法、帝国主义竞争算法等),为求解复杂路径优化问题提供了不同的方法。新兴的群体智能仿生算法提高了在有限时间内获得最优解的概率,并且缩小了解空间。但很多算法也存在容易陷入局部极值和收敛速度慢等不足。因此,路径规划问题依然是具有难度和研究价值的问题之一。基于狼群算法,国内外很多学者提出了不同的改进方法。通过设计新的猛狼位置更新公式,优化传统狼群算法步长的方法进行改进。通过引入差分进化中的交叉、变异、选择等操作,提高了算法的寻优性能。但是它们都存在着收敛速度慢、易陷入局部最优的缺点,尤其是未考虑到狼群算法在离散域求解的问题。因此为实现离散域的路径优化,采用一种引入位置—次序编码的方法。为了提高狼群算法求解的速度与精度,在迭代过程中采用引入随机单点插入算子、多点插入算子的方法,通过二次搜索来实现在达到最大迭代次数时出现最优解。

1 狼群算法的概述

探狼游走、召唤头狼、猛狼围攻这三种智能行为构成了狼群算法[8]的主体。其规则是优胜劣汰的狼群更新规则以及胜者为王的头狼角逐规则。其步骤如下:

a)狼群的空间坐标在解空间中随机初始化,头狼即为最优目标函数值的人工狼。

b)在搜索猎物时,探狼开始游走。如果探狼发现的气味浓度比头狼发现的浓度大,则探狼处于主导地位,同时更新头狼位置。反之,探狼需要继续游走,直到发现的猎物气味浓度大于头狼或者是达到最大的游走次数,那么头狼将在现有的位置进行召唤。

c)在头狼发出召唤以后,猛狼开始以最大步长向头狼移动。在这个过程中,如果发现猛狼的目标值优于头狼,那么将更新头狼。反之,猛狼将不断移动,直到进入围攻范围。

d)联合探狼以后,靠近头狼的猛狼将围捕猎物(把头狼位置视为猎物)。如果在实施围攻以后,发现人工狼的目标值优于头狼,则更新头狼位置,继续进行捕获;反之,则不变。

e)将目标函数值较小的人工狼进行淘汰,并且新的人工狼将在解空间中随机生成,不断实现狼群的更新。

f)最后头狼的目标值需要根据是否收敛于全局最优解或者迭代次数是否达到最大来判断。如果没有达到,则需要继续迭代,直到满足条件。在达到要求以后,输出的目标函数值就是最优解,被求函数的最佳位置即为头狼的空间坐标。

2 狼群算法求解路径规划

狼群算法虽然可以处理简单的路径规划问题,但不能实现离散域的路径规划,且迭代速度较慢。因此提出一种改进狼群算法,该算法通过引入位置—次序编码的方法,来实现离散域的路径优化;通过二次搜索来提高狼群算法求解的速度与精度,具体过程如下。

2.1 狼群算法求解路径规划原理

狼群算法与路径规划问题的对应关系如下:a)狼群算法———路径规划;b)狼个体———可行路径;c)狼位置变动———路径顺序变动;d)狼适应度———路径长度。

在搜索模式时,狼群定义了三个参数:个体改变的基因个数CDC;放置变异状态的记忆池SMP;个体上每个基因的改变范围SDR。具体的搜索模式是:a)狼群中当前状态的狼个体置于SMP并复制;b)将变异发生后的记忆池中复制的副本改变,并更新到新的位置;c)计算副本的适应度值,狼最终的更新状态就是其中的一个最优状态。

设狼个体i的当前位置为k,则位置的变异公式为式(1)。首先对于狼群个体si(t)=(si1(t),si2(t),…,sin(t)),在记忆池中复制其位置;然后在狼群搜索模式下选择SMP-1个位置进行变异操作,其中每个个体选择CDC个基因位置,变异公式如式(1)所示。最后对应的可行路径编码即为SMP个位置转换而成,并计算适应度,更新个体。在该搜索方式下,所有狼个体会逐渐收敛于全局最优解。

在跟踪模式下,狼个体的每次迭代都将处于全局最优状态,如此不断逼近全局最优解。在此进程中,每只狼的速度标记为vi={vi1,vi2,…,vil},狼个体分别利用式(2)(3)来更新自己的速度与位置。

其中:,表示第K只狼第d位的速度,且d=1,2,…,l,c为常数;为狼群全局最优解;参考文献[10],c=2;rand为[0,1]的随机数。

其中:表示当前位置;更新后的位置是sk(d)(t+1)。

记录当前迭代的最优解并且计算狼个体的适应度,继续进行规定的迭代次数。

二、部分源代码

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,.

[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,.

[3]黄海松,任竹鹏,魏建安.改进狼群算法求解旅行商问题[J].计算机应用研究. ,36(12)

如果觉得《【TSP】基于matlab狼群算法求解旅行商问题【含Matlab源码 211期】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。