人工蜂群算法

人工蜂群算法

人工蜂群算法(Artificial Bee Colony Optimization,ABC)是一种基于蜜蜂觅食行为的优化算法,由土耳其学者Karaboga于2005年提出,算法模拟蜜蜂的采蜜行为对优化问题进行求解。

算法原理

ABC算法的核心思想是将优化问题的解空间视作蜜源,蜜蜂作为搜索代理在解空间中进行探索。在算法的每一轮迭代中,蜜蜂根据当前蜜源的质量和周围蜜源的信息,选择性地进行勘探和开发,从而逐步优化搜索空间。蜜源的位置代表了优化问题的可能解决方案,蜜源的花蜜量对应于相关解决方案的优劣,ABC算法与优化问题的对应关系如下表所示。

ABC优化问题
蜜源可行解: X i = ( x i 1 , x i 2 , … , x i D ) X_i=(x_{i1},x_{i2},\dots,x_{iD}) Xi=(xi1,xi2,,xiD)
花蜜量适应度

算法超参数

ABC算法的超参数包括雇佣蜂比例和蜜源保留次数阈值等,参数影响着蜜蜂在搜索空间中的行为和搜索效率。

  • e m p l o y e d _ r a t e employed\_rate employed_rate:雇佣蜂比例;
  • l i m i t limit limit:蜜源保留次数的阈值;
  • NP:种群大小;
  • Gmax:最大迭代数。

寻优公式

