蛇鹭优化算法(SBOA)-2024年4月SCI新算法-公式原理详解与性能测评 Matlab代码免费获取

news2024/5/18 17:14:41

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

目录

原理简介

一、初始化阶段

二、蛇鹭的捕猎策略(探索阶段)

(1)寻找猎物

(2)消耗猎物

(3)攻击猎物

三、蛇鹭的逃生策略(开发阶段)

算法流程图和伪代码

性能测评

参考文献

完整代码


        蛇鹭优化算法(Secretary Bird Optimization Algorithm, SBOA)是一种新型的元启发式算法(智能优化算法),灵感来源于模拟蛇鹭的生存能力来解决现实世界的优化问题。这位作者的论文足足写了一百多页,令人震惊,不知道大家为何都越来越卷~SBOA使用CEC-2017和CEC-2022基准套件与15种高级算法进行了比较,并利用其解决了12个约束工程设计问题和无人机三维路径规划。该成果由Youfa Fu等人于2024年4月发表在SCI人工智能二区顶刊Artificial Intelligence Review上!

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

原理简介

        灵感:秘书鸟(学名:蛇鹭)是一种引人注目的非洲猛禽,以其独特的外表和独特的行为而闻名。它广泛分布在非洲撒哈拉沙漠以南的草原、稀树草原和开阔的河流地区。秘书鸟通常栖息在热带开阔的草原、树木稀疏的稀树草原和长着高草的开阔地区,它们也可以在半沙漠地区或有开阔空地的树木繁茂的地区找到。秘书鸟的羽毛特点是背部和翅膀上的羽毛呈灰褐色,胸部为纯白色,腹部为深黑色。

        秘书鸟的智慧体现在它躲避捕食者的策略上,它包括两种不同的方法。第一种策略涉及到鸟类在发现附近有威胁时伪装自己的能力。如果适合伪装成周围的环境,秘书鸟会融入它的环境,以逃避潜在的威胁。当鸟意识到周围环境不利于伪装时,第二种策略就开始发挥作用了。在这种情况下,它会选择飞行或快速行走作为一种迅速逃离捕食者的手段。秘书鸟行为与秘书鸟优化算法(SBOA)的对应关系如下图所示。在这种情况下,秘书鸟的预备狩猎行为对应于秘书鸟优化算法(SBOA)的初始化阶段。秘书鸟的狩猎过程的后续阶段与SBOA的三个探索阶段相一致。秘书鸟逃避捕食者的两种策略分别对应于SBOA开发阶段的两种策略C1和c2。

一、初始化阶段

        蛇鹭优化算法(SBOA)方法属于基于种群的元启发式方法,其中每只秘书鸟都被认为是算法种群中的一个成员。每个秘书鸟在搜索空间中的位置决定了决策变量的值。因此,在初始实现sba时,采用式(1)对秘书鸟在搜索空间中的位置进行随机初始化。

二、蛇鹭的捕猎策略(探索阶段)

        秘书鸟以蛇为食时的捕猎行为通常分为三个阶段:寻找猎物、消耗猎物和攻击猎物。秘书鸟的狩猎行为如下图所示。

        根据秘书鸟捕食阶段的生物学统计和每个阶段的持续时间,我们将整个捕食过程分为三个相等的时间间隔,分别为t<1/3T、1/3T<t<2/3T和2/3T<t<T,分别对应秘书鸟捕食的三个阶段:寻找猎物、消耗猎物和攻击猎物。

(1)寻找猎物

        秘书鸟的捕猎过程通常是从寻找潜在的猎物开始的,尤其是蛇。秘书鸟拥有令人难以置信的敏锐视力,使它们能够迅速发现隐藏在大草原高草中的蛇。它们用长腿慢慢地扫地,同时注意周围的环境,寻找蛇的迹象。它们的长腿和长脖子使它们能够保持相对安全的距离,以避免蛇的攻击。这种情况出现在优化的初始迭代中,此时探索至关重要。因此,这一阶段采用差分进化策略。差分进化利用个体之间的差异来产生新的解决方案,增强了算法的多样性和全局搜索能力。通过引入微分变异操作,多样性可以帮助避免陷入局部最优状态。个体可以探索解空间的不同区域,从而增加找到全局最优解的机会。

        在寻找猎物阶段更新秘书鸟的位置可以使用公式(4)(5)​进行建模:

        式中,t表示当前迭代次数,T表示最大迭代次数,Xnew,P1 i表示第i只秘书鸟在第一阶段的新状态,xrandom_1和xrandom_2是第一阶段迭代的随机候选解。R1表示区间[0,1]中随机生成的维数为1 × Dim的数组,其中Dim为解空间的维数。xnew P1 i,j表示其第j维的值,Fnew P1 i表示其目标函数的适应度值。

