算法matlab_MATLAB数学建模(十一) | 人工蜂群算法(附MATLAB代码)

本文介绍了人工蜂群算法(ABC)的生物背景、算法策略,并提供了MATLAB实现的详细步骤和代码示例,帮助读者快速理解和掌握ABC算法。
摘要由CSDN通过智能技术生成

hello,大家好。各位可点击此处,访问公众号官方店铺。谨防上当受骗,感谢各位支持!

后台有很多小伙伴留言说想学习一下人工蜂群算法(artificial bee colony,ABC),所以今天我们为各位讲解ABC,让各位小伙伴能够快速掌握这种算法。

本期推文目录:

01 ABC的生物背景

02 ABC的算法策略

03 MATLAB实例

04 参考文献


01 | ABC的生物背景

蜜蜂是一种群居生物,生物学家研究发现蜜蜂以跳舞的方式来交换蜜源信息。根据分工的不同,蜜蜂被分为三个工种:引领峰、跟随蜂、侦察蜂

侦察蜂的职责是侦察蜜源(即蜜蜂的食物),一旦某一个侦察蜂找到蜜源后,实际上它的角色就切换为引领蜂了。

找到蜜源后的引领峰以跳舞的方式向同伴传递自己找到食物的信息,这时候一些饥饿的、没有找到食物的蜜蜂就会沿着引领峰指明的方向去寻找食物,这些相信引领峰传递的信息的蜜蜂实际上就是跟随蜂这实际上属于招募蜜蜂的行为。

当引领峰寻找了多次蜜源后,发现再也找不到吃起来更香的蜜源后,引领峰说话的信服力会降低,于是跟随蜂也逐渐不相信引领峰传递的信息。

引领峰痛定思痛,决心转变角色,做回侦察蜂。直到再次找到高质量的蜜源后,再做回引领峰,然后再带着大伙吃香的、喝辣的。这实际上属于放弃蜜源的行为。

综上,蜂群实现群体智慧的最小搜索模型包括 蜜源引领蜂跟随蜂侦察蜂共4个组成要素,以及 招募蜜蜂放弃蜜源2种基本的行为。

02 | ABC的算法策略

通过对ABC生物背景的理解,相信各位猜到蜜源实际上就对应ABC中的解,实际上也就等同于遗传算法中的个体。ABC的最终目的就是找出最好的“蜜源”,也就是最好的解

那这些解如何寻找呢?也就是在ABC中如何更新这些解呢?

答案就是通过引领峰、跟随蜂、侦察蜂这三种蜜蜂来更新最好“蜜源”的位置。这里需要注意的一点是:引领蜂和跟随蜂各占蜂群的一半,数量等于蜜源的数量,且每个蜜源同一时间内只有一只引领蜂采蜜。

有小伙伴可能会有疑问,侦察蜂怎么没有了?

因为侦察蜂与引领峰的角色是相互切换的,所以不是侦察蜂消失了,而是假设当前这一部分蜜蜂全是引领峰。

接下来以一个问题为例,帮助各位快速理解这三种蜜蜂是如何更新蜜源位置的?前面我们已经说过,蜜源实际与问题的解相对应。群智能算法的第一步大多是初始化种群,ABC算法也不例外。只有初始化若干个蜜源后,三种蜜蜂才会寻找蜜源。

假设我们要求解问题的维数为D,则一个解的表现形式为(即一个蜜源的位置为):

。因此在第t次迭代时第i个蜜源的位置表示为:
,其中
分别表示搜索空间的上下限,

第i个蜜源的位置初始化公式如公式(1)所示:

接下来就是重头戏,三种蜜蜂更新蜜源位置的公式。因为当前蜂群中只有引领蜂和跟随蜂,所以毫无疑问是引领峰先对蜜源种群位置进行更新。引领峰对第i个蜜源位置更新公式如(2)所示:

式中,d为当前位置更新的维数,

表示更新的是第3维的位置;
表示在NP个蜜源中随机选择一个不等于i的蜜源;
是[-1,1]均匀分布的随机数,决定扰动幅度。当新蜜源
的适应度优于
时,采用贪婪选择的方法用
代替
,否则保留

所有的引领蜂完成式(2)的运算后,飞回信息交流区共享蜜源信息。跟随蜂根据引领蜂分享的蜜源信息,按式(3)计算的概率进行跟随:

然后,跟随蜂采用轮盘赌的方法选择引领蜂,即在[0,1]产生一个均匀分布的随机数r,如果

大于r,该跟随蜂按式(2)在蜜源i的周围产生一个新蜜源,且采用同引领蜂相同的贪婪选择的方法确定保留的蜜源。

搜索过程中,如果蜜源

经过trial次迭代搜索到达阈值limit而没有找到更好的蜜源,该蜜源
将会被放弃,与之对应的引领蜂角色转变为侦察蜂。侦察蜂将在搜索空间随机产生一个新的蜜源代替
,上述过程如式(4):

以最小化的优化问题为例,在ABC 算法中,解的适应度评价依据式(5)计算。

综上所述,ABC的主要步骤如下

1)初始化各蜜源 ; 设定参数NP、limit 以及最大迭代次数; t=1;
2)为蜜源 分配一只引领蜂,按式(2)进行搜索,产生新蜜源 ;
3)依据式(5)评价 的适应度,根据贪婪选择的方法确定保留的蜜源;
4) 由式(3)计算引领蜂找到的蜜源被跟随的概率;
5)跟随峰采用与引领蜂相同的方式进行搜索,根据贪婪选择的方法确定保留的蜜源;
6)判断蜜源 是否满足被放弃的条件。如满足,对应的引领蜂角色变为侦察蜂,否则直接转到8);
7)侦察蜂根据式(4)随机产生新蜜源;
8)t=t+1; 判断算法是否满足终止条件,若满足则终止,输出最优解,否则转到2)。

03 | MATLAB实例

MATLAB代码源地址:

https://yarpiz.com/297/ypea114-artificial-bee-colony​yarpiz.com

代码中的目标函数如下:

点击main.m函数运行代码,结果为

的值依次如下:

e51a265ff7ad3706fea3cac9d3436d65.png

目标函数值随迭代次数变化曲线如下图所示:

ec09363910c5252996cdaf5b4d9b8fd9.png

04 | 参考文献

1.秦全德, 程适, 李丽, 等. 人工蜂群算法研究综述[J]. 2014

2.Karaboga D. An idea based on honey bee swarm for numerical optimization[R]. Technical report-tr06, Erciyes university, engineering faculty, computer engineering department, 2005.

各位小伙伴可在留言板留言,未来我们讲解的具体内容由你做主。如果可以的话,可以把希望讲解的文献也在留言板上写出来。

我们已经终于推出粉丝QQ交流群,各位小伙伴赶快加入吧!!!

5cb08fc5a451ad5599773b5836019fe8.png

更多精彩尽在公众号:优化算法交流地

往期推荐

这个高质量的MATLAB自学网站,你收藏了吗?

遗传算法(GA)求解带时间窗的车辆路径(VRPTW)问题MATLAB代码

蚁群算法(ACO)求解带时间窗的车辆路径(VRPTW)问题(附MATLAB代码)

NSGA-II多目标优化算法讲解(附MATLAB代码)

多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)

多目标优化 | NSGA-II进阶教程(全网首个三目标优化教程)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值