蚁群算法解决TSP问题(Matlab实现)

介绍

蚁群算法是一种用来寻找优化路径的概率型算法。其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。这种算法具有分布式计算、信息正反馈和启发式搜索的特征,本质上是进化算法中的一种启发式全局优化算法。

基本原理

  1. 蚂蚁在携带等量的信息素一路释放
  2. 信息素浓度会和路径的长度成反比
  3. 下次蚂蚁来到该路口会选择信息素浓度较高的那条
  4. 短的路径上的信息素浓度会越来越大,最终成为蚁群的最优路径
    蚁群算法解决TSP问题(Matlab实现)_第1张图片

参数解析

定义 参数影响分析
alpha 信息启发式因子 alpha的值越大,蚂蚁选择之前走过的路径可能性越大,搜索路径的随机性减弱,alpha越小,蚁群搜索范围就会减少,容易陷入局部最优
beta 期望启发式因子 beta的值越大,蚁群就越容易选择局部较短路径,这时算法的收敛速度是加快了,但是随机性却不高,容易得到局部的相对最优
m 蚁群数量 m的数量越多,得到的最优解就越精确,但是会产生不少重复解,随着算法接近最优值的收敛,信息正反馈作用降低,大量的重复工作,消耗了资源,增加了时间复杂度
v 信息挥发因子,1-v表示残留因子 v过小时,在各路径上残留的信息素过多,导致无效的路径被搜索,影响到算法的收敛速率,v过大,无效的路径虽然可以被排除搜索,但是不能保证有效的路径也会被放弃搜索,影响到最优值的搜索

算法流程

  1. 开始
  2. 建立种群和基本参数设置
  3. 开始迭代
  4. 随机产生出发城市
  5. 计算城市间的转移概率,轮盘赌确定下一个访问的城市
  6. 计算各条路径距离
  7. 更新信息素
  8. 每次迭代记录下最优值,转到第二步,迭代次数加1
  9. 结束

Matlab代码实现

蚁群算法解决TSP问题(Matlab实现)_第2张图片
蚁群算法解决TSP问题(Matlab实现)_第3张图片

蚁群算法解决TSP问题(Matlab实现)_第4张图片
蚁群算法解决TSP问题(Matlab实现)_第5张图片
蚁群算法解决TSP问题(Matlab实现)_第6张图片
蚁群算法解决TSP问题(Matlab实现)_第7张图片
蚁群算法解决TSP问题(Matlab实现)_第8张图片
蚁群算法解决TSP问题(Matlab实现)_第9张图片

你可能感兴趣的:(算法)