(2)消耗猎物

        在秘书鸟发现一条蛇后,它采用了一种独特的狩猎方法。不像其他猛禽会立刻扑进去战斗,秘书鸟用它敏捷的步法和在蛇周围的机动。秘书长站在原地,从高处观察蛇的一举一动。它利用对蛇的动作的敏锐判断,逐渐盘旋、跳跃、挑衅蛇,从而消耗对手的耐力。在这个阶段,使用“xbest”(历史最佳位置)和布朗运动的概念。通过使用“xbest”,个体可以对他们之前找到的最佳位置执行局部搜索,从而更好地探索周围的解决方案空间。此外,这种方法不仅可以帮助个体避免过早收敛到局部最优,而且可以加速算法收敛到解空间中的最佳位置。这是因为个体可以根据全局信息和自己的历史最佳位置进行搜索,从而增加了找到全局最优的机会。布朗运动随机性的引入使个体能够更有效地探索解空间,并提供避免陷入局部最优的机会,从而在解决复杂问题时获得更好的结果。

        因此,秘书鸟在捕食阶段的位置更新可以用公式(7)(8)进行建模:

        其中,randn(1, Dim)表示从标准正态分布(平均值为0,标准差为1)中随机生成的维数为1 × Dim的数组,xbest表示当前最优值。

(3)攻击猎物

        当蛇筋疲力尽时,秘书鸟察觉到了合适的时机,迅速采取行动,利用其强大的腿部肌肉发动攻击。这一阶段通常涉及秘书鸟的踢腿技术,它迅速抬起腿,用锋利的爪子准确地踢蛇,通常瞄准蛇的头部。这些踢腿的目的是迅速使蛇失去能力或杀死蛇,从而避免被咬伤。锋利的爪子攻击蛇的要害,导致它的死亡。有时,当蛇太大而不能立即被杀死时,秘书鸟可能会把蛇带到天空中并释放它,使它坠落在坚硬的地面上,并结束它的生命。在随机搜索过程中,引入Levy飞行策略,增强了优化器的全局搜索能力,降低了SBOA陷入局部解的风险,提高了算法的收敛精度。利维飞行是一种随机的运动模式,其特点是短而连续的步骤和偶尔的长跳跃在短时间内。模拟秘书鸟的飞行能力,增强其对搜索空间的探索能力。大步长有助于算法探索搜索空间的全局范围,使个体更快地接近最佳位置,而小步长有助于提高优化精度。为了使SBOA更具活力,在优化过程中,为了更好地平衡探索与开发、避免过早收敛、加速收敛和提高算法性能,我们引入了一个非线性扰动因子,表示为(1−t) (2 × t)。

        因此,更新秘书鸟在攻击猎物阶段的位置可以使用公式(9)(10)进行建模:

三、蛇鹭的逃生策略(开发阶段)

        秘书鸟的天敌是大型食肉动物,如鹰、鹰、狐狸和豺狼,它们可能会攻击秘书鸟或偷走秘书鸟的食物。当遇到这些威胁时,秘书鸟通常采用各种逃避策略来保护自己或它们的食物。

        这些策略大致可以分为两大类。第一种策略是逃跑或快速奔跑。秘书鸟以其异常长的腿而闻名,这使它们能够以惊人的速度奔跑。它们一天可以走20到30公里的距离,因此被称为“行军鹰”。第二种策略是伪装。秘书鸟可能会利用环境中的颜色或结构融入其中,使捕食者更难发现它们。

        在第一种策略中,当秘书鸟探测到捕食者的附近时,它们首先寻找合适的伪装环境。如果附近没有合适和安全的伪装环境,它们会选择飞行或快速奔跑逃跑。在这种情况下,我们引入一个动态扰动因子,记为(1−t/T)^2。这种动态扰动因素有助于算法在探索(寻找新的解决方案)和开发(使用已知的解决方案)之间取得平衡。通过调整这些因素,可以在不同阶段提高勘探水平或加强开采。综上所述,秘书鸟采用的两种逃避策略可以用公式(14)(15)进行建模​:

        其中,r=0.5, R2表示从正态分布中随机生成维度为(1 × Dim)的数组,xrandom表示当前迭代的随机候选解,K表示整数1或2的随机选择,可由公式(16)计算:

        这里,rand(1,1)表示在(0,1)之间随机生成一个随机数。

