2024年顶级算法-黑翅鸢优化算法(BKA)-详细原理(附matlab代码)

2024-05-25 03:44

本文主要是介绍2024年顶级算法-黑翅鸢优化算法(BKA)-详细原理(附matlab代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

黑翅鸢是一种上半身蓝灰色,下半身白色的小型鸟类。它们的显著特征包括迁徙和捕食行为。它们以小型哺乳动物、爬行动物、鸟类和昆虫为食,具有很强的悬停能力,能够取得非凡的狩猎成功。受其狩猎技能和迁徙习惯的启发,该算法作者建立了基于黑翅鸢的算法模型。

图片

基本原理:

(1)初始化:与其他大多数的此类算法一样,采用随机初始化,黑翅鸢的位置作为解。

图片

   pop是潜在解的个数,dim是给定问题维数的大小,BKij是第i个黑翅鸢的第j个维数。式中:i为介于1和pop之间的整数,BKlb和BKub分别为第i只黑翅风筝在第j维的下界和上界,rand为[ 0、1 ]之间随机选取的值。

(2)攻击行为

        作为小型草原哺乳动物和昆虫的捕食者,黑翅鸢在飞行过程中根据风速调整翅膀和尾角,静静地悬停以观察猎物,然后迅速潜水和攻击。该策略包含针对全局探索和搜索的不同攻击行为。图a展示了一个黑翅鸢在空中盘旋、展翅并保持平衡的场景。

图片

图片

    图a展示了一个黑翅鸢在空中盘旋、展翅并保持平衡的场景,且图a展示了黑翅鸢以极快的速度冲向猎物的场景。图b展示了黑翅鸢在空中盘旋时的攻击状态,且图b展示了黑翅鸢在空中盘旋时的状态。下面给出黑翅鸢攻击行为的数学模型:

图片

图片

 yi,jt和yi,jt + 1分别表示第i只黑翅鸢在第t步和第(t+1)步迭代中第j维的位置。r是一个取值范围为0到1的随机数,p是一个取值为0.9的常数。T是总的迭代次数,t是到目前为止已经完成的迭代次数。

    这些都很好理解,但是原文并未给出n是什么东西的说明。

3)迁移行为

        鸟类迁徙是为了适应季节变化,许多鸟类在冬季从北方向南方迁徙,以获得更好的生存条件和资源。迁移通常由领导带领,他们的导航能力对团队的成功至关重要。

        该算法提出了一个基于鸟群迁徙的假设:如果当前种群的适应度值小于随机种群的适应度值,领导者就会放弃领导,加入迁徙种群,说明不适合领导种群向前迁徙。

图片

    反之,如果当前种群的适应度值大于随机种群的适应度值,则引导种群直到到达目的地。这种策略可以动态地选择优秀的领导者,保证迁移的成功。上图为黑翅鸢迁徙过程中领鸟的变化情况。下面是关于迁移行为的一个数学模型:

图片

图片

Ljt代表了迄今为止第t次迭代的第j维黑翅鸢的领先得分者(当前最优解)。

yi,jt和yi,jt + 1分别表示第i只黑翅鸢在第t步和第(t+1)步迭代中第j维的位置。

 C( 0、1 )代表柯西突变( Jiang , et al 2023)。其定义如下:

一维柯西分布是具有两个参数的连续概率分布。下面的方程说明了一维Cauchy分布的概率密度函数:

图片

当δ = 1,μ = 0时,其概率密度函数将变为标准形式。下面是精确的公式:

图片


小说明一下(原文作者勿怪):

图片

Fi表示任意黑翅鸢在第t次迭代中得到的第j维当前位置(注:这句话是上面这个文章图片原话的中文翻译,不过我觉得他这个描述有点问题。应该是:Fi是当前种群中任一个体的适应度值。因为他前面说了“如果当前种群的适应度值大于随机种群的适应度值,则引导种群直到到达目的地”。)。

图片

Fri表示第t次迭代中任意一只黑翅鸢得到的第j维随机位置的适应度值(这也是原文的中文翻译,看不明白英文的可以直接看这个翻译)。

(这句话我觉得也是有问题的,我觉得做科研还是要严谨一点,毕竟写出来东西是要让人看的,新算法更是让人大量引用的。这个F根据他原文的描述很明显是适应度值,一个种群中有pop个个体,用i来表示,j是代表维度,y(i)是代表种群中的任一个体,那么再读读这句话“Fri表示第t次迭代中任意一只黑翅鸢得到的第j维随机位置的适应度值。”这句话明显有问题,首先适应度值是个体的适应度值,个体可以这么叫,个体中各个维度的那不叫适应度值(fitness value),叫值(value),个体中各个维度的值共同作用于目标函数得到适应度值。还有“Fri”这里都没有“j”这个字母,写这个的时候却带了这个字母的解释,这让人摸不着头脑。

具体拿这个刚运行的BKA来举例,

图片

图片

这个适应度值是3.3602e-103,那它上面那行的这个解的10个维度能叫适应度值吗?

总体上还好,不过这些都是小问题,瑕不掩瑜。告诉我们后来者写文章还是要严谨一些。


这是伪代码:

图片

cec2005上测试:

F1:

图片

F2:

图片

F3:

图片

F4:

图片

F5:

图片

F6:

图片

F7:

图片

参考文献:

【1】Black‑winged kite algorithm: a nature‑inspired meta‑heuristic for solving benchmark functions and engineering problems(原文)

公众号:算法仓库,后台回复:BKA,即可免费获得此matlab版本代码,且包括原文。

这篇关于2024年顶级算法-黑翅鸢优化算法(BKA)-详细原理(附matlab代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis