智能优化算法:人工蜂群算法-附代码

智能优化算法:人工蜂群算法


摘要:人工蜂群算法(artificial bee colony,ABC)是由土耳其学者Karaboga 于 2005 年提出,它是模拟蜜蜂的采蜜行为来解决生活中一些多维和多模的优化问题,它最初应用于数值优化问题,自提出以来受到了众多学者极大的关注,并广泛应用到神经网络、数据挖掘、工程应用、图像识别等多个领域。

1.算法原理

在 ABC 算法里,用蜜源的位置来表示解,用蜜源的花粉数量表示解的适应值。所有的蜜蜂划分为雇佣蜂、跟随蜂、探索蜂三组。雇佣蜂和跟随蜂各占蜂群总数的一半。雇佣蜂负责最初的寻找蜜源并采蜜分享信息,跟随蜂负责呆在蜂巢里根据雇佣蜂提供的信息去采蜜,探索蜂在原有蜜源被抛弃后负责随机寻找新的蜜源来替换原有的蜜源。与其他群智能算法一样,ABC 算法是迭代的。对蜂群和蜜源的初始化后,反复执行三个过程,即雇佣蜂、跟随蜂、探索蜂阶段,来寻找问题的最优解。每个阶段描述如下:

1.1 蜂群的初始化

对 ABC 算法的参数进行初始化,这些参数有蜜源数 S N SN SN、蜜源确定被抛弃的次数 l i m i t limit limit、迭代终止次数。在标准 ABC 算法里,蜜源的数目 S N SN SN 与雇佣蜂数相等,也与跟随蜂数相等。产生某个蜜源的公式为:
x i j = x m i n j + r a n d [ 0 , 1 ] ( x m a x j − x m i n j ) (1) x_{ij}=x_{minj}+rand[0,1](x_{maxj}-x_{minj})\tag{1} xij=xminj+rand[0,1](xmaxjxminj)(1)
其中: x i j x_{ij} xij代表第 i i i 个蜜源 x i x_i xi 的第 j j j 维度值, i i i 取值于 { 1 , 2 , … , S N } \{1,2,…, SN\} { 12SN} j j j 取值于 { 1 , 2 , … , D } \{1,2,…,D\} { 12D}; x m i n j x_{minj} xminj x m a x j x_{maxj} xmaxj 分别代表第 j j j 维的最小值和最大值。初始化蜜源就是对每个蜜源的所有维度通过以上公式赋一个在取值范围内的随机值,从而随机生成 S N SN SN 个最初蜜源。

1.2 雇佣蜂阶段

在雇佣蜂阶段,雇佣蜂用以下公式来寻找新蜜源:
v i j = x i j + φ ( x i j − x k j ) (2) v_{ij}=x_{ij}+\varphi(x_{ij}-x_{kj})\tag{2} vij=xij+φ(xijxkj)(2)
其中: x k x_k xk 代表邻域蜜源, k k k 取值于 { 1 , 2 , … , S N } \{1,2,…,SN\} { 12SN},且 k k k 不等于 i i i; φ i j φ_{ij} φij 是取值在[-1,1]的随机数,通过式(2)得到新蜜源后,利用贪婪算法,比较新旧蜜源适应值,选择优者。

1.3 跟随蜂阶段

雇佣蜂阶段结束,跟随蜂阶段开始。在该阶段,雇佣蜂在舞蹈区分享蜜源信息。跟随蜂分析这些信息,采用轮盘赌策略来选择蜜源跟踪开采,以保证适应值更高的蜜源开采的概率更大。跟随蜂开采过程与雇佣蜂一样,利用式(2)找寻新蜜源,并留下更优适应者。
蜜源拥有参数 t r i a l trial trial,当蜜源更新被保留时, t r i a l trial trial 为 0;反之, t r i a l trial trial加 1。从而 t r i a l trial trial 能统计出一个蜜源没有被更新的次数。

1.4 探索蜂阶段

如果一个蜜源经过多次开采没被更新,也就是 t r i a l trial trial 值过高,超过了预定阈值 l i m i t limit limit,那么需抛弃这个蜜源,启动探索蜂阶段。这体现了 ABC 里自组织的负反馈和波动属性 。在该阶段里,探索蜂利用式(3)随机寻找新的蜜源来代替被抛弃蜜源。
x i j = x m i n j + r a n d [ 0 , 1 ] ( x m a x j − x m i n j ) (3) x_{ij}=x_{minj}+rand[0,1](x_{maxj}-x_{minj})\tag{3} xij=xminj+rand[0,1](xmaxjxminj)(3)

2.算法流程

人工蜂群算法流程

step1.初始化算法参数,生成蜜蜂初始位置

step2.雇佣蜂计算适应度值,比较并保存最优值

step3.跟随蜂选择雇佣蜂更新蜜源位置,计算适应度值,保存最佳值

step4.若有侦察蜂出现,则重新生成初始位置并执行更新选优,否则继续执行step5

step5.若迭代次数小于预设的迭代次数,则转到step2;否则输出最优解

3.算法结果

在这里插入图片描述

4.参考文献

[1]何尧,刘建华,杨荣华.人工蜂群算法研究综述[J].计算机应用研究,2018,35(05):1281-1286.

5.MATLAB代码

https://mianbaoduo.com/o/bread/aJWVkps=

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/108292748