算法流程图和伪代码

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

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

性能测评

        原文作者在CEC-2017和CEC-2022基准测试函数中将SBOA与15种高级算法进行了比较,所有测试结果一致证明了SBOA在解决方案质量、收敛速度和稳定性方面的卓越性能。最后,利用SBOA解决了12个约束工程设计问题,并对无人机进行了三维路径规划。

        这边为了方便大家对比与理解,采用23个标准测试函数,即CEC2005,并与性能优越的麻雀搜索算法SSA进行对比!这边展示其中5个测试函数的图,其余十几个测试函数大家可以自行切换尝试!

        可以看到,SBOA在许多高难度的函数上都超过了传统的SSA算法,比如函数F7,表明该算法性能是非常优越的,同时作者测试的函数与应用也非常多,很有说服力,大家应用到各类预测、优化问题中是一个不错的选择~

参考文献

        [1]Fu Y, Liu D, Chen J, et al. Secretary bird optimization algorithm: a new metaheuristic for solving global optimization problems[J]. Artificial Intelligence Review, 2024, 57(5): 1-102.

完整代码

        如果需要免费获得图中的完整测试代码,只需后台回复关键字:

SBOA

        也可后台回复个人需求(比如SBOA-ELM)定制蛇鹭算法优化模型(看到秒回):

        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年的蛇鹭优化算法SBOA以及麻雀SSA、蜣螂DBO等任意优化算法均可,保证测试函数效果!

         更多免费代码链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1642009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS精灵图、字体图标、HTML5新增属性、界面样式和网站 favicon 图标

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度,因此&#xff0c;为了有效地减少服务…

C++校招八股

c类的访问权限与继承方式 公有成员在任何地方都可以被访问&#xff0c;包括类的外部和派生类。受保护成员在类的内部和派生类中可以被访问&#xff0c;但在类的外部不可访问。 私有成员只能在类的内部访问&#xff0c;包括类的成员函数和友元函数&#xff0c;不允许在类的外部…

应用分层和企业规范

目录 一、应用分层 1、介绍 &#xff08;1&#xff09;为什么需要应用分层&#xff1f; &#xff08;2&#xff09;如何分层&#xff1f;&#xff08;三层架构&#xff09; MVC 和 三层架构的区别和联系 高内聚&#xff1a; 低耦合&#xff1a; 2、代码重构 controlle…

【软件测试】测试用例设计方法

1. 等价类划分法1.1. 等价类划分法的定义1.2. 有效等价类和无效等价类1.3. 等价类划分法实例分析 2. 边界值分析法2.1. 边界值分析法的定义2.2. 边界点2.3. 边界值法实例分析 3. 判定表法3.1. 如何用判定表法设计测试用例3.2. 判定表法实例分析 4. 正交表法4.1. 什么是正交表4.…

模拟实现memcpy,memmove,memset,memcmp

memcpy void * memcpy ( void * destination, const void * source, size_t num ); 使用注意事项&#xff1a; 从source的位置向后复制num个字节数据到destination所指向的内存位置中。 这个函数遇到如果源空间和⽬标空间出现重叠&#xff0c;就得使⽤memmove函数处理。 …

纯血鸿蒙APP实战开发——自定义路由栈管理

介绍 本案例将介绍如何使用路由跳转返回时获取到来源页的模块名以及路径名&#xff0c;在实际场景中同一页面通常会根据不同来源页展示不同的UI。 使用说明 无特殊使用说明&#xff0c;其他使用说明参考动态路由的相关说明 实现思路 路由来源页的实现 新增来源页字段 ex…

【刷题篇】动态规划-二维费用的背包问题(十二)

