1. 原理
-
受到蜜蜂群体的有组织的觅食过程的启发,Karaboga提出了模拟蜜蜂群体觅食过程的人工蜂群(Artificial Bee Colony) 算法用于解决多维度多峰谷的优化问题。该算法创始之初被用来寻找Sphere、Rosenbrock和Rastrigin函数的最小值。
-
人工蜂群中的三种蜜蜂:
-
雇佣蜂:
-
利用已有的蜜源信息进行搜寻,与观察蜂分享信息
-
维持优良解
-
-
观察蜂:
-
在蜂房等待,依据雇佣蜂分享的信息寻找新的蜜源
-
提高收敛速度
-
-
侦察蜂:
-
寻找蜜源,在蜂房附近随机搜索
-
增强摆脱局部最优的能力
-
-
-
搜索蜜源步骤:
-
雇佣蜂发现蜜源,通过8字舞方式共享蜜源
-
观察蜂根据雇佣蜂提供的信息,外出采蜜
-
雇佣蜂多次搜索找到的蜜源质量无明显改善,放弃现有的蜜源
-
侦察蜂在蜂群附近寻找新的蜜源,搜索到高质量蜜源后,雇佣蜂出动
-
2. 参数:
-
nPop :引领蜂个数
-
nOnlooker:跟随蜂个数
-
L :蜜源试验次数上限,如果达到此上限,舍弃该蜜源。
3. 算法流程
-
初始化种群
-
for it = 1:MaxIt
-
引领(雇佣)蜂阶段
-
跟随(观察)蜂阶段
-
侦察蜂阶段
-
-
end
-
输出结果
-
流程图如下:
4. 详细流程
1. 初始化阶段
-
初始化各类参数
-
产生初始种群
2. 引领蜂阶段
-
引领蜂产生一个新解(新食物源)
-
k = 1,2,...,NP, k ≠ i ; ϕij : [-1,1] 之间的随机数
-
-
贪婪选择
-
计算新解的适应度值并评价它,若新解的适应度值优于旧解,则引领蜂更新旧解为新解。反之,保留旧解。
-
函数值转适应度值: fiti是第 i个解的适应值,fi是第i个体对于优化问题的目标函数。
-
3. 跟随蜂阶段
-
根据轮盘赌计算每个解的选择概率
-
根据概率判断是否更新为新解
-
随机产生一个[0,1]的随机数r
-
若r>p,则产生一个新解,并检验新解的适应度值,若由于旧解,则更新旧解为新解
-
若r<=p,则保留旧解
-
4. 侦察蜂阶段
-
判断是否在探索极限L次数内都更新
-
无更新:陷入局部最优,抛弃该解,该解对应的引领蜂变为侦察蜂,产生一个新解替代原引领蜂
-
替代公式如下:
-
i=1,2,⋯,NP; j=1,2,⋯,D; Xij是第 i个解的第 j个维度;
-
X j max 和 X j min分别是问题第 j 个维度的上限和下限; rij 是 [0,1] 之间的随机数
-