【智能算法】秃鹰搜索算法(BES)原理及实现

2024-03-26 04:12

本文主要是介绍【智能算法】秃鹰搜索算法(BES)原理及实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2020年, Alsattar等人受到秃鹰猎食自然行为启发,提出了秃鹰搜索算法(Bald Eagle Search,BES)。

2.算法原理

2.1算法思想

BES主要分为三个阶段选择搜索空间、搜索空间猎物和俯冲捕获猎物
在这里插入图片描述

2.2算法过程

选择搜索空间
秃鹰个体在飞行中的位置代表 1个可行解,在选择搜索空间阶段,秃鹰会挑选猎物聚集数量最多的区域当做搜索空间,该阶段的秃鹰行为由如下方程描述:
P i , n e w ( t ) = P b e s t ( t ) + α × r × ( P m e a n ( t ) − P i ( t ) ) (1) P_{i,\mathrm{new}}(t)=P_{\mathrm{best}}(t)+\alpha\times r\times(P_{\mathrm{mean}}(t)-P_{i}(t))\tag{1} Pi,new(t)=Pbest(t)+α×r×(Pmean(t)Pi(t))(1)
其中,Pi,new(t)表示第 i 只秃鹰的更新位置;Pbest(t)表示秃鹰最佳搜索位置;Pmean(t)表示秃鹰之前搜索结束后所有秃鹰个体的平均分布位置,Pi(t)表示第 i只秃鹰的搜索位置,称作领导者;t是当前迭代次数,参数 α∈[1.5,2]是控制秃鹰搜索位置的参数,参数 α 设置为 2;r 是取值范围在 0~1之间的随机数。
搜索空间猎物
秃鹰个体在完成选择目标搜索空间后,会在该搜索空间中对猎物进行“螺旋式”搜索,并向不同的方向飞行移动以加速搜索进程。该阶段的秃鹰行为如下方程描述:
P i , n e w ( t ) = P i ( t ) + x ( i ) × ( P i ( t ) − P m e a n ( t ) ) + y ( i ) × ( P i ( t ) − P i + 1 ( t ) ) x ( i ) = x r ( i ) max ⁡ ( ∣ x r ∣ ) , y ( i ) = y r ( i ) max ⁡ ( ∣ y r ∣ ) x r ( i ) = r ( i ) × sin ⁡ ( θ ( i ) ) , y r ( i ) = r ( i ) × cos ⁡ ( θ ( i ) ) θ ( i ) = a × π × r a n d , r ( i ) = θ ( i ) + R × r a n d (2) \begin{aligned} &P_{i,\mathrm{new}}(t)=P_{i}(t)+x(i)\times(P_{i}(t)-P_{\mathrm{mean}}(t))+y(i)\times \left(P_{i}(t)-P_{i+1}(t)\right) \\ &x(i)=\frac{x_{r}(i)}{\operatorname*{max}(\left|x_{r}\right|)},y(i)=\frac{y_{r}(i)}{\operatorname*{max}(\left|y_{r}\right|)} \\ &x_{_r}(i)=r(i)\times\sin(\theta(i)),y_{_r}(i)=r(i)\times\cos(\theta(i)) \\ &\theta(i)=a\times\pi\times\mathrm{rand},r(i)=\theta(i)+R\times\mathrm{rand} \end{aligned} \tag{2} Pi,new(t)=Pi(t)+x(i)×(Pi(t)Pmean(t))+y(i)×(Pi(t)Pi+1(t))x(i)=max(xr)xr(i),y(i)=max(yr)yr(i)xr(i)=r(i)×sin(θ(i)),yr(i)=r(i)×cos(θ(i))θ(i)=a×π×rand,r(i)=θ(i)+R×rand(2)
其中,x(i)与 y(i)表示极坐标中秃鹰的位置,取值范围均为(-1,1);θ(i)与 r(i)分别表示螺旋方程的极角与极径;a∈[5,10]与 R∈(0.5,2)表示控制秃鹰螺旋飞行轨迹的参数。
俯冲捕获猎物
秃鹰在搜索空间锁定目标猎物后,从最佳位置快速飞行至目标猎物位置,与此同时所有的秃鹰个体也会朝着最佳位置飞行移动。该阶段的秃鹰行为由如下方程描述:
P i , n e w ( t ) = r a n d × P b e s t ( t ) + x 1 ( i ) × ( P i ( t ) − c 1 × P m e a n ( t ) ) + y 1 ( i ) × ( P i ( t ) − c 2 × P b e s t ( t ) ) x 1 ( i ) = x r ( i ) max ⁡ ( ∣ x r ∣ ) , y 1 ( i ) = y r ( i ) max ⁡ ( ∣ y r ∣ ) x r ( i ) = r ( i ) × sinh ⁡ ( θ ( i ) ) , y r ( i ) = r ( i ) × cosh ⁡ ( θ ( i ) ) θ ( i ) = a × π × r a n d , r ( i ) = θ ( i ) (3) \begin{aligned} &&&P_{i,new}(t)=\mathrm{rand}\times P_{\mathrm{best}}(t)+x_{1}\left(i\right)\times\left(P_{i}(t)-c_{1}\times P_{\mathrm{mean}}(t)\right)+ y_{1}\left(i\right)\times\left(P_{i}(t)-c_{2}\times P_{\mathrm{best}}(t)\right) &&&& \\ &&&x_{1}\left(i\right)=\frac{x_{r}\left(i\right)}{\operatorname*{max}(\left|x_{r}\right|)},y_{1}\left(i\right)=\frac{y_{r}\left(i\right)}{\operatorname*{max}(\left|y_{r}\right|)}&& \\ &&&x_{r}(i)=r(i)\times\sinh\left(\theta(i)\right),y_{r}(i)=r(i)\times\cosh\left(\theta(i)\right)&& \\ &&&\theta(i)=a\times\pi\times\mathrm{rand},r(i)=\theta(i)&& \end{aligned}\tag{3} Pi,new(t)=rand×Pbest(t)+x1(i)×(Pi(t)c1×Pmean(t))+y1(i)×(Pi(t)c2×Pbest(t))x1(i)=max(xr)xr(i),y1(i)=max(yr)yr(i)xr(i)=r(i)×sinh(θ(i)),yr(i)=r(i)×cosh(θ(i))θ(i)=a×π×rand,r(i)=θ(i)(3)
伪代码
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Alsattar H A, Zaidan A A, Zaidan B B. Novel meta-heuristic bald eagle search optimisation algorithm[J]. Artificial Intelligence Review, 2020, 53: 2237-2264.

这篇关于【智能算法】秃鹰搜索算法(BES)原理及实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/847246

相关文章

golang版本升级如何实现

《golang版本升级如何实现》:本文主要介绍golang版本升级如何实现问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录golanwww.chinasem.cng版本升级linux上golang版本升级删除golang旧版本安装golang最新版本总结gola

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互