一、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版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]黄海松,任竹鹏,魏建安.改进狼群算法求解旅行商问题[J].计算机应用研究. 2019,36(12)

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

  1. 【路径规划-TSP问题】基于蚁群算法求解旅行商问题含Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  2. 【MVO TSP】基于matlab灰狼算法求解旅行商问题【含Matlab源码 1327期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab灰狼算法求解旅行商问题[含Matlab源码 1327期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  3. 【BA TSP】基于matlab蜜蜂算法求解旅行商问题【含matlab源码 1248期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab蜜蜂算法求解旅行商问题[含matlab源码 1248期] 获取代码方式2: 付费专栏Matlab路径规划(初级版 ...

  4. 【IA TSP】基于matlab免疫算法求解旅行商问题【含Matlab源码 195期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[旅行商问题]基于matlab免疫算法求解旅行商问题[含Matlab源码 195期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  5. 【图像去噪】基于matlab全变分算法图像去噪【含Matlab源码 626期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab全变分算法图像去噪[含Matlab源码 626期] 获取代码方式2: 付费专栏Matlab图像处理(初级版) ...

  6. 【图像分割】基于matlab萤火虫算法图像分割【含Matlab源码 2136期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像分割]基于matlab萤火虫算法图像分割[含Matlab源码 2136期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  7. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  8. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  9. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

最新文章

  1. 使用 Python 的图像隐写术
  2. systemd系统服务管理详解
  3. CVE-2018-8120 Windows权限提升
  4. 一步一步SharePoint 2007之十四:实现Form认证(4)——创建管理帐户
  5. python线程卡死问题解决_python while True造成未响应或卡顿的解决方法
  6. 快速转换vs2008到vs2010
  7. delete 会不会锁表_truncate 和 delete
  8. Firefox开发者版本终于支持Windows 64位
  9. python创建文件对象的函数_Python学习笔记之—— File(文件) 对象常用函数
  10. 【ArcGIS教程】专题图制作-地图渲染-地图整饰
  11. 破解版xftp下载地址
  12. wbe下载Excel文件Response响应头格式
  13. python教材答案第四章_第四章-习题答案
  14. 非对称加密 DH算法
  15. 微信小程序 人脸识别功能 代码 wx.faceDetect
  16. 数据分析师面试题目_拼多多面经分享:24个「数据分析师」岗位面试题和答案解析...
  17. mysql局域网访问6_mysql局域网访问
  18. 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深?
  19. Android 改变View的中心点
  20. 烤仔TVのCCW | 区块链中的 Merkle 树

热门文章

  1. netcore codefirst生成数据库命令
  2. 第一节:分布式文件系统(DFS,Distributed File System)
  3. angularjs 指令详解
  4. JVM本地方法栈及native方法
  5. Struts2之命名空间与Action的三种创建方式
  6. 第09课 OpenGL 移动图像
  7. latex中嵌入视频文件
  8. atitit 编程语言概念与原理
  9. Atitit refact art 重构的艺术 目录 1. Concept 1 1.1. Bp 1 2. Prob 2 3. Tool 2 1.Concept 1. legacy code遗留代
  10. Atitit 理财之道---支出大骗局分析与防范