蚁群算法用于最短路径寻优比较常见。
基于原理
算法:
1,n个城市坐标点 C(,)
2,n个城市间全连接距离矩阵 ,
3, 将m只蚂蚁随机放到n个城市,每个城市均有蚂蚁
4, 给定一个信息素矩阵,,,之后迭代更新
5,计算矩阵启发因子,这里为距离的倒数
6, 定义 表征信息素重要程度的参数; 表征启发式因子重要程度的参数
7,计算一只蚂蚁,从城市到达下一城市的概率公式:
-------(1)
:蚂蚁最近走的到一处地方,为下一作城市
在这里计算了蚂蚁城市到达下一城市的所有概率,接下来使用轮盘赌算法,使蚂蚁选择不同的路。而轮盘赌算法就公式而言,和蚁群算法核心很相似。
轮盘赌算法:https://blog.csdn.net/pymqq/article/details/51375522
8,为第i个蚂蚁走过的路
9,信息素更新公式:
--------------(2)
Q 信息素增加强度系数。为第i个蚂蚁走过的全距离。本质更新为所有的路段的信息素增量:经过这个路段的蚂蚁走过的全距离的倒数*比例。
最后蚁群算法实现核心有两点:1,蚂蚁如何选择下一个城市;2,城市间路径信息素如何更新。
1,下一城市选择基于概率计算,计算公式为(1),得到剩下去城市概率,产生一个随机数,基于随机数决定去下面哪一个城市。例如:剩3个城市,概率为:0.1,0.2,0.7,累计概率为:0.1,0.3,0.7,产生一个随机数,随机数为0.21,则去城市2。此过程则为轮盘赌,又可说其服从蚁群算法会优先去概率大的地方,但还是随机走。
2,概率由信息素决定,信息素根据蚂蚁走过的路线长度进行更新,每一段城市i,j之间的信息素增量为经过这段的路蚂蚁总路径的倒数*比例。
算法实现:https://blog.csdn.net/zlk961543260/article/details/70172647