算法思想:蚁群在觅食的过程中往往会选择一个最短的路径,之所以能选出最优路径是因为蚂蚁在觅食的过程中会分泌信息素用于告诉同伴觅食路径,信息素越浓的地方号召的蚂蚁数越多;在分泌等量信息素的前提下,越短的路径上信息素浓度越高,这样这条路径上的蚂蚁会越来越多,反过来又增加了该路径上的信息素浓度。
算法在TSP问题中的应用:
数据结构
D,存储各个城市之间距离的矩阵
T,存储城市之间每个路径上的信息素
初始化
蚁群大小S
城市个数N
将T中每条存在的路径初始化为1/NUM(城市图中存在的边数)
核心循环
For(Each S)//对第K轮种群搜索
BEGIN
For(i->j)//从当前所在的城市i到城市j,共N个城市
BEGIN
此时旅行者在城市i面临如何选择下一个城市j的问题,对每个可达的城市而言都存在从i到j的路径,
路径上含有信息素,可以据此计算旅者选择每个路径的概率值P,信息素大的路段被选择的概率就大
j:=i;
END
END
当S中所有个体都找到一个路径后,选出路径值最短(如果比上一轮种群搜索的值还要小)的那个作为此次种群搜索得到的最优值f,接下来要做的就是更新每个路段上信息素的值
更新信息素
Tij=(1-P)Tij+P/|W|//如果i->j属于这次最优路径W上的路段
Tij=(1-P)Tij
上述算法是基于图的蚁群系统(GBAS),其信息素的更新方式属于离线(同步)更新方式。在线更新是指每个蚂蚁每走一步都更新一次信息素。