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

news2025/2/4 8:59:04

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

摘要:人工蜂鸟算法( AHA )是 ZHAO 等 于 2021 年提出的一种新型元启发式优化算法 . 该算法模拟了自然界中蜂鸟轴向飞行、对角飞行、全方位飞行 3 种特殊飞行技能和引导觅食、区域觅食、迁移觅食 3 种智能觅食策略,并通过引入访问表来实现蜂鸟寻找和选择食物来源的记忆功能,最终达到求解最优化问题的目的 .

1.人工蜂鸟算法

1.1 初始化

AHA 将 n n n 只蜂鸟放置在 n n n 种食物源上, 随机初 始化食物源位置:
x i = S L + r ⋅ ( S u − S L ) , i = 1 , 2 , ⋯   , n (1) x_i=S_{\mathrm{L}}+r \cdot\left(S_{\mathrm{u}}-S_{\mathrm{L}}\right), i=1,2, \cdots, n \tag{1} xi=SL+r(SuSL),i=1,2,,n(1)
式中: x i x_i xi 表示第 i i i 个食物源位置; n n n 表示种群规模; S u 、 S L S_u 、 S_{\mathrm{L}} SuSL 分别表示搜索空间上、下限值; r r r 表示 [ 0 , 1 ] [0,1] [0,1] 之 间均匀分布的随机数.
食物来源访问表初始化如下:
V i , j = { 0 ,  if  i ≠ j  null,  i = j , i = 1 , 2 , ⋯   , n ; j = 1 , 2 , ⋯   , n (2) V_{i, j}=\left\{\begin{array}{cc} 0, & \text { if } i \neq j \\ \text { null, } & i=j \end{array}, i=1,2, \cdots, n ; j=1,2, \cdots, n\right. \tag{2} Vi,j={0, null,  if i=ji=j,i=1,2,,n;j=1,2,,n(2)
式中: i = j i=j i=j 表示蜂鸟在特定的食物来源处受食; i ≠ j i \neq j i=j 表示当前迭代中第 j j j 个食物源被第 i i i 只蜂鸟访问过.

1.2 引导觅食

AHA 中, 蜂鸟为了获得更多的花蜜, 会在相同 访问级别的食物源中访问花蜜补充率最高的食物源. 在受食过程中, 通过引人方向切换向量描述全向飞 行、对角飞行和轴向飞行 3 种技能, 用于控制 d d d 维空 间中的一个或多个方向是否可行. 轴向飞行、对角飞 行、全向飞行技能分别描述如下:
D ( i ) = { 1 ,  if  i = rand ⁡ ( [ 1 , d ] ) 0 ,  else  (3) \begin{gathered} D^{(i)}= \begin{cases}1, & \text { if } i=\operatorname{rand}([1, d]) \\ 0, & \text { else }\end{cases} \end{gathered} \tag{3} D(i)={1,0, if i=rand([1,d]) else (3)
D ( i ) = { 1 ,  if  i = P ( j ) , j ∈ [ 1 , k ] , P = rand ⁡ ( k ) , k ∈ { 2 , [ r 1 ⋅ ( d − 2 ) + 1 ] } 0 ,  else  (4) D^{(i)}= \begin{cases}1, & \text { if } i=P(j), j \in[1, k], P=\operatorname{rand}(k), \\ k \in\left\{2,\left[r_1 \cdot(d-2)+1\right]\right\} \\ 0, & \text { else }\end{cases} \tag{4} D(i)= 1,k{2,[r1(d2)+1]}0, if i=P(j),j[1,k],P=rand(k), else (4)
D ( i ) = 1 (5) D^{(i)}=1 \tag{5} D(i)=1(5)

式中: D ( i ) D^{(i)} D(i) 表示飞行技能; i = rand ⁡ ( [ 1 , d ] ) i=\operatorname{rand}([1, d]) i=rand([1,d]) 表示生成从 1 到 d d d 的随机整数; rand ⁡ ( k ) \operatorname{rand}(k) rand(k) 表示创建从 1 到 k k k 的 随机整数排列; r 1 r_1 r1 表示 [ 0 , 1 ] [0,1] [0,1] 之间均匀分布的随机 数; d d d 表示问题维度. 其中 i = 1 , 2 , ⋯   , d i=1,2, \cdots, d i=1,2,,d.
凭借这些飞行技能, 蜂鸟可以访问目标食物源, 从而获得候选食物源. 候选食物源位置更新数学描述 如下:
v i ( t + 1 ) = x i ,  tar  ( t ) + a ⋅ D [ x i ( t ) − x i ,  tar  ( t ) ] (6) v_i(t+1)=x_{i, \text { tar }}(t)+a \cdot D\left[x_i(t)-x_{i, \text { tar }}(t)\right] \tag{6} vi(t+1)=xi, tar (t)+aD[xi(t)xi, tar (t)](6)
式中: v i ( t + 1 ) v_i(t+1) vi(t+1) 表示第 t + 1 t+1 t+1 次迭代第 i i i 个候选食物源 位置; x i ( t ) x_i(t) xi(t) 表示第 t t t 次迭代第 i i i 个食物源位置; x i ,  tar  x_{i, \text { tar }} xi, tar  ( t ) (t) (t) 表示第 i i i 只蜂鸟将访问的目标食物源位置; a a a 表 示服从正态分布 ( ( ( 均值 = 0 =0 =0, 标准偏差 = 1 =1 =1 ) 的引导因子.
依据式 (6), 引导受食第 i i i 个食物源的位置更新 如下:
x i ( t + 1 ) = { x i ( t ) f [ x i ( t ) ] ⩽ f [ v i ( t + 1 ) ] v i ( t + 1 ) f [ x i ( t ) ] > f [ v i ( t + 1 ) ] (7) x_i(t+1)=\left\{\begin{array}{cc} x_i(t) & f\left[x_i(t)\right] \leqslant f\left[v_i(t+1)\right] \\ v_i(t+1) & f\left[x_i(t)\right]>f\left[v_i(t+1)\right] \end{array}\right. \tag{7} xi(t+1)={xi(t)vi(t+1)f[xi(t)]f[vi(t+1)]f[xi(t)]>f[vi(t+1)](7)
式中: x i ( t + 1 ) x_i(t+1) xi(t+1) 表示第 ( t + 1 ) (t+1) (t+1) 次迭代第 i i i 个食物源位 置; f ( ⋅ ) f(\cdot) f() 表示函数适应度值; 其他参数意义同上.

1.3 区域觅食

蜂鸟在访问了目标食物源后, 很可能会移动到自 己领地外的邻近区域寻找新的食物源, 而不是访问其 他现有的食物源. 邻近区域候选食物源位置更新数学 描述如下:
v i ( t + 1 ) = x i ( t ) + b ⋅ D ⋅ x i ( t ) (8) v_i(t+1)=x_i(t)+b \cdot D \cdot x_i(t) \tag{8} vi(t+1)=xi(t)+bDxi(t)(8)
式中: b b b 表示服从正态分布 ( ( ( 均值 = 0 =0 =0, 标准偏差 = 1 =1 =1 ) 的区域因子; 其他参数意义同上.

1.4 迁徙觅食

当蜂鸟经常造访的区域缺乏食物时, 蜂鸟通常会 迁移到较远的食物来源区进行受食. 花蜜补充率最差 食物源位置更新数学描述如下:
x wor  ( t + 1 ) = S L + r ⋅ ( S u − S L ) (9) x_{\text {wor }}(t+1)=S_{\mathrm{L}}+r \cdot\left(S_{\mathrm{u}}-S_{\mathrm{L}}\right) \tag{9} xwor (t+1)=SL+r(SuSL)(9)
式中: x wor  x_{\text {wor }} xwor  表示种群中花蜜补充率最差的食物源位 置; 其他参数意义同上.

在这里插入图片描述

2.实验结果

在这里插入图片描述

3.参考文献

[1]Zhao Weiguo,Wang Liying,Mirjalili Seyedali. Artificial hummingbird algorithm: A new bio-inspired optimizer with its engineering applications[J]. Computer Methods in Applied Mechanics and Engineering,2022,388.

[2] 崔东文,袁树堂.基于WPD-AHA-ELM模型的水质时间序列多步预测[J/OL].三峡大学学报(自然科学版):1-8[2022-12-20].DOI:10.13393/j.cnki.issn.1672-948X.2023.01.002.

4.Matlab

5.Python

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大数据入门核心技术-Spark】(三)Spark 本地模式安装

目录 一、Spark集群三种部署模式 1、 Local模式 2、Spark Standalone模式 3、Spark on YARN模式 二、准备工作 1、Hadoop环境安装 2、下载spark 三、安装spark 1、解压 2、配置环境变量 3、修改配置文件 4、测试安装是否成功 四、运行测试spark 1、读取本地文件 …

【Java|golang】1760. 袋子里最少数目的球---逆向二分法

给你一个整数数组 nums ,其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。 你可以进行如下操作至多 maxOperations 次: 选择任意一个袋子,并将袋子里的球分到 2 个新的袋子中,每个袋子里都有 正整数…

buildroot 升级软件包

因为软件漏洞问题,需要升级软件包,如 ncurses、libpwquality 等; 我目前采用的方法如下: 环境: 下载一个 buildroot 的最新版本: git clone git://git.buildroot.net/buildroot.git 我使用的 linux 环…

深入底层,spring mvc父子容器初始化过程解析

spring mvc父子容器初始化过程解析1、为什么要学习spring mvc底层?2、Java Web应该学什么?1、Tomcat2、servlet3、filter4、listener3、spring mvc容器初始化过程1、以WebApplicationInitializer.onStartup()方法作为入口2、registerDispatcherServlet()…

Java真的不难(五十二)Stream流的深入理解与流式编程

Stream流的深入理解与流式编程: 在今年年初小应学长也写过Stream与Lambda的两篇文章,今天先将两者结合起来进行流式编程 一、关于这两者 Stream与Lambda都是Java8引入的新概念,lambda在Java编程中对于函数式编程的支持,有助于代…

H5 WebSQL每日成语

有一天看到同事发的类似 这种成语填空一样的内容。 惟利( )视 为德( )终 质非文( ) ( )追耗子 烂漫天( ) ( )则改之,无则嘉勉 得( )之作 哀( )如潮 于是就去网上找成语数据库表的 SQL… 哈哈哈 很容易就找到了. 本来打算写个前后端,想了想可以但没…

Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT题解

这场好难我是废物&#xff0c;掉大分了 A. Absolute Maximization 利用|找最大值和&找最小值即可 #include <bits/stdc.h> using namespace std; // #define int long long #define endl \nvoid solve() {int n;cin >> n;int maxn 0,minn 1023;for(int i …

TCP报文结构、确认应答机制、超时重传机制、连接管理机制

TCP报文结构、确认应答机制、超时重传机制、连接管理机制一、TCP报文结构二、确认应答机制三、超时重传机制四、连接管理机制4.1 三次握手建立连接4.2 四次挥手断开连接一、TCP报文结构 可靠传输是TCP中最最核心的特性&#xff01;&#xff01;&#xff01; 上篇博客我们已经介…

企事业单位如何做好服务器数据防泄露,防病毒工作

目前现状 无论是中小企业还是大型企事业单位&#xff0c;均有属于自己的内网或公有云服务器。这些服务器有的是专门的SVN、GIT代码服务器&#xff0c;有的是文档存储服务器&#xff0c;有的是应用服务器。服务器是企业的核心命脉&#xff0c;所有知识产权及多年心血都集中汇总…

【学习笔记】JDK源码学习之HashMap(附带面试题)

最近发布 AND 其他好文 &#xff1a;地址 什么是 HashMap &#xff1f;它和 Map 之间又有什么样的关系呢&#xff1f;我们是否能拿它在并发中使用呢&#xff1f; 带着以上问题&#xff0c;让我们一同走入这让人着迷的 HashMap 。 1、什么是HashMap&#xff1f; HashMap 基于…

DOM算法系列005-获取给定节点所属的window对象

UID: 20221220091217 aliases: tags: source: cssclass: created: 2022-12-20 我们知道&#xff0c;在一个HTML页面中&#xff0c;可以包含很多个框架或框架集&#xff0c;那么&#xff0c;当给定一个节点&#xff0c;我们如何获取这个节点所属的window对象呢&#xff1f; 首先…

【填坑向】Linux获取Java程序resource下的文件路径(这次的坑好像没填住……

​╮(&#xffe3;▽&#xffe3;"")╭没错&#xff0c;就是那个传说中的FileNotFoundException&#xff0c;文件找不到了 一开始&#xff0c;特别单纯的俺是把文件直接放在项目根目录的&#xff0c;获取文件地址的位置就只写了一个文件名&#xff08;相对路径&…

Nature子刊:生命的最初几个小时内可快速学习音位辨别—基于fNIRS研究

摘要 人类新生儿可以区分音素&#xff0c;但这种能力背后的神经机制尚不清楚。新生儿的大脑可以学会区分自然&#xff08;前&#xff09;元音和逆向&#xff08;后&#xff09;元音&#xff08;在子宫中学习不到的&#xff09;。利用功能近红外光谱&#xff0c;我们检测了出生…

工控CTF之协议分析2——MMS

协议分析 流量分析 主要以工控流量和恶意流量为主&#xff0c;难度较低的题目主要考察Wireshark使用和找规律&#xff0c;难度较高的题目主要考察协议定义和特征 简单只能简单得干篇一律&#xff0c;难可以难得五花八门 常见的工控协议有&#xff1a;Modbus、MMS、MQTT、CoA…

关于3D可视化的几个知识点

3D可视化&#xff0c;运用三维仿真技术实现信息感知、智能调度以及主动式运营维护&#xff0c;把复杂抽象的数据信息&#xff0c;以合适的人们视觉元素及视角用3D立体方式进行一比一还原呈现&#xff01; 近些年&#xff0c;将繁琐的信息通过可视化的图表视觉化展现出来的应用场…

惠普Elite蜻笔记本系统损坏怎么U盘重装教学

惠普Elite蜻笔记本系统损坏怎么U盘重装教学&#xff0c;有用户使用的惠普Elite蜻笔记本系统受到了其他恶意程序的损坏&#xff0c;导致无法正常的开启使用。所以想要去进行电脑系统的重装。那么如何U盘重装电脑系统&#xff0c;一起来看看详细的重装步骤吧。 准备工作&#xff…

有哪些实用的软件开发项目管理工具?

给大家介绍下&#xff0c;目前最新的免费项目管理工具&#xff0c;希望对大家有所帮助。 1、 Co-Project智能项目管理工具 智能项目管理平台&#xff0c;是CoCode旗下的软件开发全生命周期的项目管理平台&#xff0c;涵盖了从需求、计划、设计、开发、测试再到交付的整个项目周…

青少年关联网络功能地形的性别差异

我们发现了个性化联想网络功能地形的规范性性别差异&#xff0c;包括腹侧注意、默认模式和额顶网络。此外&#xff0c;染色体富集分析显示&#xff0c;功能地形多变量模式的性别差异在空间上与x连锁基因的表达以及星形细胞和兴奋性神经元细胞类型的特征相耦合。这些结果突出了性…

实景三维模型色彩差异大,用模方与DasViewer直接对模型调色

在实际项目生产过程中&#xff0c;由于受到采集天气、设备、时间、季节、航高等各类因素的影响&#xff0c;重建后的三维模型尤其是大面积模型中&#xff0c;纹理不可避免的出现明暗不一、颜色不均匀的现象&#xff0c;导致后期处理时间与成本增高&#xff0c;影响项目工期。 三…

Apache Flink

目录 处理无边界和有边界数据 数据可以作为无边界流或有边界流处理 随时随地部署应用程序 以任何规模运行应用程序 利用内存性能 Apache Flink 起源于一个叫作 Stratosphere 的项目&#xff0c;它是由 3 所地处柏林的大学和欧洲其他一些大学共同进行的研究项目&#xff0c…