蚁群算法(ACO)是受自然界中蚂蚁搜索食物行为的启发,是一种群智能优化算法。它基于对自然界真实蚁群的集体觅食行为的研究,模拟真实的蚁群协作过程。算法由若干个蚂蚁共同构造解路径,通过在解路径上遗留并交换信息素提高解的质量,进而达到优化的目的。蚁群算法作为通用随机优化方法,已经成功的应用于TSP等一系列组合优化问题中,并取得了较好的结果。但由于该算法是典型的概率算法,算法中的参数设定通常由实验方法确定,导致方法的优化性能与人的经验密切相关,很难使算法性能最优化。
蚁群算法中每只蚂蚁要选择下一步所要走的地方,在选路过程中,蚂蚁依据概率函数
选择将要去的地方,这个概率取决于地点间距离和信息素的强度。
(t+n) = (t)+ Δ (t+n)
上述方程 表示信息素的保留率,1- 表示信息素的挥发率,为了防止信息的无限积累, 取值范围限定在0~1。Δ ij 表示蚂蚁k在时间段t到 (t +n)的过程中,在i到j的路径上留下的残留信息浓度。
在上述概率方程中,参数α和β:是通过实验确定的。它们对算法性能同样有很大的影响。α值的大小表明留在每个节点上信息量受重视的程度,其值越大,蚂蚁选择被选过的地点的可能性越大。β值的大小表明启发式信息受重视的程度。
这两个参数对蚁群算法性能的影响和作用是相互配合,密切相关的。但是这两个参数只能依靠经验或重复调试来选择。
在采用蚁群-粒子群混合算法时,我们可以利用PSO对蚁群系统参数α和β的进行训练。
具体训练过程:假设有n个粒子组成一个群落,其中第i个粒子表示为一个二维的向量 xi = ( xi1 , xi2 ) , i = 1, 2, ⋯,n,即第i个粒子在搜索空间的中的位置是xi。换言之,每个粒子的位置就是一个潜在的解。将xi带入反馈到蚁群系统并按目标函数就可以计算出其适应值,根据适应值的大小衡量解的优劣。
蚁群算法的优点:
蚁群算法与其他启发式算法相比,在求解性能上,具有很强的鲁棒性(对基本蚁群算法模型稍加修改,便可以应用于其他问题)和搜索较好解的能力。
蚁群算法是一种基于种群的进化算法,具有本质并行性,易于并行实现。
蚁群算法很容易与多种启发式算法结合,以改善算法性能。
蚁群算法存在的问题:
TSP问题是一类经典的组合优化问题,即在给定城市个数和各城市之间距离的条件下,找到一条遍历所有城市且每个城市只能访问一次的总路程最短的路线。蚁群算法在TSP问题应用中取得了良好的效果,但是也存在一些不足:
(1),如果参数 , , 设置不当,导致求解速度很慢且所得解的质量特别差。
(2),基本蚁群算法计算量大,求解所需时间较长。
(3),基本蚁群算法中理论上要求所有的蚂蚁选择同一路线,该线路即为所求的最优线路;但在实际计算中,在给定一定循环数的条件下很难达到这种情况。
另一方面,在其它的实际应用中,如图像处理中寻求最优模板问题,我们并不要求所有的蚂蚁都找到最优模板,而只需要一只找到最优模板即可。如果要求所有的蚂蚁都找到最优模板,反而影响了计算效率。
蚁群算法收敛速度慢、易陷入局部最优。蚁群算法中初始信息素匮乏。
蚁群算法一般需要较长的搜索时间,其复杂度可以反映这一点;而且该方法容易出现停滞现象,即搜索进行到一定程度后,所有个体发现的解完全一致,不能对解空间进一步进行搜索,不利于发现更好的解。
粒子群优化具有相当快的逼近最优解的速度,可以有效的对系统的参数进行优化。粒子群算法的本质是利用当前位置、全局极值和个体极值3个信息,指导粒子下一步迭代位置。其个体充分利用自身经验和群体经验调整自身的状态是粒子群算法具有优异特性的关键。PSO算法的优势在于求解一些连续函数的优化问题。
PSO算法存在的问题:
问题最主要的是它容易产生早熟收敛(尤其是在处理复杂的多峰搜索问题中)、局部寻优能力较差等。PSO算法陷入局部最小,主要归咎于种群在搜索空间中多样性的丢失。
不同算法的混合模型主要分为两类:(1)全局优化算法与局部优化算法混合;(2)全局优化算法与全局优化算法混合。纵观各种与PSO算法相关的混合算法,大多数基本上采用一种策略对其改进,要么与其他算法,要么加入变异操作,同时采用两种策略的混合算法较少。
上述策略中,两者之间有一定的矛盾性,全局算法与局部算法相混合,尽管可以提高局部收敛速度,但也加剧了陷入局部极小的可能;全局算法与全局算法的混合,算法的局部细化能力仍然没有改善。但如果只加入变异操作,则算法的探测能力得到提高,但也损害了其局部开发能力。
因此如果将局部搜索和变异操作同时混合到PSO算法中,通过适当的调节,发挥各自的优点,提高算法的开发能力,增加变异操作防止算法早熟,来共同提高PSO算法的全局寻优能力。
融合策略:
(1) 针对蚁群算法初始信息素匮乏的缺点,采用其他算法生成初始信息素分布,利用蚁群算法求精确解,从而提高时间效率和求解精度。(使用的其他算法的求解结果以什么规则转换成蚁群算法的信息素初值,需要通过多次实验)
(2) 将其他算法(如遗传算法)引入到蚁群算法系统的每次迭代过程中。以蚁群系统每一代形成的解作为其他算法的初始种群,然后经过其他算法的多次迭代,试图寻找更好的解,从而加快蚁群系统的收敛速度,提高求解速率。
(3) 蚁群算法中α,β的选取往往是通过经验来取得的,而选取不当时会造成算法的性能大大降低,因此可以利用其他算法对蚁群系统参数α,β进行训练。
(4) 对于蚁群算法出现过早收敛于非全局最优解以及时间过长的缺点,可以通过使用蚁群算法进行搜索,然后用其他算法对蚁群算法得到的有效路由路径,通过选择、交叉、变异等优化过程,产生性能更优的下一代群体。
(5) PSO算法由于局部寻优能力较差,因此可以在搜索过程中融入确定性局部搜索算法。