蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来寻找优化路径的概率型算法。这种算法具有分布计算、资讯正反馈和启发式搜寻的特征,本质上是进化算法中的一种启发式全域性优化算法。
算法原理
蚁群算法是模拟自然界中蚂蚁的群体行为。用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。路径较短的蚂蚁释放的资讯素量较多,随着时间的推进,较短的路径上累积的资讯素浓度逐渐增高,选择该路径的蚂蚁个数也愈来愈多。最终所有的蚂蚁都会选择最短路径 ,此时对应的便是待优化问题的最优解。
算法规则
1、觅食规则
蚂蚁感知范围是一个3*3的格子,也就是说,这个格子中有食物就直接过去。
2、移动规则
蚂蚁会朝着资讯素浓的地方移动,如果没有感知到资讯素,就会按著惯性一直走下去。
3、避障规则
蚂蚁在遇到障碍物的时候会选择随机方向移动,同时遵循上面两个规则。
4、资讯素规则
蚂蚁在刚发现食物的时候挥洒的资讯素会多,距离越远,资讯素越少。
算法流程
1、对相关引数进行初始化,包括蚁群规模、资讯素因子、启发函式因子、资讯素挥发因子、资讯素常数、最大迭代次数等,以及将资料读入程式,并进行预处理。
2、随机将蚂蚁放于不同出发点,对每个蚂蚁计算其下个访问位置,直到有蚂蚁访问完所有位置。
3、计算各蚂蚁经过的路径长度,记录当前迭代次数最优解,同时对路径上的资讯素浓度进行更新。
4、判断是否达到最大迭代次数,若否,返回步骤2;是,结束程式。
5、输出结果,并根据需要输出寻优过程中的相关指标,如执行时间、收敛迭代次数等。
在使用该算法时,首先生成一定数量的蚂蚁,让每只蚂蚁形成初始解,再从问题的初始状态出发,根据"激素"浓度来选择下一个要转移的路径,直至建立起一个解,并根据路径的好坏释放一定浓度的激素,之后再开始新的解。
算法特点
1、采用正反馈机制,使得搜寻过程不断收敛,最终逼近最优解。
2、每个个体可以通过释放资讯素来改变周围的环境,且每个个体能够感知周围环境的实时变化,个体间通过环境进行间接地通讯。
3、搜寻过程采用分散式计算方式,多个个体同时进行平行计算,大大提高了算法的计算能力和执行效率。
4、启发式的概率搜寻方式不容易陷入区域性最优,易于寻找到全域性最优解。
算法应用
算法应用于其他组合优化问题,如旅行商问题、指派问题、Job—shop排程问题、车辆路由问题、图着色问题和网络路由问题等。最近几年,该算法在网络路由中的应用受到越来越多学者的关注,并提出了一些新的基于蚂蚁算法的路由算法。