6.2.2 人工蜂群优化算法

6.2.2 人工蜂群优化算法

在实际的蜜蜂群体中,一些任务是由特定的蜜蜂来完成的。这些特定的蜜蜂通过有效的分工和自组织试图使蜂巢储藏的花蜜量最大。由Karaboga于2005年对求解实值参数优化问题提出的人工蜂群算法(ABC)就是模拟蜜蜂采蜜行为的算法。

人工蜂群算法包含三个组成部分:采蜜蜂、观察蜂和侦察蜂,采蜜蜂和观察蜂执行开采过程,侦察蜂执行探索过程。人工蜂群算法中,种群一半是雇佣蜂,另一半是跟随蜂。每个食物源与一只雇佣蜂对应,也就是说,雇佣蜂的数量与蜂巢周围食物源的数量相同。当某个食物源被放弃后,该食物源对应的雇佣蜂或跟随蜂就变成侦察蜂。雇佣蜂负责与对应食物源进行采蜜,并将食物源信息带回蜂巢共享;跟随蜂在蜂巢舞蹈区等候雇佣蜂传递信息,并对食物源进行选择;侦察蜂进行随机食物源捜索。

人工蜂群算法中,食物源的位置代表最优化问题的可行解,食物源的蜜量表示对应解的质量,种群中雇佣蜂的数量等于跟随蜂的数量,并与可行解的数量相等。第一步中,人工蜂群算法随机生成包含SN个解(食物源位置)的初始种群P(G=0),这里SN表示种群数量。每个解(食物源)xi(i=1,2,3,…,SN)是一个D维向量。这里,D是优化问题的维数。初始化后,种群要重复雇佣蜂、跟随蜂、侦察蜂搜索的循环过程。为了找到新的食物源,人工雇佣蜂或跟随蜂将在其记忆中对食物源位置进行修正,同时对新食物源的蜜量进行估测。初始化之后,以初始解为基础,采蜜蜂、观察蜂和侦察蜂开始进行循环搜索。采蜜蜂记住以前的最优解,在采蜜源的邻域内搜索产生新解,搜索公式为

其中,ijφ为范围是[-1,1]的随机数;xkj为不同于xij的任一蜜源。采蜜蜂采用贪婪准则,当搜索解优于记忆最优解时,替换记忆解;反之,则保持记忆解不变。采蜜蜂完成搜索过程后,将记忆中的蜜源信息与观察蜂共享。观察蜂按照与花蜜量相关的概率选择一个蜜源位置,并像采蜜蜂一样对记忆中的位置做一定的改变,并检查新候选位置的花蜜量,若新位置优于记忆中的位置,则用新位置替换原来的蜜源位置,否则保留原位置。若搜索中变量超出定义域范围,则给变量定义一个可行值。在人工蜂群算法中,当变量超出定义域范围时,将其设定为定义域的边界值。

随后,侦察蜂开始对蜜源进行判断,假如蜜源位置ix经过“limit”次的循环搜索后,无法被改进,那么该位置将被放弃,此时采蜜蜂转变为侦察蜂,并随机搜索一个蜜源替换原蜜源。

人工蜂群算法的流程如图6.2所示。

图6.2 人工蜂群算法的流程