人工蜂群算法

人工蜂群算法

人工蜂群算法(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.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32基础--构建自己的固件库

CMSIS 标准及库层次关系 因为基于 Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的 Cortex 微控制器软件的兼容性问题&#xff0…

API可视化编排,提高API可复用率

在数字化时代,API(应用程序编程接口)已成为不同软件应用之间沟通的桥梁。然而,如何高效管理、编排和复用这些API,成为了企业和开发者面临的重要挑战。随着技术的不断进步,RestCloud API可视化编排应运而生&…

PCIE的TLP包的封包解包原理

前言:开始pcie项目之前需要知道,本次项目我们是使用现有的框架RIFFA框架去完成设计的,因此比起具体代码的含义,更注重框架的使用。在开始项目之前需要了解PCIE的组建包过程。 一、TLP包的基本格式: 1.1整体包结构概述…

01-DevOps代码上线-git入门及gitlab远程仓库

一、准备学习环境 10.0.0.71-gitlab 2c2g-20GB 10.0.0.72-jenkins 2c2g-20GB 10.0.0.73-sonarqube 1c1g-20GB 10.0.0.74-nexus 1c1g-20GB 10.0.0.75-dm 1c1g-20GB (模拟写代码服务器) 在centos系统中&…

2024 批量下载公众号文章内容/阅读数/在看数/点赞数/留言数/粉丝数导出pdf文章备份(带留言):公众号记忆承载近1500篇历史文章在线查看,找文章方便了

关于公众号文章批量下载,我之前写过很多文章: 视频更新版:批量下载公众号文章内容/话题/图片/封面/音频/视频,导出html,pdf,excel包含阅读数/点赞数/留言数 2021陶博士2006/caoz的梦呓/刘备我祖/六神读金…

微服务架构 | 多级缓存

INDEX 通用设计概述2 优势3 最佳实践 通用设计概述 通用设计思路如下图 内容分发网络(CDN) 可以理解为一些服务器的副本,这些副本服务器可以广泛的部署在服务器提供服务的区域内,并存有服务器中的一些数据。 用户访问原始服务器…

HNU-算法设计与分析-甘晴void学习感悟

前言 算法设计与分析,仅就课程而言,似乎是数据结构与算法分析的延续 教材使用: 课程 关于课程,橙学长讲的非常清晰,我深以为然。 HNUCS-大三课程概览-CSDN博客文章浏览阅读1.3k次,点赞5次,收…

JVM-垃圾收集底层算法实现

三色标记 背景描述 在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。 如何解决上面的问题? 引入“三色标记” 意思就是,把Gcroots可达性分析遍历对象过程…

【北京迅为】《iTOP-3588开发板网络环境配置手册》第4章 开发板直连电脑配置方法(无线上网)

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

qtvs2022工程cmakelist.txt添加QCharts模块

find_package(QT NAMES Qt5 COMPONENTS Core Gui Widgets OpenGL Concurrent Charts Sql Network REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets OpenGL Charts Concurrent Sql Network REQUIRED)这里find_package只是设置搜索路径,为…

使用ffmpeg提取视频中的音频并保存为单声道wav

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 $ ffmpeg -i C0439.MP4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable…

设计模式学习笔记 - 设计原则 - 10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器

前言 接下来我们在结合一个支持各种统计规则的性能计数项目,学习针对一个非业务的通用框架开发,如何来做需求分析、设计和实现,同时学习如何灵活应用各种设计原则。 项目背景 设计开发一个小的框架,能够获取接口调用的各种统计信…

Mysql中的MVCC

”真正学会,如你般自由~“ MVCC机制简介 MVCC(Multi-Version-Concurrency-Control)多版本并发控制,MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程中实现事务内存。 取自 MVCC存在被…

基于Python3的数据结构与算法 - 12 数据结构(列表和栈)

目录 一、引入 二、分类 三、列表 1. C语言中数组的存储方式 2. Python中列表的存储方式 四、栈 1. 栈的应用 -- 括号匹配问题 一、引入 定义:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。简单来说&#x…

防御保护 IPSEC VPPN实验

实验背景:FW1和FW2是双机热备 主备备份模式。 实验要求:在FW5和FW3之间建立一条IPSEC通道,保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 IPSEC VPPN实验配置(由于是双机热备状态,所以FW1和FW2只需要配置FW1主设…

Cloud-Nacos服务治理-Feign服务调用

构建Cloud 父工程依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.…

设计模式-行为型模式-职责链模式

在软件系统运行时&#xff0c;对象并不是孤立存在的&#xff0c;它们可以通过相互通信协作完成某些功能&#xff0c;一个对象在运行时也将影响到其他对象的运行。行为型模式&#xff08;Behavioral Pattern&#xff09;关注系统中对象之间的交互&#xff0c;研究系统在运行时对…

基于springboot的某大学外卖系统的实现(源码+论文)

文章目录 目录 文章目录 前言 一、功能设计 二、功能实现 1 后台登录 2管理员界面 3员工信息管理 4客户信息管理 三、库表设计 四、论文 前言 如今&#xff0c;信息化不断的高速发展&#xff0c;社会也跟着不断进步&#xff0c;现今的社会&#xff0c;各种工作都离不开信息化技…

蓝桥杯每日一题:烤鸡dfs

这道题考察了dfs的应用&#xff0c;题干十分有趣&#xff0c;思考过程对以后类似题目也有很强的参考性&#xff0c;一起来学习吧&#xff01; 题目&#xff1a; # 烤鸡 ## 题目背景 猪猪 Hanke 得到了一只鸡。 ## 题目描述 猪猪 Hanke 特别喜欢吃烤鸡&#xff08;本是同畜…

图片速览 BitNet: 1-bit LLM

输入数据 模型使用absmax 量化方法进行b比特量化,将输入量化到 [ − Q b , Q b ] ( Q b 2 b − 1 ) \left[-Q_{b},Q_{b}\right](Q_{b}2^{b-1}) [−Qb​,Qb​](Qb​2b−1) x ~ Q u a n t ( x ) C l i p ( x Q b γ , − Q b ϵ , Q b − ϵ ) , Clip ⁡ ( x , a , b ) ma…