精华蚂蚁系统(解决旅行商 TSP问题)

1. 需求分析:
1.1精华蚂蚁系统解决旅行商 TSP问题:
已知n个城市之间的距离,现有m只蚂蚁必须访问这n个城市,并且每个城市只能访问一次,最后必须返回出发城市。如何安排他对这些城市的访问次序,可使其旅行路线的总长最短:
精华蚂蚁系统是对基础ES的第一次改进,它在原AS信息素更新原则的基础上增加了一个对至今最优路径的强化手段。在每轮信息素更新完毕后,搜索到至今最优路径(用Tb表示)的那只蚂蚁将会为这条路径添加额外的信息素。

1.2输入:随机选区cnum个城市的坐标(横纵坐标范围设为1~2000),存放在cnum×2的二维数组citys中。

1.3输出:迭代iter_max次后的最短路径以及最短路线。

2. 概要设计:
2.1 随机选区50、100个城市的坐标(横纵坐标范围设为1~4000),存放在cnum×2的二维数组citys中。

citys=round(rand(100,2)*2000)

2.2 EAS中城市i与城市j的相连边上的信息素量 的更新:

2.2.1 在EAS中,新增了 ,并定义参数e作为 的权值,一般设置e等于城市规模n:
2.2.2 Cb是算法开始至今最优路径的长度。EAS在每轮迭代中为属于Tb的边增加了额外的e/Cb的信息素量。
Tau = (1-rho) * Tau + Delta_Tau ;
修改为:Tau = (1-rho) * Tau + Delta_Tau +e*Delta_b;
其中Delta_b表示精英蚂蚁留下的信息素。
3. 详细设计(主要代码matlab):

