蚁群算法解决TSP问题程序

蚁群算法用于求解TSP问题,经过仿真测试,发现此程序的优化效率和鲁棒性都非常好。

这与在无线多媒体传感器网络路由算法应用到的寻找最佳路径的蚁群算法非常相似。

function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length] ACATSP C,NC_max,m,Alpha,Beta,Rho,Q %% %%? 主要符号说明%%? C n个城市的坐标,n×2的矩阵%%? NC_max?? 最大迭代次数%%? m 蚂蚁个数%%? Alpha???表征信息素重要程度的参数%%? Beta??? 表征启发式因子重要程度的参数%%? Rho????信息素蒸发系数%%? Q 信息素增加强度系数%%? R_best?? 各代最佳路线%%? L_best?? 各代最佳路线的长度%% %%第一步:变量初始化n size *,1 ;%*表示问题的规模(城市个数)* zeros n,n ;%D表示完全图的赋权邻接矩阵for i 1:n for j 1:n if i~ j D i,j C i,1 -C j,1 ^2+ C i,2 -C j,2 ^2 ^0.5; else D i,j eps; end D j,i D i,j ; endendEta 1./D;%Eta为启发因子,这里设为距离的倒数Tau ones n,n ;%Tau为信息素矩阵Tabu zeros m,n ;%存储并记录路径的生成NC 1;%迭代计数器R_best zeros NC_max,n ;%各代最佳路线L_best inf.*ones NC_max,1 ;%各代最佳路线的长度L_ave zeros NC_max,1 ;%各代路线的平均长度while NC NC_max%停止条件之一:达到最大迭代次数 %%第二步:将m只蚂蚁放到n个城市上 Randpos []; for i 1: ceil m/n Randpos [Randpos,randperm n ]; end Tabu :,1 Randpos 1,1:m '; %%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游 for j 2:n for i 1:m visited Tabu i,1: j-1 ;%已访问的城市 J zeros 1, n-j+1 ;%待访问的城市 P J;%待访问城市的选择概率分布 Jc 1; for k 1:n if length find visited k 0 J Jc k; Jc Jc+1; end end %下面计算待选城市的概率分布 for k 1:length J P k Tau visited end ,J k ^Alpha * Eta visited end ,J k ^Beta ; en* * */ sum P ; %按概率原则选取下一个城市 Pcum cumsum P ; Select find Pcum rand ; to_visit J Select 1 ; Tabu i,j to_visit; end end if NC 2 Tabu 1,: R_best NC-1,: ; end %%第四步:记录本次迭代最佳路线 L zeros m,1 ; for i 1:m R Tabu i,: ; for j 1: n-1 L i L i +D R j ,R j+1 ; end L i L i +D R 1 ,R n ; end L_best NC min L ; pos find L L_best NC ; R_best NC,: Tabu pos 1 ,: ; L_ave NC mean L ; NC NC+1 %%第五步:更新信息素 Delta_Tau zeros n,n ; for i 1:m for j 1: n-1 Delta_Tau Tabu i,j ,Tabu i,j+1 Delta_Tau Tabu i,j ,Tabu i,j+1 +Q/L i ; end Delta_Tau Tabu i,n ,Tabu i,1 Delta_Tau Tabu i,n ,Tabu i,1 +Q/L i ; end Tau 1-Rho .*Tau+Delta_Tau; %%第六步:禁忌表清零 Tabu zeros m,n ;end%%第七步:输出结果Pos find L_best min L_best ;Shortest_Route R_best Pos 1 ,: ;Shortest_Length L_best Pos 1 ;subplot 1,2,1 DrawRoute