人工蜂群由雇佣蜂(employed bees)、围观蜂(onlookers)和侦察蜂(scouts)三类蜜蜂组成。在标准的ABC算法中,蜂群的前半部分由受雇的人工蜜蜂组成,后半部分为观察蜂。每个蜜源只有一只雇佣蜂,受雇蜜蜂的数量等于蜂巢周围食物源的数量。被雇用的蜜蜂的食物源已被蜜蜂吃光,它就会转变为侦察蜂探索新的蜜源。ABC通过重复执行雇佣蜂、观察蜂和侦察蜂三个阶段来寻找问题的最优解。

  1. 雇佣蜂阶段,雇佣蜂在现有蜜源的位置开发新的蜜源。
    v i j t = x i j t + ϕ i j t ( x i j t − x k j t ) (1) v_{ij}^t=x_{ij}^t + \phi_{ij}^t(x_{ij}^t - x_{kj}^t) \tag{1} vijt=xijt+ϕijt(xijtxkjt)(1)
    其中, k ∈ { 1 , ⋯ , N P } k \in \{1,\cdots,NP\} k{1,,NP} k ≠ i k\neq i k=i ϕ i j ∈ [ − 1 , − 1 ] \phi_{ij} \in [-1,-1] ϕij[1,1]
    X i t + 1 = { X i t , if  f i t ( X i ) t > f i t ( V i t ) V i t + 1 , e l s e (2) X_{i}^{t+1}= \begin{cases} X_{i}^t, & \text{if $fit(X_i)^t > fit(V_i^t)$}\\ V_{i}^{t+1},& else \end{cases} \tag{2} Xit+1={Xit,Vit+1,if fit(Xi)t>fit(Vit)else(2)
  2. 观察蜂阶段,观察蜂对雇佣蜂分享的蜜源信息进行分享,采用轮盘赌策略来选址蜜源跟踪开采新的蜜源,公式与式(1)等价。
  3. 侦察蜂阶段,蜜源 X i X_i Xi拥有参数trial,统计蜜源没有被更新的次数,当蜜源更新被保留时,trail设置为0;反之,trail加1。如果一个蜜源经过多次开采没被更新,当trail超过了阈值limit,那么需要抛弃该蜜源,启动侦察探索新的蜜源。
    x i j = x i , j m i n + r a n d ( 0 , 1 ) ⋅ ( x i , j m a x − x i , j m i n ) (3) x_{ij}=x_{i,j}^{min}+rand(0,1) \cdot (x_{i,j}^{max} - x_{i,j}^{min}) \tag{3} xij=xi,jmin+rand(0,1)(xi,jmaxxi,jmin)(3)
    雇佣蜂阶段和观察蜂阶段体现了算法的开发过程即算法对已知优质解的利用,侦察蜂阶段体现了算法的探索过程即算法对新解的探索。

初始化

初始解应当覆盖整个搜索空间,一般采用均匀分布随机生成初始解。
x i j 0 = x i , j m i n + r a n d ( 0 , 1 ) ⋅ ( x i , j m a x − x i , j m i n ) (4) x_{ij}^0=x_{i,j}^{min}+rand(0,1) \cdot (x_{i,j}^{max} - x_{i,j}^{min}) \tag{4} xij0=xi,jmin+rand(0,1)(xi,jmaxxi,jmin)(4)
其中,rand(0,1)表示0-1之间的随机数, x i j m a x x_{ij}^{max} xijmax x i j m i n x_{ij}^{min} xijmin分别表示该问题第j个维度变量的上下界。

伪代码


输入:超参数 ( e m p l o y e d _ r a t e , l i m i t , N P , G m a x ) (employed\_rate,limit,NP,Gmax) (employed_rate,limit,NP,Gmax)和搜索边界 X m i n X_{min} Xmin, X m a x X_{max} Xmax
输出:最优解
1:初始化
2:根据式(4)初始化位置种群X
3:记录群体最优gbest
4:优化搜索
5:For G = 1:Gmax
6: \qquad 雇佣蜂更新
7: \qquad 观察蜂更新
8: \qquad 侦察蜂更新
9: \qquad 更新群体最优 g b e s t gbest gbest
10:End


注:优化算法并不保证能够得到问题的最优解,因此,算法输出的最优解并非问题的整体最优解,而是搜索过程中最好的一个解。

实验

实验选取二维的平方和函数,函数的最小值在点(a,b)取得,最小值为0。
f ( x 1 , x 2 ) = ( x 1 − a ) 2 + ( x 2 − b ) 2 (5) f(x_1,x_2) = (x_1 - a)^2 + (x_2-b)^2 \tag{5} f(x1,x2)=(x1a)2+(x2b)2(5)

实验参数如下:

参数
问题维度D2
种群数NP30
最大进化次数Gmax50
雇佣蜂比例0.5
limit10
取值范围(-100,100)

人工蜂群算法搜索过程

人工蜂群算法搜索过程

人工蜂群算法收敛曲线

人工蜂群算法收敛曲线

最优值最差值平均值标准差
1.686e-115.679e-76.952e-81.324e-7

代码获取

关注微信公众号数学模型与算法回复 ABC算法获取python代码

参考文献

[1] 何尧,刘建华,杨荣华.人工蜂群算法研究综述[J].计算机应用研究,2018,35(05):1281-1286.
[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.
[3] Akay B, Karaboga D. A modified artificial bee colony algorithm for real-parameter optimization[J]. Information sciences, 2012, 192: 120-142.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/523030.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10 事务控制

文章目录 事务控制事务概述事务操作事务四大特性事务隔离级别 事务控制 事务概述 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,既需要删除人员的基本资料,也要删除和该…

dbeaver 数据库连接工具使用教程

dbeaver是一款很强大的数据库连接工具,本人之前使用的是navicat,挺好用的,只不过每次激活都要整半天,然后看到了dbeaver这款工具,本着尝试的心态,体验了下,真香。 下面来配置dbeaver 1.下载安…

Java基础面试题(day 01)

📑前言 本文主要是【Java】——Java基础面试题的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&am…

官网正在被哪些产品蚕食,定制网站又被哪些建站产品挤占。

2023-12-09 16:22贝格前端工场 官网建设是一个被大多数人看衰的市场,本文来理性分析下,谁在蚕食这个市场,谁又在挤占这个产品生存空间,欢迎大家评论,探讨。 网站正在被以下产品形式取代: 1. 移动应用&…

BUUCTF---[MRCTF2020]你传你呢1

1.题目描述 2.打开题目链接 3.上传shell.jpg文件&#xff0c;显示连接成功&#xff0c;但是用蚁剑连接却连接不上。shell文件内容为 <script languagephp>eval($_REQUEST[cmd]);</script>4.用bp抓包&#xff0c;修改属性 5.需要上传一个.htaccess的文件来把jpg后缀…

Ant Design Vue 修改Model弹框 样式不生效

今天在使用 Ant Design Vue 组件库中又踩了一个坑 其他的样式都可以更改&#xff0c;唯独更改 Model 弹框组件的样式一直不生效 于是研究了好久才找到样式不生效的原因 最后又折腾了好久&#xff0c;参考了不少资料才得出的解决方案&#xff1a;

分享axios+MQTT简单封装示例

MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的"轻量级"通讯协议&#xff0c;该协议构建于TCP/IP协议上&#xff0c;由IBM在19…

数据结构---复杂度(1)

1.时间复杂度 衡量算法的好坏&#xff0c;使用大写的o来表示时间复杂度&#xff0c;通俗的讲&#xff0c;就是一个算法执行的次数&#xff1b; 时间复杂度就是数学里面的函数表达式&#xff1b;本质上是一个函数&#xff1b; 下面举几个例子&#xff1a; (1)这里的执行次数是…

【Linux基础(三)】信号

学习分享 1、信号的基本概念2、查看信号列表3、常见信号名称4、signal库函数5、发送信号kill6、kill - signal &#xff08;无参信号&#xff09;示例6.1、kill - signal (不可靠信号)示例6.2、kill - signal (可靠信号)示例 7、信号分类7.1、信号运行原理分类7.2、信号是否携带…

解决 ucore lab3 无法触发 page fault 的问题

问题描述 完成清华大学操作系统实验课 ucore(x86) lab3 时&#xff0c;发现无法触发 page fault 异常&#xff0c;具体来说时 check_pgfault() 函数会在执行如下代码时报错 static void check_pgfault(void) {// ......uintptr_t addr 0x100;assert(find_vma(mm, addr) vma…

阿里云服务器“地域”怎么选择?2024新版教程

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

蓝桥杯2017年第八届真题-分巧克力

目录 题目描述 输入格式 输出格式 样例输入 样例输出 原题链接 代码实现 题目描述 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力&#xff0c;其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见&#xff0c;小明需…