蚁群算法及其应用实例
蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种对自然界蚂蚁的寻径方式进行模拟而得到的一种仿生算法,是一种用来在图中寻找优化路径的机率型算法。
蚂蚁在运动过程中,可以在行走的路径上留下信息素,后来的蚂蚁可以感知到信息素的存在,信息素浓度越高的路径越容易被后来的蚂蚁选择,从而形成一种正反馈现象。
它能够求出从原点出发,经过若干个给定的需求点,最终返回原点的最短路径。这也就是著名的旅行商问题(Traveling Saleman Problem,TSP)。
若蚂蚁从A点出发到D点觅食,它可以随机从ABD或ACD中选择一条路。假设初始时为每条路分配一只蚂蚁,每个时间单位行走一步,则经过8个时间单位后,情形如下图所示:ABD路线的蚂蚁到达D点,ACD路线的蚂蚁到达C点。
那么,再过8个时间单位,很容易可以得到下列情形:ABD路线的蚂蚁回到A点,ACD路线的蚂蚁到达D点。
α 代表信息素量对是否选择当前路径的影响程度,反映了蚁群在路径搜索中随机性因素作用的强度。
α 越大,蚂蚁选择以前走过的路径的可能性越大,搜索的随机性就会减弱。
α 过小,会导致蚁群搜索过早陷入局部最优,取值范围通常为[1,4]。
β 反映了启发式信息在指导蚁群搜索中的相对重要程度,蚁群寻优过程中先验性、确定性因素作用的强度。
β 过大,虽然收敛速度加快,但是易陷入局部最优。
β 过小,蚁群易陷入纯粹的随机搜索,很难找到最优解。通常取[0,5]。
ρ 反映了信息素的蒸发程度,相反,1-ρ 表示信息素的保留水平
ρ 过大,信息素会发过快,容易导致最优路径被排除。
ρ 过小,各路径上信息素含量差别过小,以前搜索过的路径被在此选择的可能性过大,会影响算法的随机性和全局搜索能力。通常取[0.2,0.5]。
m过大,每条路径上信息素趋于平均,正反馈作用减弱,从而导致收敛速度减慢。
m过小,可能导致一些从未搜索过的路径信息素浓度减小为0,导致过早收敛,解的全局最优性降低
总信息量Q对算法性能的影响有赖于αβρ的选取,以及算法模型的选择。
Q对ant-cycle模型蚁群算法的性能没有明显影响,不必特别考虑,可任意选取。
蚁群算法
在蚂蚁种群中,蚂蚁间相互交流的方式是通过一种名为信息素的物质,它可以是蚂蚁行动时留下的物质,可以被其他蚂蚁所感知。
在寻找食物的过程中,如左图所示,三角形ABC是等边三角形,蚂蚁窝在A点,C点有食物,A点的两只蚂蚁选择了两条路线前往C点,一条为AB->BC,另一条A->C,当走远路的蚂蚁,到达C点时,延AC边上的蚂蚁已经走了一个来回,路径上信息素如右图所示。后到会感知到边AC上的信息素浓度更高一些,于是他也会选择AC来行走,因为相同时间内,信息素浓度更高的说明,路程更短。
蚁群算法便是基于这样的一个思想来解决如TSP等优化问题,一下介绍便是拿TSP问题来介绍蚁群算法
信息素用符号τ来表示,如下式,下标i,j表示从城市i到城市j这条道路上的信息素,上标0表示这是初次计算,也就是初始信息素,初始信息素都设置为1,或者一个较小的常数,表示每条道路上的信息素都相等,这样通过运算蚂蚁爬向各个城市的概率都相等
基于信息素,每只蚂蚁都有一个选择道路的公式,如下式
其中
当所有蚂蚁完成一次周游后,各个路径上的信息素进行一次更新