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代码)
黑翅鸢是一种上半身蓝灰色,下半身白色的小型鸟类。它们的显著特征包括迁徙和捕食行为。它们以小型哺乳动物、爬行动物、鸟类和昆虫为食,具有很强的悬停能力,能够取得非凡的狩猎成功。受其狩猎技能和迁徙习惯的启发,该算法作者建立…...
Linux 内核开发 28 内核模块文件ko文件介绍
Linux 内核开发 28 内核模块文件ko文件介绍 1. ELF格式简介 内核模块文件ko文件,格式为elf格式, ELF(Executable and Linkable Format)可执行链接格式,是一种用于存储可执行程序、目标代码、共享库和内核模块的标准文件…...

DDR5—新手入门学习(一)【1-5】
目录 1、DDR背景 (1)SDR SDRAM时代 : (2)DDR SDRAM的创新 : (3)DDR技术的演进 : (4)需求推动: 2、了解内存 (1&…...

力扣HOT100 - 138. 随机链表的复制
解题思路: class Solution {public Node copyRandomList(Node head) {if(headnull) return null;Node p head;//第一步,在每个原节点后面创建一个新节点//1->1->2->2->3->3while(p!null) {Node newNode new Node(p.val);newNode.next …...
深入分析 Android Activity (五)
深入分析 Android Activity (五) 1. Activity 的进程和线程模型 在 Android 中,Activity 默认在主线程(也称为 UI 线程)中运行。理解进程和线程模型对于开发响应迅速且无阻塞的应用程序至关重要。 1.1 主线程与 UI 操作 所有 UI 操作必须…...

Kubernetes 应用滚动更新
Kubernetes 应用版本号 在 Kubernetes 里,版本更新使用的不是 API 对象,而是两个命令:kubectl apply 和 kubectl rollout,当然它们也要搭配部署应用所需要的 Deployment、DaemonSet 等 YAML 文件。 在 Kubernetes 里应用都是以 …...

五分钟”手撕“图书管理系统
前言: 图书馆管理系统需要结合JavaSE的绝大部分知识,是一个很好的训练项目。 为了让大家更加方便的查阅与学习,我把代码放开头,供大家查询。 还有对代码的分析,我将以类为单位分开讲解。 目录 全部代码 Main类 Us…...

8个实用网站和软件,收藏起来一定不后悔~
整理了8个日常生活中经常能用得到的网站和软件,收藏起来一定不会后悔~ 1.ZLibrary zh.zlibrary-be.se/这个网站收录了超千万的书籍和文章资源,国内外的各种电子书资源都可以在这里搜索,98%以上都可以在网站内找到,并且支持免费下…...

电商内卷时代,视频号小店凭借一己之力“脱颖而出”
大家好,我是电商笨笨熊 今年618各大电商平台花样百出; 某宝更是直接取消了“预售”,从5月就开始进入618预热期; 不少玩家既开心又难过,市场如此内卷,618确实是个爆发期,但更多的需要不断压低…...

【论文笔记】| 定制化生成PuLID
PuLID: Pure and Lightning ID Customization via Contrastive Alignment ByteDance, arXiv:2404.16022v1 Theme: Customized generation 原文链接:https://arxiv.org/pdf/2404.16022 Main Work 提出了 Pure 和 Lightning ID 定制 (PuLID),这是一种用于…...
P1638 逛画展
题目描述 博览馆正在展出由世上最佳的 𝑚 位画家所画的图画。 游客在购买门票时必须说明两个数字,𝑎 和 𝑏,代表他要看展览中的第 𝑎 幅至第 𝑏 幅画(包含 𝑎,…...
Linux(centos)常用命令
Linux(Centos)常用命令使用说明文档 切换到/home目录下 使用cd命令切换目录,例如: cd /home列出/home目录下的所有文件 使用ls命令列出目录下的文件和子目录,例如: ls /home新建目录dir1 使用mkdir命…...
从入门到精通:掌握Scrapy框架的关键技巧
在当今信息爆炸的时代,获取并利用网络数据成为了许多行业的核心竞争力之一。而作为一名数据分析师、网络研究者或者是信息工作者,要想获取网络上的大量数据,离不开网络爬虫工具的帮助。而Scrapy框架作为Python语言中最为强大的网络爬虫框架之…...
Vue3按顺序调用新增和查询接口
Vue3按顺序调用新增和查询接口 一、前言1、代码 一、前言 如果你想将两个调用接口的操作封装在不同的方法中,你可以考虑将这两个方法分别定义为异步函数,并在需要时依次调用它们。以下是一个示例代码: 1、代码 <template><div>…...
sizeof的了解
32位编译器 qDebug() << "int:" << sizeof(int);qDebug() << "char:" << sizeof(char);qDebug() << "char*:" << sizeof(char*); 字节数: int: 4 char: 1 char*: 4 64位编译器 字节数&#…...
PostgreSQL 教程
## PostgreSQL 教程 ### 1. PostgreSQL 概述 PostgreSQL 是一个开源的对象关系型数据库管理系统(ORDBMS),以其高扩展性和合规性闻名,支持 SQL 和 JSON 查询。 ### 2. 安装与配置 - **下载与安装**:从 PostgreSQL 官方…...

《基于Jmeter的性能测试框架搭建》改进一
《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。 Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。解决方案:自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…...
计算机二进制表示和存储各种数据
目录 计算机二进制是什么 计算机中二进制数作用 不同数据的表示和存储 数字 文字 图片 音频 视频 计算机的中数据的显示和存储 计算机二进制是什么 计算机二进制数:计算机里存储的一切都是以二进制的0和1来表示。二进制是计算机使用的数字编码系统&#x…...

玩机社区 - 2024年最美社区源码开源
玩机社区 - 2024年最美社区源码开源 教程源码文档都内置到压缩包了 https://pan.baidu.com/s/1xwcscTne-JMbmKEntiuAuA?pwd78oi...
Linux系统——面试题分享
目录 1.现在给你三百台服务器,你怎么对他们进行管理? 2.简述 raid0 raid1 raid5 三种工作模式的工作原理及特点 2.1RAID 0 ——可以是一块盘和 N 个盘组合 2.2RAID 1 ——只能2块盘,盘的大小可以不一样,以小的为准 2.3RAID 5 …...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...

李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...

【技巧】dify前端源代码修改第一弹-增加tab页
回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码,在知识库增加一个tab页"HELLO WORLD",完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...