文章目录 1、一和零2、盈利计划3、组合总和 Ⅳ4、不同的二叉搜索树(卡特兰数) 1、一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#x…

vue快速入门(五十三)使用js进行路由跳转

注释很详细&#xff0c;直接上代码 上一篇 新增内容 几种常用的路由跳转方式演示 源码 App.vue <template><div id"app"><div class"nav"><!-- router-link 自带两个高亮样式类 router-link-exact-active和router-link-active区别&a…

AI代理架构的发展:从单一到多代理系统的演进及其影响分析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

数字逻辑之“逻辑门电路”

一、基础知识 1、正逻辑和负逻辑 &#xff08;1&#xff09;基本的逻辑规定 1——“真”0——“假” &#xff08;2&#xff09;正逻辑和负逻辑 在实际的数字系统中&#xff0c;用数字信号&#xff08;逻辑电平U1&#xff0c;U2&#xff09;表示“真&#xff08;1&#xf…

FloodFill-----洪水灌溉算法(DFS例题详解)

目录 一.图像渲染&#xff1a; 代码详解&#xff1a; 二.岛屿数量&#xff1a; 代码详解&#xff1a; 三.岛屿的最大面积&#xff1a; 代码详解&#xff1a; 四.被围绕的区域&#xff1a; 代码详解&#xff1a; 五.太平洋大西洋水流问题&#xff1a; 代码详解&#x…

[leetcode] B树是不是A树的子结构

给定两棵二叉树 tree1 和 tree2&#xff0c;判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 注意&#xff0c;空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 示例 1&#xff1a; 输入&#xff1a;tree1 [1,7,5], tree2 [6,…

Docker-compose部署LTC同步节点

1、下载ltc程序包&#xff0c;litecoin下载地址 下载页 mkdir /data/docker-compose/ltc cd /data/docker-compose/ltc https://github.com/litecoin-project/litecoin/releases/download/v0.21.3/litecoin-0.21.3-x86_64-linux-gnu.tar.gz2、编写dockerfile和bitcoin.conf b…

M2M vs. IoT?

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题&#xff0c;欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 连接设备已经开辟了创造价值和解决重大世界问题的广泛机会&#xff0c;例如可持续发展。 今天&#xff0c;我们网络设备的方式可…

tomcat打开乱码修改端口

将UTF-8改成GBK 如果端口冲突&#xff0c;需要修改tomcat的端口

智慧校园云平台源码,SaaS运营云平台(支持多学校、多校园使用)

智慧班牌系统&#xff0c;又称电子班牌系统&#xff0c;是一种基于互联网技术的综合管理工具。通过在教室内安装显示屏&#xff0c;并连接到学校管理系统&#xff0c;实现教学资源展示、信息发布、学生管理等多种功能的集成。该系统旨在加强学校班级文化建设和班级风采展示&…

Gitea 上传用户签名

在 Gitea 的用户管理部分&#xff0c;有一个 SSH 和 GPG 的选项。 单击这个选项&#xff0c;可以在选项上添加 Key。 Key 的来源 如是 Windows 的用户&#xff0c;可以选择 Kleopatra 这个软件。 通过这个软件生成的 Key 的界面中有一个导出功能。 单击这个导出&#xff0c;…

84、动态规划-完全平方数

思路 第一种递归方式&#xff1a; public static int numSquares3(int n) {if (n<2){return n;}return process(n);}private static int process(int rest) {if (rest<0){return 0;}int minrest;for (int i 2; i*i <rest ; i) {int countrest/(i*i);for (int j 1;…

初始Java篇(JavaSE基础语法)(6)(继承和多态)(下)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaSE 多态篇 目录 多态的概念 实现多态的条件 必须在继承体系下实现向上转型&#xff1a; 子类必须对父类中的方法进行重写&#xff1…

Wireshark CLI | 过滤包含特定字符串的流

问题背景 源自于和朋友的一次技术讨论&#xff0c;关于 Wireshark 如何查找特定字符串所在的 TCP 流&#xff0c;原始问题如下&#xff1a; 仔细琢磨了下&#xff0c;基于我对 Wireshark 的使用经验&#xff0c;感觉一步到位实现比较困难&#xff0c;所以想着说用 Wireshark C…