黑翅鸢优化算法(BKA)-2024年SCI一区新算法-公式原理详解与性能测评 Matlab代码免费获取

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 

目录

原理简介

一、种群初始化

二、攻击行为

三、迁徙行为

算法伪代码

性能测评

参考文献

完整代码


        黑翅鸢优化算法(BKA)是一种新型的元启发式算法(智能优化算法),灵感来源于黑翅鸢迁徙和捕食行为,BKA以其优异的性能证明了其在CEC-2022和CEC-2017测试函数的66.7、72.4和77.8%的情况下能够获得最佳性能!该成果由Wang Jun等人于2024年3月发表在SCI人工智能一区顶刊《Artificial Intelligence Review》上!

        由于发表时间较短,谷歌学术上还没人引用!你先用,你就是创新!

原理简介

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

一、种群初始化

        首先,与大多数优化算法一样,均匀地分配每只黑翅鸢的位置:

        其中i为1 ~ pop之间的整数,BKlb和BKub分别为第j维黑翼鸢的下界和上界,rand为[0,1]之间随机选取的值。

        在初始化过程中,BKA选择适应度值最好的个体作为初始群体中的leader XL,这被认为是黑翼鸢的最优位置。下面是初始领导者XL的数学表示,以最小值为例。

二、攻击行为

        黑翅鸢是草原小型哺乳动物和昆虫的捕食者,在飞行过程中根据风速调整翅膀和尾巴的角度,静静地悬停观察猎物,然后迅速俯冲攻击。该策略包括不同的攻击行为,用于全局探索和搜索。图a为黑翼风筝在空中盘旋时的攻击状态,图b为黑翼风筝在空中盘旋时的攻击状态。下面是黑翼鸢攻击行为的数学模型:

        yij(t)和yij(t+1)分别表示第i只黑翼鸢在第j维和(t+1)次迭代步骤中的位置;r为0~1之间的随机数,p为0.9的常数;T是迭代的总次数,t是到目前为止已经完成的迭代次数。

三、迁徙行为

        鸟类迁徙是一种受气候和食物供应等环境因素影响的复杂行为。鸟类迁徙是为了适应季节变化,许多鸟类在冬季从北方向南迁徙,以获得更好的生存条件和资源。迁移通常由领导者领导,他们的导航技能对团队的成功至关重要。我们提出了一个基于鸟类迁徙的假设:如果当前种群的适应度值小于随机种群的适应度值,那么领导者将放弃领导并加入迁徙种群,这表明它不适合领导种群前进。相反,如果当前种群的适应度值大于随机种群的适应度值,则会引导种群到达目的地。这种策略可以动态地选择优秀的领导者,以确保迁移的成功。

        下图为黑翼鸢迁徙过程中领头鸟的变化情况。

        以下是黑翼鸢迁徙行为的数学模型:

        其中,Ljt表示到目前为止第t次迭代的第j维黑翼风筝的领先得分者。yij(t)和yij(t+1)分别表示第i只黑翼鸢在第j维和(t+1)次迭代步骤中的位置;Fi表示任一黑翼鸢在第t次迭代中获得的第j维当前位置;Fri表示第t次迭代中任意黑翼鸢在第j维随机位置的适应度值;C(0,1)代表柯西突变。定义如下:

        一维柯西分布是具有两个参数的连续概率分布。一维柯西分布的概率密度函数为:

        当δ=1, μ=0时,其概率密度函数成为标准形式。精确公式如下:

算法伪代码

        为了使大家更好地理解,这边给出算法伪代码,非常清晰!

        如果实在看不懂,不用担心,可以看下代码,再结合上文公式理解就一目了然了!

性能测评

        原文作者在CEC-2022和CEC-2017五个实际工程设计问题中的应用表明了它在解决现实世界中约束挑战方面的实际潜力,并表明与现有优化技术相比,它具有显著的竞争优势。

        这边为了方便大家对比与理解,采用23个标准测试函数,即CEC2005,并与经典的算术优化算法AOA进行对比!这边展示其中5个测试函数的图,其余十几个测试函数大家可以自行切换尝试!

        可以看到,BKA的效果还是非常不错的!基本在所有函数上都超过了AOA算法,仅有部分函数差于AOA算法,收敛速度也非常快,大家应用到各类预测、优化问题中是一个不错的选择~

参考文献

        [1]Wang J, Wang W, Hu X, et al. Black-winged kite algorithm: a nature-inspired meta-heuristic for solving benchmark functions and engineering problems[J]. Artificial Intelligence Review, 2024, 57(4): 1-53.

完整代码

        如果需要免费获得图中的完整测试代码,只需点击下方小卡片,后台回复关键字:

BKA

        也可点击下方小卡片,后台回复个人需求(比如BKA-BP)定制黑翅莺优化模型(看到秒回):

        1.回归/时序/分类预测类:SVM、RVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、BP、XGBoost、TCN、BiTCN、ESN等等均可~

        2.组合预测类:CNN/TCN/BiTCN/DBN/Adaboost结合SVM/RVM/ELM/LSTM/BiLSTM/GRU/BiGRU/Attention机制类等均可(可任意搭配非常新颖)~

        3.分解类:EMD、EEMD、VMD、REMD、FEEMD、TVF-EMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可~

        4.其他:机器人路径规划、无人机三维路径规划、DBSCAN聚类、VRPTW路径优化、微电网优化、无线传感器覆盖优化、故障诊断等等均可~

        5.原创改进优化算法(适合需要创新的同学):2024年的黑翅莺优化算法BKA以及麻雀SSA、蜣螂DBO等任意优化算法均可,保证测试函数效果!

        更多代码链接:更多代码链接

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了驱动STM8S903K3使用BKA30,您可以使用RIS-BKA库。首先,您需要在项目中安装该库,可以使用以下命令进行安装: ``` $ npm install ris-bka ``` 然后,在您的项目中导入ris-bka模块,并创建一个RisBka对象。您可以使用该对象的方法来执行特定的操作,例如获取版本信息。在您的代码中,您可以调用`getVersion`方法来获取版本信息。该方法接受一个回调函数作为参数,该回调函数将在获取版本信息成功后被调用。您可以在回调函数中处理获取到的版本信息并进行相应的操作。以下是一个使用RIS-BKA库驱动STM8S903K3的示例代码: ```javascript // 导入ris-bka模块 var RisBka = require('ris-bka'); // 创建RisBka对象 var bka = new RisBka(); // 使用getVersion方法获取版本信息 bka.getVersion(function(version) { // 在回调函数中处理获取到的版本信息 console.log("BKA30驱动版本:" + version); // 进行相应的操作 // ... }); ``` 请注意,以上代码仅为示例,您可能需要根据实际情况进行相应的修改和补充。希望这能帮助到您。<span class="em">1</span> #### 引用[.reference_title] - *1* [ris-bka:用于请求 ris.bka.gv.at 的 Javascript 库](https://download.csdn.net/download/weixin_42116585/19568519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值