智能优化算法:人工蜂群算法-附代码
智能优化算法:人工蜂群算法
文章目录
- 智能优化算法:人工蜂群算法
- 1.算法原理
- 1.1 蜂群的初始化
- 1.2 雇佣蜂阶段
- 1.3 跟随蜂阶段
- 1.4 探索蜂阶段
- 2.算法流程
- 3.算法结果
- 4.参考文献
- 5.MATLAB代码
- 6.Python代码
摘要:人工蜂群算法(artificial bee colony,ABC)是由土耳其学者Karaboga 于 2005 年提出,它是模拟蜜蜂的采蜜行为来解决生活中一些多维和多模的优化问题,它最初应用于数值优化问题,自提出以来受到了众多学者极大的关注,并广泛应用到神经网络、数据挖掘、工程应用、图像识别等多个领域。
1.算法原理
在 ABC 算法里,用蜜源的位置来表示解,用蜜源的花粉数量表示解的适应值。所有的蜜蜂划分为雇佣蜂、跟随蜂、探索蜂三组。雇佣蜂和跟随蜂各占蜂群总数的一半。雇佣蜂负责最初的寻找蜜源并采蜜分享信息,跟随蜂负责呆在蜂巢里根据雇佣蜂提供的信息去采蜜,探索蜂在原有蜜源被抛弃后负责随机寻找新的蜜源来替换原有的蜜源。与其他群智能算法一样,ABC 算法是迭代的。对蜂群和蜜源的初始化后,反复执行三个过程,即雇佣蜂、跟随蜂、探索蜂阶段,来寻找问题的最优解。每个阶段描述如下:
1.1 蜂群的初始化
对 ABC 算法的参数进行初始化,这些参数有蜜源数 SNSNSN、蜜源确定被抛弃的次数 limitlimitlimit、迭代终止次数。在标准 ABC 算法里,蜜源的数目 SNSNSN 与雇佣蜂数相等,也与跟随蜂数相等。产生某个蜜源的公式为:
xij=xminj+rand[0,1](xmaxj−xminj)(1)x_{ij}=x_{minj}+rand[0,1](x_{maxj}-x_{minj})\tag{1} xij=xminj+rand[0,1](xmaxj−xminj)(1)
其中:xijx_{ij}xij代表第 iii 个蜜源 xix_ixi 的第 jjj 维度值,iii 取值于{1,2,…,SN}\{1,2,…, SN\}{1,2,…,SN},jjj 取值于{1,2,…,D}\{1,2,…,D\}{1,2,…,D};xminjx_{minj}xminj 和 xmaxjx_{maxj}xmaxj 分别代表第 jjj 维的最小值和最大值。初始化蜜源就是对每个蜜源的所有维度通过以上公式赋一个在取值范围内的随机值,从而随机生成 SNSNSN 个最初蜜源。
1.2 雇佣蜂阶段
在雇佣蜂阶段,雇佣蜂用以下公式来寻找新蜜源:
vij=xij+φ(xij−xkj)(2)v_{ij}=x_{ij}+\varphi(x_{ij}-x_{kj})\tag{2} vij=xij+φ(xij−xkj)(2)
其中:xkx_kxk 代表邻域蜜源,kkk 取值于{1,2,…,SN}\{1,2,…,SN\}{1,2,…,SN},且 kkk 不等于 iii;φijφ_{ij}φij 是取值在[-1,1]的随机数,通过式(2)得到新蜜源后,利用贪婪算法,比较新旧蜜源适应值,选择优者。
1.3 跟随蜂阶段
雇佣蜂阶段结束,跟随蜂阶段开始。在该阶段,雇佣蜂在舞蹈区分享蜜源信息。跟随蜂分析这些信息,采用轮盘赌策略来选择蜜源跟踪开采,以保证适应值更高的蜜源开采的概率更大。跟随蜂开采过程与雇佣蜂一样,利用式(2)找寻新蜜源,并留下更优适应者。
蜜源拥有参数 trialtrialtrial,当蜜源更新被保留时, trialtrialtrial 为 0;反之, trialtrialtrial加 1。从而 trialtrialtrial 能统计出一个蜜源没有被更新的次数。
1.4 探索蜂阶段
如果一个蜜源经过多次开采没被更新,也就是 trialtrialtrial 值过高,超过了预定阈值 limitlimitlimit,那么需抛弃这个蜜源,启动探索蜂阶段。这体现了 ABC 里自组织的负反馈和波动属性 。在该阶段里,探索蜂利用式(3)随机寻找新的蜜源来代替被抛弃蜜源。
xij=xminj+rand[0,1](xmaxj−xminj)(3)x_{ij}=x_{minj}+rand[0,1](x_{maxj}-x_{minj})\tag{3} xij=xminj+rand[0,1](xmaxj−xminj)(3)
2.算法流程
人工蜂群算法流程
step1.初始化算法参数,生成蜜蜂初始位置
step2.雇佣蜂计算适应度值,比较并保存最优值
step3.跟随蜂选择雇佣蜂更新蜜源位置,计算适应度值,保存最佳值
step4.若有侦察蜂出现,则重新生成初始位置并执行更新选优,否则继续执行step5
step5.若迭代次数小于预设的迭代次数,则转到step2;否则输出最优解
3.算法结果
4.参考文献
[1]何尧,刘建华,杨荣华.人工蜂群算法研究综述[J].计算机应用研究,2018,35(05):1281-1286.
5.MATLAB代码
人工蜂群算法
算法相关应用
名称 | 说明或者参考文献 |
---|---|
人工蜂群优化的BP神经网络(预测) | https://blog.csdn.net/u011835903/article/details/112149776(原理一样,只是优化算法是人工蜂群算法) |
人工蜂群优化的BP神经网络(分类) | https://blog.csdn.net/u011835903/article/details/112149394(原理一样,只是优化算法是人工蜂群算法) |
基于人工蜂群算法优化的SVM数据分类 | https://blog.csdn.net/u011835903/article/details/110523352(原理一样,只是优化算法是人工蜂群算法) |
基于人工蜂群优化的二维最大熵图像阈值分割 | https://blog.csdn.net/u011835903/article/details/108214713(原理一样,只是优化算法是人工蜂群算法) |
基于人工蜂群算法优化的最大熵多阈值分割 | https://blog.csdn.net/u011835903/article/details/108203775(原理一样,只是优化算法是人工蜂群算法) |
人工蜂群算法优化的otsu多阈值分割 | https://blog.csdn.net/u011835903/article/details/108019744(原理一样,只是优化算法是人工蜂群算法) |
人工蜂群优化的PID参数优化 | https://blog.csdn.net/u011835903/article/details/109306387(原理一样,只是优化算法是人工蜂群算法) |
基于人工蜂群算法的无线传感器网(WSN)覆盖优化 | https://blog.csdn.net/u011835903/article/details/109262039(原理一样,只是优化算法是人工蜂群算法) |
基于人工蜂群算法的3D无线传感器网(WSN)覆盖优化 | https://blog.csdn.net/u011835903/article/details/113834323(原理一样,只是优化算法是人工蜂群算法) |
基于改进蜂群算法和灰色模型的管道腐蚀预测 | https://blog.csdn.net/u011835903/article/details/120022900(原理一样,只是优化算法是人工蜂群算法) |
6.Python代码
个人资料介绍
智能优化算法:人工蜂群算法-附代码相关推荐
- 优化算法 | 人工蜂群算法(附Python代码)
hello,大家好.各位可点击左下方阅读原文,访问公众号官方店铺.谨防上当受骗,感谢各位支持! 今天为各位更新人工蜂群算法(Artificial Bee Colony,ABC)的Python代码,之前 ...
- 优化算法—人工蜂群算法(ABC)
一.人工蜂群算法的介绍 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜 ...
- 优化算法——人工蜂群算法(ABC)
一.人工蜂群算法的介绍 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜 ...
- 投资组合优化的人工蜂群算法(Matlab代码实现)
- 基于人工蜂群算法改进的DELM预测-附代码
人工蜂群算法改进的深度极限学习机DELM的回归预测 文章目录 人工蜂群算法改进的深度极限学习机DELM的回归预测 1.ELM原理 2.深度极限学习机(DELM)原理 3.人工蜂群算法 4.人工蜂群算法 ...
- 【优化覆盖】基于matlab人工蜂群算法求解无线网络传感覆盖优化问题【含Matlab源码 1097期】
⛄一.人工蜂群算法求解无线网络传感覆盖优化问题简介 1 WSN覆盖模型 1.1 问题描述 在WSN中, 要实现较高的无线网络传感器节点覆盖率从而减少监测盲点的出现, 就必须加大无线网络传感器节点的分布 ...
- 论文阅读三:基于改进人工蜂群算法的SDN负载均衡策略研究
名词解释: Artificial Bee Colony Algorithm, ABC:人工蜂群算法 Load balancing algorithm based on improved artific ...
- 人工蜂群算法性能比较
人工蜂群算法的性能(performance) 摘要:人工蜂群算法是基于蜜蜂群体的特定智能行为的最优化算法.比较了人工蜂群算法.差分进化算法(differential evolution).粒子群算法( ...
- 人工蜂群算法(ABC)
Karaboga在2005年提出的人工蜂群算法(Artificial Bee Colony, ABC)模型是为了 解决多变量函数优化,全局优化问题 完整过程: 两种不同的表述方式,但实际的关系是: 观 ...
- 【智能优化算法】基于人工蜂群算法求解多目标优化问题附matlab代码
1 简介 人工蜂群算法(Artificial Bee Colony Algorithm, 简称ABC算法)是一个由蜂群行为启发的算法,在2005年由Karaboga小组为优化代数问题而提出. 2 部 ...
最新文章
- 植树节,程序员要爬哪些“树”?
- 7个方面读懂6月的5G标准
- 你必须了解的反射——反射来实现实体验证
- C#动态生成html页
- MySQL连接查询—笛卡尔乘积
- 硬盘坏道拷贝软件_什么是数据恢复工具,一款一键恢复软件
- 编译Ngnix遇到的问题,查看程序依赖的库文件
- urlconnection java_java成神之——HttpURLConnection访问api
- k-shingles和MinHash优秀文章保存
- 李洪强iOS开发Swift篇—02_变量和常量
- 论文赏析[EMNLP19]用控制任务来设计并解释探测任务
- 在浏览器中进行深度学习:TensorFlow.js (二)第一个模型,线性回归
- 一个轻量级多功能免费开源web聊天室
- Java-Aspose实现上传Excel、Word转换为PDF并进行下载
- Latex 给参考文献添加doi号和超链接
- 用C/C++打造数字时钟程序(附代码),竟然只要100行代码!
- RT-Thread学习笔记——互斥量
- 女人喜欢大男人还是小男人
- 边缘计算与深度学习综述
- 基于MQ对登录系统核心流程进行异步化改造,提升系统性能-11