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

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

Java实现TXT文件导入功能的详细步骤

《Java实现TXT文件导入功能的详细步骤》在实际开发中,很多应用场景需要将用户上传的TXT文件进行解析,并将文件中的数据导入到数据库或其他存储系统中,本文将演示如何用Java实现一个基本的TXT文件... 目录前言1. 项目需求分析2. 示例文件格式3. 实现步骤3.1. 准备数据库(假设使用 mysql