【SSA TSP】基于matlab麻雀算法求解旅行商问题【含Matlab源码 1575期】
时间:2022-08-30 12:30:00
一、TSP简介
旅行商 (TSP) 问题是数学领域的组合优化。 NP 难题之一, 又称旅游推销员问题. 解决这个问题一直是学术研究的热点问题. 旅行者问题的表者的问题, 但是路径优化很难解决. 对于 TSP 传统的解决问题的方法有蛮力法、动态规划法、分支边界法等, 但当 TSP 当问题规模较大时, 传统算法往往无法解决. 大规模的 TSP 问题, 近年来,群体智能优化算法在解决这个问题时得到了很好的应用。
1 麻雀搜索算法
麻雀搜索算法受到麻雀群捕食和反捕食的启发. 麻雀的觅食过程遵循发现者-追随者模型,并引入麻雀对捕食者的预警机制. 麻雀群种有发现者、跟随者和预警者 3 种角色. 发现种群中适度值较高的麻雀, 找到食物并为其他麻雀提供食物的方向. 除去麻雀作为发现者, 其他个体是追随者, 跟随发现者觅食. 同时, 追随者会监视发现者, 掠夺食物以提高适应性, 从而成为发现者. 在麻雀群中, 当预警值大于安全值时,有一定数量的预警者, 警方会为其他麻雀发出呼声, 逃离危险区域, 防止被捕食. 麻雀角色在麻雀搜索算法中的具体位置更新公式如下:麻雀种群中发现者的位置更新公式如下:
其中, 发现者在麻雀种群中的比例是 10%–20%, 式 中 t 对于当前的迭代数, 最大迭代数, 为 随机数均匀, , 分别表示预
警察值和安全值. Q 服从正态分布的随机数, L 为的矩阵, 每一个内部元素都是 1.
麻雀种群中跟随者的位置更新公式为:
其中, 预警者所占的比例为 10%–20%, 是目前麻雀种群整体最佳位置的个体, 服从正态分布, 均值为 0, 方差为 1 控制步长的参数, 一个极小的常数, 用于避免中分母的出现 0 的情况, 一般设为 10E–8.用来控制麻雀的运动方向. 为当前个体 i 的
适应度值, fg, fw当前麻雀种群的局部最优适度值和最差适度值.
麻雀搜索算法的基本算法步骤如下: 步骤 1. 初始化最大迭代次数, 种群数量 N, 发现这比例 PD, 侦察者比例 SD、警戒阈值 R2. 步骤 2. 计算麻雀种群的适度值并进行排序, 找出最适度的个体和最适度的个体.
步骤 3. 应用式 (1) 更新发现者的位置.
步骤 4. 应用式 (2) 更新跟随者的位置.
步骤 5. 应用式 (3) 更新预警者的位置.
步骤 6. 完成当前迭代, 获得新的位置.
步骤 7. 计算当前麻雀种群的适度值, 若优于以前的位置, 更新麻雀种群位置.
步骤 8. 判断是否满足最大迭代次数或者精度要求, 若是, 最佳迭代输出结束, 否则返回步骤 3.
二、部分源代码
clc;
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳、余继周、杨杉.智能优化算法及其MATLAB实例(第二版)[M].2016年电子工业出版社.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]张月栋,莫愿斌.改进的麻雀搜索算法及其解决旅行者问题[J].计算机系统应用. 2022,31(02)