图中两点所有路径_采用蚁群算法解决最短路径问题

2023-05-16

大家好!树仁巧说与您又见面啦,非常感谢手机屏幕前的你能点击进来。‍‍

今天跟大家聊一聊蚁群算法,顾名思义肯定有蚂蚁有关系,蚂蚁也是拥有智慧的生物,从蚂蚁的智慧中我们人类总结规律得出了今天要说的蚁群算法。废话不多说,大家先看动图——

64500ef13fc7c8975c659f5b0e98a110.gif

图中我们可以看到有一群蚂蚁,左边是起点右边是终点,蚂蚁要从左圈到右圈去,我们可以看到这群蚂蚁在很短的时间里找到了起点到终点的最短路径,所以说蚂蚁非常的聪明啊,那么这个图也差不多就说明了蚁群算法的基本原理。下面我们来详细的说一说。

这个昆虫学家啊,通过大量的研究发现:蚂蚁个体之间是通过信息交流达到找到从蚁巢到食物源的最短路径的目的。蚂蚁一般有个“坏习惯”喜欢走到哪都随手留下“垃圾”。开个玩笑,其实是蚂蚁个体通过在其所经过的路上留下一种称之为“信息素”(pheromone)或“迹”的物质来实现与同伴之间的信息传递。随后的蚂蚁遇到信息素时,不仅能检测出该物质的存在以及量的多少,而且可根据信息素的浓度来指导自己对前进方向的选择。就好比长辈给我们很多的教诲我们也就会以后少走弯路。那么蚂蚁留下来的这个信息素,会随着时间的推移会逐渐挥发掉,于是路径的长短及其蚂蚁的多少就对残余信息素的强度产生影响,反过来信息素的强弱又指导着其它蚂蚁的行动方向。因此,某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大。这就构成了蚂蚁群体行为表现出的一种信息正反馈现象,并实现找到蚁巢到食物源的最短路径。(所以说像蚂蚁这种喜欢合作的生物其实是很强大的啊)

69c7b020326bdb51d1400021e6731357.png

所以蚁群算法的基本原理就是:

1、蚂蚁在路径上释放信息素。

2、碰到还没走过的路口,就随机挑选一条路走。同时,释放与路径长度有关的信息素。

3、信息素浓度与路径长度成反比。后来的蚂蚁再次碰到该路口时,就选择信息素浓度较高路径。

4、最优路径上的信息素浓度越来越大.

5、最终蚁群找到最优寻食路径。

现在大家就可以联想一下蚁群算法在我们现在实际生活当中的应用是不是有很多呢,比如高德地图,选择要去的地方就能立刻为你找出最短的路线。除此之外呢蚁群算法在大数据,区域块和人工智能中有非常广的应用。

提到最短路径问题,在数学建模中有一个经典问题就是旅行商问题(TSP)。一个商人欲到 n个城市推销商品,每个两个城市i和j之间的距离为dij,如何选择一条道路使得商人每个城市走一遍后回到起点且所走路径最短。

分析问题并用数学方式来表达:

1f1e27f213bedfd4f241ba80b8b9829f.png

第一、二个约束条件分别表示从城市i出发和到达城市j只有一次。同时在避免产生回路的前提之下,选择 ij路线为1,否则为0。

接下来就是要想办法怎么来实现蚁群算法。

根据我们前面所说的原理相对应,蚁群优化算法的核心思想有三条:

第一,选择机制:迹越多的路径,被选中的概率越大;

第二,迹更新机制:路径越短,迹增加越快;

第三,协作机制:个体之间通过迹进行信息交流;

我们以TSP问题为例:

第一步:初始化

 简单来讲,就是放点蚂蚁放到这些城市里。将m只蚂蚁放入到n个随机选择的城市中。

第二步:选择机制

每一只蚂蚁每一步的行动是,根据一定的依据选择下一个它还没有访问的城市。这个选择依据有两点:一,t 时刻连接城市i和j 的路径上残留信息(迹)的浓度—— Tij(t)。二,由城市i转移到城市j 的启发信息,该启发信息是由要解决的问题给出的——  η_ij  ,在TSP问题中一般取η_ij=1/dij  ,其中,dij    表示城市 i,j 间的距离,η_ij 在这里可以称为先验知识(定义类似于贝叶斯中的先验概率)那么,t 时刻位于城市i的蚂蚁 k 选择城市j 为目标城市的概率是:

1678691c3fe18a2ec5db73cf38f5f93f.png

α表示残留信息的相对重要程度;β表示启发信息的相对重要程度;Nki即所有可能的目标城市,即还没有访问的城市。如果表达式看不懂,那这个表达式就可以理解为是在残留信息和启发信息的共同作用下选择k城市的概率。

第三步:迹更新机制

在完成一步(从一个城市到达另外一个城市)或者一个循环(完成对所有n个城市的访问)后,更新所有路径上的残留信息浓度。 目的在于为了避免残留信息过多引起的残留信息淹没启发信息的问题。

那么迹更新机制也有很多种算法,这里给大家推荐ant-cycle算法,因为相比较而言,它效果最好,这是因为它用的是全局信息。(具体不做介绍,大家可以自己了解,了解有这么一个步骤就好)

第四步:判断是否停止算法,停止则输出最优结果;否则,返回第二步。

蚁群算法的基本原理就如以上所示,随着现代技术进步,有很多学者对蚁群算法进行了优化改进达到更好的效果。下面就到了给大家实际操作的阶段啦,开始!!!

工具依然是:MATLAB

寻找31个城市的TSP问题最短路径,将31个城市的坐标保存为变量

f41d69cecd8adaa3b1e45328445ab3f1.png

然后,就是俩字——代码:

8b3927e9738e8d9afdd1370e95223b6c.png

这里只是一点哦,然后就会,就会就会——?

得到最终结果最短距离为 15828.7082

85394a496a387160c55b4ddf0d457b35.png

如果你说自己实在看不懂,或者不想看懂没关系,学会去套,你也可以轻松实现用蚁群算法求最短路径啦。

今天的和您分享的内容就到此结束啦,如果你是认真看完的,非常感谢。

创作不易,希望大家多多支持,点个关注点亮在看,“树仁巧说”下期和您再见(有什么想看的内容可以后台私信我啊)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图中两点所有路径_采用蚁群算法解决最短路径问题 的相关文章

随机推荐