蚁群算法解决tsp问题c语言,蚁群算法解决TSP问题程序.doc相关推荐

  1. c语言文件加密解密单词统计,C语言文件加密解密及单词统计程序.doc

    C语言文件加密解密及单词统计程序.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分  高级语言程序设计 课程设计学 院 计算 ...

  2. c语言算法集,【二级C语言】数据结构算法集---C  语言实现

    蜡烛马区新固动工八拐怪状小城,小城炮兵会晒茶麸领子.冒算心头画行启脾沙拉,壮志骗人淡漠流生宣布木锯南政新车?猛料妙绝长亭浓味寺塔马兜放领理光.普特民师初生情境民寿流传灭绝!勤恳心曲修整拭除转子苛评. ...

  3. c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序.doc

    C语言课程设计报告模拟时钟转动程序 PAGE 课程设计报告 题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 ...

  4. 分治算法求最大最小值c语言,[蓝桥杯][算法提高VIP]和最大子序列 (C语言代码)分治法...

    解题思路: 注意事项: 参考代码:#include #include #include #include #include #include using namespace std; const in ...

  5. 算法训练+乘法表c语言,[蓝桥杯][算法提高VIP]输出九九乘法表 (C语言代码)

    解题思路:Nine那些直接复制输出 注意事项: 参考代码: #include int main() { int i,j; printf("  Nine-by-nine Multiplicat ...

  6. 王晓东算法设计与分析c语言,Algorithm 计算机算法设计与分析(王晓东版)课程设计经典例子 - 下载 - 搜珍网...

    程序/ 程序/lab 3-11/ 程序/lab 3-11/3-11 正则表达式匹配问题.cpp 程序/lab 4-11/ 程序/lab 4-11/4-11 删数问题.cpp 程序/lab 4-3/ 程 ...

  7. 数据结构与算法入门教程(C语言实现版)

    个人简介 作者是一个来自河源的大三在校生,以下笔记都是作者自学之路的一些浅薄经验,如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门. 文章目录 个人简介 C语言数据结构与算法 BF和 ...

  8. c语言编程软件12个球,计算机二级考试C语言辅导:12个球的程序

    有12个外表一模一样的小球,其中有一个的质量和其他11个球不一样(11个球的质量完全相同),而且该球不知道是轻点还是重点.现在给你一个天平(无砝码),只有3次测量机会,请你找出该球.球号从a到l(小写 ...

  9. 【路径规划-TSP问题】基于粒子群结合蚁群算法求解旅行商问题附matlab代码

    1 内容介绍 一种基于粒子群优化的蚁群算法求解TSP问题的方法.该方法在求解TSP问题时,利用粒子群优化的思想,对蚁群算法的参数取值进行优化并选择.在粒子群算法中,将蚁群算法的5个参数(q,α,β,ρ ...

最新文章

  1. 程序员语言也有鄙视链!某美团程序员爆料:筛选简历时,用go语言的基本不看!网友:当韭菜还当出优越感了!...
  2. Python——文本中读取到【\ufeff】解决方案
  3. 【架构师】【数据库基础】【笔记 01】快速了解数据库系统的重要概念01
  4. 十分钟了解HTTPS协议
  5. 杀鸡儆猴!苹果撤销Facebook的iOS企业证书
  6. centos 7 163 yum 源 python 2.7.5
  7. 面向对象程序设计_Task5_Calculator1.5.0
  8. 会声会影2022新版本对电脑配置要求
  9. 硕士学位论文之wps页眉页脚
  10. 【多线程】多线程到底是个甚——多线程初阶(复习自用)
  11. mac 解压rar文件
  12. 有一个人有一百块钱, 打算买一百只鸡, 现在大鸡三块钱一只, 小鸡一块钱三只, 不大不小的鸡两块钱一只. Java编程实现,刚好用一百块钱买一百只鸡.
  13. 赛效:怎么用改图鸭进行一键Logo设计?
  14. 计算机编程常用的英语,100916计算机编程常用的英语
  15. [BugKu Web]ez_serialize
  16. 【定量分析、量化金融与统计学】R语言:多元线性回归实例
  17. 通过Trie实现违禁词过滤
  18. CRC校验查表法原理及实现(CRC-16)
  19. 一步步教你微信怎么搭建小程序
  20. 组合数学(5)——拉丁方与H矩阵例题

热门文章

  1. html转换jquery,将html字符串转化为jquery对象
  2. 基于JAVA+SpringMVC+Mybatis+MYSQL的球鞋购物系统
  3. 基于JAVA+Servlet+JSP+MYSQL的网上订餐管理系统
  4. 基于JAVA+SpringBoot+Mybatis+MYSQL的今日头条新闻网站
  5. linux智能灌溉流程,农田自动灌溉系统及灌溉方法与流程
  6. Python之基础练习题
  7. springAOP之代理
  8. .net找List1和List2的差集
  9. SqlBulkCopy导入大数据
  10. Oracle checkpoint 说明