人工蜂群算法 (Artificial Bee Colony, ABC) 是由 Karaboga 于 2005 年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜行为,蜜蜂根据各自的分工进行不同的活动,并实现蜂群信息的共享和交流,从而找到问题的最优解。人工蜂群算法属于群智能算法的一种。

定义

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

组成要素

蜂群产生群体智慧的最小搜索模型包含基本的三个组成要素:食物源、被雇佣的蜜蜂(employed foragers)和未被雇佣的蜜蜂(unemployed foragers);两种最为基本的行为模型:为食物源招募(recruit)蜜蜂和放弃(abandon)某个食物源。

食物源

食物源的价值由多方面的因素决定,如:它离蜂巢的远近,包含花蜜的丰富程度和获得花蜜的难易程度。使用单一的参数,食物源的“收益率”(profitability),来代表以上各个因素。

被雇用的蜜蜂

也称引领蜂(Leader),其与所采集的食物源一一对应。引领蜂储存有某一个食物源的相关信息(相对于蜂巢的距离、方向、食物源的丰富程度等)并且将这些信息以一定的概率与其他蜜蜂分享。

未被雇用的蜜蜂

其主要任务是寻找和开采食物源。有两种未被雇用的蜜蜂:侦查蜂(Scouter)和跟随蜂(Follower)。侦察蜂搜索蜂巢附近的新食物源;跟随蜂等在蜂巢里面并通过与引领蜂分享相关信息找到食物源。一般情况下,侦察蜂的平均数目是蜂群的5%-20%。
在群体智慧的形成过程中,蜜蜂间交换信息是最为重要的一环。舞蹈区是蜂巢中最为重要的信息交换地。蜜蜂的舞蹈叫做摇摆舞。食物源的信息在舞蹈区通过摇摆舞的形式与其他蜜蜂共享,引领蜂通过摇摆舞的持续时间等来表现食物源的收益率,故跟随蜂可以观察到大量的舞蹈并依据收益率来选择到哪个食物源采蜜。收益率与食物源被选择的可能性成正比。因而,蜜蜂被招募到某一个食物源的概率与食物源的收益率成正比。
初始时刻,蜜蜂以侦察蜂的身份搜索。其搜索可以由系统提供的先验知识决定,也可以完全随机。经过一轮侦查后,若蜜蜂找到食物源,蜜蜂利用它本身的存储能力记录位置信息并开始采蜜。此时,蜜蜂将成为“被雇用者”。蜜蜂在食物源采蜜后回到蜂巢卸下蜂蜜然后将有如下选择:
(1)放弃食物源而成为非雇佣蜂。
(2)跳摇摆舞为所对应的食物源招募更多的蜜蜂,然后回到食物源采蜜。
(3)继续在同一个食物源采蜜而不进行招募。
对于非雇佣蜂有如下选择:
(1)转变成为侦察蜂并搜索蜂巢附近的食物源。其搜索可以由先验知识决定,也可以完全随机。
(2)在观察完摇摆舞后被雇用成为跟随蜂,开始搜索对应食物源邻域并采蜜。
image.png
蜜蜂在采蜜时所表现出来的这种自组织性和合理分配性主要由其自身的基本性质所决定的,它们所特有的基本性质如下:

  • 正反馈性:食物源的花蜜量与食物源被选择的可能性成正比;
  • 负反馈性:蜜蜂停止对较差食物源的开采过程;
  • 波动性:在某个食物源被放弃时,随机搜索一个食物源替代原食物源;
  • 互动性:蜜蜂在舞蹈区与其他蜜蜂共同分享食物源的相关信息。

学习参考:
百度百科
部分csdn博客
C代码:https://cloud.tencent.com/developer/article/1064096
知乎讲解:https://zhuanlan.zhihu.com/p/253220840