1.人工蜂群算法介绍
人工蜂群算法是模仿蜜蜂群体觅食行为提出的一种优化方法,是集群智能思想的一个具体应用,它的主要特点是不需要了解问题的特殊信息,只需要对问题进行优劣的比较,通过各人工蜂个体的局部寻优行为,最终在群体中使全局最优值突现出来,有着较快的收敛速度。为了解决多变量函数优化问题,Karaboga
提出了人工蜂群算法ABC
模型(artificial bee colony algorithm
)。
1.1特点
参数对算法的性能影响较大;容易陷入局部最优;所以在改进的ABC算法过程中,参数应该随着蜂群迭代过程进行自适应调节。
1.1基本组成
食物源(蜜源):问题的可行解,蜜源的优劣用蜜量的大小(即适应度函数)
引领蜂:发现蜜源信息,选择较好的蜜源作为初始蜜源并以一定概率招募跟随蜂。作用:加快算法收敛速度,引领蜂的数量与跟随蜂的个数相等,一般等于种群数量的一半。
跟随蜂:根据引领蜂共享的蜜源信息选择合适的引领蜂,同时在其选择的新的蜜源,然后与引领蜂标记的初始蜜源进行比较。
侦查蜂:进行随机搜索(全局搜索),增强算法跳出局部最优的能力,每次迭代过程中侦查蜂的数量为1。
以上三种蜜蜂的角色可以互换,在蜂巢附近的舞蹈区通过摇摆舞的形式传递信息;
Limit(同一蜜源被限定开采的次数):控制算法的收敛性,开采次数过少,不利于局部搜索;
1.2算法流程
- 1、初始化蜜源
初始化种群规模、最大迭代次数、控制参数“limit”,根据以下公式随机产生初始解(蜜源),
并计算每个解的适应度函数值fit。
随机生产蜜源公式:
while 没有达到最大迭代次数,开始迭代,
- 2、雇佣蜂阶段(employed bee)产生新蜜源
引领蜂在蜜源i附近进行领域搜索了,找到一个不为i的节点k,根据以下公式产生新解,并计算其适应度函数。
搜索一个新的蜜源(领域搜索):,
尽管k是随机生成,但k不等于i;=[-1,1]之间的随机数;领域搜索公式控制了x位置临近食物源的产生,代表了蜜蜂对临近食物源的比较。
根据贪婪选择方法来确定这个新蜜源保留还是替换,如果新解的适应度优于
,则用
代替
,把
作为当前最好的解。否则,该蜜源的开采度+1。
- 3、跟随蜂阶段(on-look bee)通过轮盘赌方式确定跟随蜂选择引领蜂的概率(招募跟随蜂)
计算每个蜜源的适应度值,得到跟随概率。跟随蜂根据根据选择该概率pi选择蜜源,然后根据位置更新公式对该蜜源的邻域进行搜索,产生新解,并计算其适应度,然后在当前蜜源和新蜜源中进行贪婪选择。
轮盘赌公式:
- 4、侦查蜂阶段(scout bee)引领蜂变成侦查蜂。
判断蜜源Xi是否满足被遗弃的条件,如果同一蜜源被开采的次数大于limit,则代表此位置已经陷入局部最优,则这个解对应的引领蜂变成侦查蜂。
如果某个蜜源(某个解Xi)在limit次循环内没有找到更好的解,则被遗弃,侦查蜂根据以下公式在全局范围内随机产生新的蜜源,替代原来的蜜源。
判断是否满足循环的终止条件,如果达到最大迭代次数,则输出最优结果;
1.3 ABC算法的流程图及伪代码
(1)流程图