ABC算法是近年来受到广泛关注的一种模拟蜂群觅食行为的优化算法,该算法是2005年由土耳其Erciyes University(埃尔吉耶斯大学)的Karabog首次提出的,基本思想借鉴蜜蜂觅食行为。2007年,Karabog和Basturk对ABC算法进行了详细的性能分析,将分析的性能测试结果与遗传算法、粒子群算法、差分进化算法等多种优化算法的测试结果进行了比较,结果显示,ABC算法在大多数的函数测试问题上具有其他算法无法比拟的优势,其最大的特点是收敛速度快且求解精度高等。ABC算法凭借其概念简单、易于实现,并且控制参数设置较少等特点,在诸多科学研究及工程领域得到了广泛的应用。
模拟蜂群的觅食行为的优化算法主要包括蜂群算法(bee-swarm algorithm,BA)和人工蜂群算法,这两种算法的基本理论比较相似,不同之处主要有两点:
(1)雇佣蜂(employment bee)、观察蜂(observation bee)、侦查蜂(scout bee)的分配比例有所不同。
(2)人工蜂群算法设置了限制参数,而蜂群算法没有引入限制参数。
两种算法都将蜂群分成雇佣蜂、观察蜂、侦查蜂三类。
(1)雇佣蜂:也可以称为引领蜂。引领蜂先对食物源进行探索,然后将得到食物源的信息与等待在蜂巢的观察蜂分享。
(2)观察蜂:也可以称为跟随蜂。跟随蜂依照各个食物源的信息,决定飞向哪个食物源进行采蜜。食物源的质量越好,观察蜂飞往该食物源的概率就越大。
(3)侦查蜂:当食物源的开采价值降低到一定范围时,与之对应的雇佣蜂就会转变角色成为侦查蜂,面向整个空间重新随机搜索新的食物源。
在人工蜂群算法中,食物源的位置代表着优化问题的某一可能解,食物源的质量代表该解对应的函数值或适应度。蜂群中的雇佣蜂和观察蜂数目相同,且每一个食物源对应一个雇佣蜂,当雇佣蜂对应的食物源质量下降到某一阈值时,雇佣蜂就变成了侦查蜂。
人工蜂群算法的求解过程可以表述如下:
(1)在ABC算法的初始阶段,对应食物源位置随机生成SN个可行解。然后分别计算各个解的适应度值fit,对解进行评估。
(2)对于每个雇佣蜂,在当前位置邻域搜索新的食物源,即在当前食物源的位置周围寻找到一个新的位置,可根据式(2-1)产生一个新的可行解,即
x 代表食物源位置。 k ∈(1,2,…,SN)和 j ∈(1,2,…, D )是随机选择的索引, D 是待优化参数的个数,并且 k ≠ i 。 ϕ ij 是在[-1,1]产生的一个随机数。然后比较新产生解的值和原解的值,根据贪婪算法选择好的一个作为其对应的食物源位置。
(3)观察蜂将根据各食物源所对应的适应度值,按照预先设定的概率随机进行选择。用式(2 - 2)计算选择概率为
其中,fit i 代表食物源对应的适应度。
(4)如果食物源的适应度值经过有限次循环之后仍没有得到改善,则该食物源位置将被移除。此时雇佣蜂变成侦查蜂。根据式(2 - 3),侦查蜂随机产生新的食物源位置为
其中 和 分别是 j 的上、下边界。
(5)重复以上步骤MCN次(是ABC算法的最大循环次数)或者直到满足某个终止条件为止。标准人工蜂群算法流程如图2 - 1所示。
图2-1 标准人工蜂群算法流程