%随机生成城市:
%五十个城市:
citys=round(rand(50,2)*2000)
%一百个城市:
citys=round(rand(100,2)*2000)
%精英蚂蚁的设定:
Delta_Tau = zeros(n,n);
% 逐个蚂蚁计算for i = 1:m% 逐个城市计算for j = 1:(n - 1)Delta_Tau(Table(i,j),Table(i,j+1)) Delta_Tau(Table(i,j),Table(i,j+1)) + Q/Length(i);endDelta_Tau(Table(i,n),Table(i,1)) = Delta_Tau(Table(i,n),Table(i,1)) + Q/Length(i);end%EASDelta_b = zeros(n,n);for i=1:(n-1)if iter==1Delta_b=0;elseDelta_b(Route_best((iter-1),i),Route_best((iter-1),i+1))=Q/Route_best(iter-1);
% Route_best((iter-1)为各代最优路径endendTau = (1-rho) * Tau + Delta_Tau+e*Delta_b;

4.实验结果:
实验结果(左):各代最短距离与平均距离之比,(右)最短路线
4.1城市数n=50时:

  • 4.1.1 AS:

    最短距离:11214.4271
    最短路径:21 17 19 11 25 6 48 12 4 28 3 2 22 35 31 36 14 37 50 34 42 32 40 23 49 38 45 18 16 26 8 27 30 41 39 20 24 33 7 44 1 5 47 29 43 46 10 9 15 13 21
    运行时间:66.711 s

  • 4.1.2 EAS

    最短距离:11277.7325
    最短路径:42 34 50 37 14 6 25 19 11 32 23 40 49 38 45 18 16 26 8 47 5 1 7 33 44 27 30 41 39 20 24 29 43 46 10 9 15 13 17 21 28 4 12 3 48 2 22 35 31 36 42
    运行时间:65.039 s

4.2 城市数n=100时:

  • 4.2.1 AS

    最短距离:16433.6365
    最短路径:75 3 80 13 70 39 90 2 51 41 93 68 55 64 88 99 11 100 63 40 35 45 89 61 71 79 38 57 95 42 67 15 8 87 69 81 6 72 62 46 94 25 16 28 36 97 20 23 77 58 34 78 9 73 52 98 22 66 5 96 50 33 43 83 92 32 10 84 74 27 53 21 7 4 56 91 82 65 14 26 85 31 49 86 24 37 12 30 18 19 60 54 29 44 59 48 17 47 1 76 75 运行时间:94.368 s

  • 4.2.2 EAS:

    最短距离: 16223.3569
    最短路径:64 89 61 55 68 8 87 15 42 67 95 57 38 79 71 69 81 6 72 46 94 25 16 28 36 97 62 78 9 34 73 52 66 22 98 5 96 50 33 43 4 56 53 21 7 91 27 74 10 84 14 65 82 26 85 31 49 86 24 37 18 30 12 47 1 76 75 3 13 70 80 41 51 93 2 90 39 17 48 19 54 60 44 29 59 32 92 83 58 23 77 20 45 35 40 63 100 11 99 88 64
    运行时间:100.368 s

  • 4.2.3 把e增大到原来的两倍(e=200)

    最短距离:15969.3803
    最短路径:33 43 5 96 50 98 22 66 52 73 34 78 9 62 46 94 25 16 28 36 97 81 6 72 20 77 23 58 63 40 100 11 99 88 64 55 68 61 89 35 45 69 38 57 95 67 42 15 8 87 79 71 93 51 41 80 13 70 3 75 76 1 47 39 2 90 17 48 30 12 18 19 29 44 59 60 54 37 24 86 49 31 85 26 14 65 82 91 53 21 7 4 56 27 74 84 10 32 92 83 33

  • 4.2.4 把e增大继续增加到300

    最短距离:16044.4963
    最短路径:44 29 54 60 59 85 26 14 65 82 91 21 7 4 56 53 27 74 84 10 32 92 83 43 33 5 96 50 98 22 66 52 73 34 78 9 62 46 94 25 16 28 36 97 72 6 81 69 35 45 23 77 20 58 63 40 11 100 89 61 71 38 79 57 95 67 42 15 87 8 68 55 64 88 99 17 48 47 39 90 2 93 51 41 80 13 70 75 3 76 1 24 37 31 49 86 12 30 18 19 44
    运行时间:92.143 s

  • 4.2.5 在e=200时,启发函数重要程度因子调整为2

    最短距离:18395.5945
    最短路径:5 50 43 33 92 83 59 32 10 4 7 21 53 91 27 74 56 84 14 65 82 26 85 49 31 86 24 12 18 30 19 29 44 54 60 37 64 89 61 55 68 93 51 2 41 80 13 70 3 75 76 1 47 48 17 90 39 99 88 11 100 63 40 45 35 71 79 38 57 95 67 42 15 8 87 69 77 23 58 20 72 6 81 97 36 46 28 16 25 94 62 34 78 9 73 52 98 22 66 96 5
    运行时间:86.035 s

  • 4.2.6 在e=200时,启发函数重要程度因子调整为8

    最短距离:16035.1606
    最短路径:92 83 5 96 50 33 43 66 22 98 52 73 34 78 9 62 46 94 25 16 28 36 97 81 6 72 20 77 23 58 63 40 100 11 99 88 64 89 61 35 45 69 71 79 38 57 95 67 42 15 87 8 55 68 93 51 41 80 13 70 75 3 76 1 47 39 90 2 17 48 30 18 19 44 29 60 54 37 24 12 86 49 31 85 26 14 65 82 91 21 7 4 56 53 27 74 84 10 32 59 92
    运行时间:92.093 s

  • 4.2.7 在e=200时,启发函数重要程度因子为8,调整蚁群数量为70

    最短距离:16312.5495
    最短路径:11 100 63 40 35 45 61 89 64 55 68 71 79 8 87 15 42 67 95 57 38 69 81 6 72 46 94 25 16 28 36 97 62 20 77 23 58 34 78 9 73 52 98 22 66 5 96 50 33 43 83 92 32 4 56 53 21 7 91 27 74 10 84 14 65 82 26 85 54 60 59 29 44 19 18 30 12 24 37 31 49 86 76 75 3 70 13 80 41 51 93 2 90 39 47 1 48 17 88 99 11
    运行时间:110.673s

5.总结:
蚁群算法(AS)的缺点在于收敛速度慢和易于陷入局部最优。
EAS引入 这种额外的信息素强化手段有助于更好的引导蚂蚁搜索的偏向,使算法更快收敛。
从实验结果来看,采用了EAS算法的群体总体收敛的效果会比AS更快,收敛的时间也更早。但是从最佳路程来看,EAS中的参数e若采用和城市数量相同的值,并不能找到比AS更优的路径。但是把e的值做出一定调整,如实验4.2.3中,把e增加到原本的两倍,得出的最短路径是比AS得出的更短的。但是在这时候就可以看出系统的收敛已经出现了不太正常的波动。所以随着这个值的增大,效果并没有随之变得更好。说明精英蚂蚁的作用在系统中占的比重过大,会使系统早熟,得到的结果不是最佳的。
在实验4.2.5和实验4.2.6中,我修改了启发函数重要程度因子,把其修改成了2和8。发现这个值的减小会对最佳路径造成很负面的影响,收敛效果也会变得很差。当这个值为8的时候,在最短路径上并没有得到更好的结果。我在实验后继续增大这个值,发现随着值的增大,找到的最短路径会有略微的减小,但是这个系统变得不收敛。
50个城市和100个城市在同样的情况下的运行时间,并没有和数量一样呈倍数增长。在实验4.2.7中,增加了蚁群数量,运行时间变长,但是效果并没有变好。

精华蚂蚁系统(解决旅行商 TSP问题)相关推荐

  1. 模拟退火(SA, Simulated Annealing)算法解决旅行商TSP问题

    01 什么是旅行商问题(TSP)? TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如 ...

  2. 分支限界解决旅行商tsp问题

    本人的算法大作业 参考博客: http://blog.csdn.net/qq_32400847/article/details/51813606 http://www.cnblogs.com/ciel ...

  3. 【Tsinghua】旅行商(TSP)

    关于这道题,我要说两句,这道题我觉得我用拓扑排序的思路肯定是没错的,而且也对了几组数据,但是其他几组却超时,肯定是哪里的代码优化的不够好...... 最后只得了40分... 旅行商(TSP) 描述 S ...

  4. 鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2)

    鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2) 引言 1.鲸鱼优化算法WOA 1.1 WOA算法原理介绍 1.1.1 包围猎物 1.1.2 气泡网式攻击猎物(开发阶段) 1.1.3 寻 ...

  5. 【路径规划】基于灰狼算法求解旅行商TSP问题matlab源码

    一.旅行商问题 TSP问题即旅行商问题,经典的TSP可以描述为:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地.应如何选择行进路线,以使总的行程最短.从图 ...

  6. Solve TSP with dynamic programming——动态规划解决旅行商(邮递员)问题

    无向简单图的TSP算法 小规模精确解: 算法思想: 小规模精确解的算法中心思想是动态规划思想. 假设给定顶点集合V为{0,1,2,3,4,... .n}.由于图为无向完全图,我们可以很自然地将0视为输 ...

  7. 遗传算法解决旅行商(TSP)问题

    遗传算法解决旅行商问题 作为NP难的经典问题,旅行商问题有多种算法可以解决. 我学习的过程中,首先看到了模拟退火算法解决旅行商问题的过程,模拟退火算法可以保证100%的找到全局最小值. 在我研究遗传算 ...

  8. MATLAB实战系列(十九)-遗传算法解决TSP(旅行商)问题-应用及解析(文末附MATLAB源码)

    接上篇MATLAB实战系列(十八)-遗传算法解决TSP(旅行商)问题-算法原理 https://wenyusuran.blog.csdn.net/article/details/114060030 感 ...

  9. 蚁群算法--旅行商(TSP)问题详解

    蚁群算法--旅行商(TSP)问题详解 蚁群算法 问题与分析 结果显示与分析 蚁群算法 蚁群算法(ant colony optimization)最早是由Marco Dorigo等人在1991年提出,他 ...

  10. matlab算法大全 pdf_遗传模拟退火算法求解旅行商(TSP)问题

    hello大家好,很高兴又和大家见面了.在之前的遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解和模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解这两篇推文中,分别讲解了 ...

