人工蜂群算法(Artificial Bee Colony Algorithm,ABC)

1.人工蜂群算法介绍

人工蜂群算法是模仿蜜蜂群体觅食行为提出的一种优化方法,是集群智能思想的一个具体应用,它的主要特点是不需要了解问题的特殊信息,只需要对问题进行优劣的比较,通过各人工蜂个体的局部寻优行为,最终在群体中使全局最优值突现出来,有着较快的收敛速度。为了解决多变量函数优化问题,Karaboga提出了人工蜂群算法ABC模型(artificial bee colony algorithm)。

1.1特点

参数对算法的性能影响较大;容易陷入局部最优;所以在改进的ABC算法过程中,参数应该随着蜂群迭代过程进行自适应调节。

1.1基本组成

食物源(蜜源):问题的可行解,蜜源的优劣用蜜量的大小(即适应度函数)

引领蜂:发现蜜源信息,选择较好的蜜源作为初始蜜源并以一定概率招募跟随蜂。作用:加快算法收敛速度,引领蜂的数量与跟随蜂的个数相等,一般等于种群数量的一半。

跟随蜂:根据引领蜂共享的蜜源信息选择合适的引领蜂,同时在其选择的新的蜜源,然后与引领蜂标记的初始蜜源进行比较。

侦查蜂:进行随机搜索(全局搜索),增强算法跳出局部最优的能力,每次迭代过程中侦查蜂的数量为1。

以上三种蜜蜂的角色可以互换,在蜂巢附近的舞蹈区通过摇摆舞的形式传递信息;

Limit(同一蜜源被限定开采的次数):控制算法的收敛性,开采次数过少,不利于局部搜索;

1.2算法流程

人工蜂群算法(Artificial Bee Colony Algorithm,ABC)_第1张图片

  • 1、初始化蜜源

初始化种群规模、最大迭代次数、控制参数“limit”,根据以下公式随机产生初始解(蜜源),

并计算每个解的适应度函数值fit。

随机生产蜜源公式:x_{id}=L_{b}+(U_{b}-L_{b})rand(0,1)

while 没有达到最大迭代次数,开始迭代,

  • 2、雇佣蜂阶段(employed bee)产生新蜜源

引领蜂在蜜源i附近进行领域搜索了,找到一个不为i的节点k,根据以下公式产生新解,并计算其适应度函数。

搜索一个新的蜜源(领域搜索):v_{ij}=x_{ij}+\varphi _{ij}(x_{ij}-x_{kj}) i\neq k

尽管k是随机生成,但k不等于i;\varphi _{ij}=[-1,1]之间的随机数;领域搜索公式控制了x位置临近食物源的产生,代表了蜜蜂对临近食物源的比较。

根据贪婪选择方法来确定这个新蜜源保留还是替换,如果新解V_{i}的适应度优于x_{i},则用V_{i}代替x_{i},把V_{i}作为当前最好的解。否则,该蜜源的开采度+1。

  • 3、跟随蜂阶段(on-look bee)通过轮盘赌方式确定跟随蜂选择引领蜂的概率(招募跟随蜂)

计算每个蜜源的适应度值,得到跟随概率p_{i}。跟随蜂根据根据选择该概率pi选择蜜源,然后根据位置更新公式对该蜜源的邻域进行搜索,产生新解,并计算其适应度,然后在当前蜜源和新蜜源中进行贪婪选择。

轮盘赌公式:p_{i}=\frac{fit_{i}}{\frac{\Sigma }{i=1}fit_{i}}

  • 4、侦查蜂阶段(scout bee)引领蜂变成侦查蜂。

判断蜜源Xi是否满足被遗弃的条件,如果同一蜜源被开采的次数大于limit,则代表此位置已经陷入局部最优,则这个解对应的引领蜂变成侦查蜂。

如果某个蜜源(某个解Xi)在limit次循环内没有找到更好的解,则被遗弃,侦查蜂根据以下公式在全局范围内随机产生新的蜜源,替代原来的蜜源。

x_{i}^{j}=x_{min}^{j}+(x_{max}^{j}-x_{min}^{j})Rand()

判断是否满足循环的终止条件,如果达到最大迭代次数,则输出最优结果;

1.3 ABC算法的流程图及伪代码

(1)流程图

人工蜂群算法(Artificial Bee Colony Algorithm,ABC)_第2张图片

你可能感兴趣的:(启发式算法,启发式算法,算法,matlab)