最新文章

  1. Datawhale组队学习周报(第040周)
  2. 国际农产品市场谋定特点趋势 对话国际农民丰收节贸易会
  3. Windows phone 8 学习笔记(7) 设备(转)
  4. Github标星5.4k+:常见NLP模型的代码实现(基于TensorFlow和PyTorch)
  5. 中柏平板触摸驱动_一文总览2019年最新最全的工业平板电脑定制化服务
  6. (译)在Objective-c里面使用property教程
  7. ffmpeg源码学习之time_base
  8. Qt工作笔记-QTabWidget插入widget(重要的是编程思想)
  9. android banner动画框架,Android Studio Banner轮播图使用
  10. nyoj 456 邮票分你一半【01背包】
  11. 作为一个非天才型选手,普通程序员如何升级打怪?
  12. apache的rewrite详解
  13. gogs 把用户加入项目
  14. html登录页面代码实现原理,web登录代码
  15. P8842 [传智杯 #4 初赛] 小卡与质数2 垃圾筛
  16. Hadoop安装错误:Cannot set priority of secondarynamenode process : xxxxx
  17. python3 规则引擎_Ilog、Drools、Jess规则引擎的Rule Language 对比
  18. 软件工程-大学体育馆管理系统交互图
  19. c++操作Office之ppt
  20. PowerPoint让你快速成为PS高手——抠图

热门文章

  1. Java10-I/O
  2. iOS同时适配iPad横屏和iPhone竖屏
  3. Php7.5,phpwind7.5灵活的业务支持体系
  4. python改变字符颜色_Python字符串为颜色
  5. matlab 还原内部函数,matlab内部函数
  6. i3 9350KF和i5 9400F的区别
  7. html5 canvas实现桌面效果,基于html5 canvas实现漫天飞雪效果的方法
  8. Class 'Qcloud\Sms\SmsSingleSender' not found
  9. WORD公式编辑器的使用(快捷键or添加快捷方式到工具栏)
  10. word2010公式编辑器 格式设置