波搜索算法(WSA)-2024年SCI新算法-公式原理详解与性能测评 Matlab代码免费获取

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

目录

原理简介

一、初始化阶段

二、全局开发阶段

三、局部勘探阶段

(1)发射电磁波

(2)反射电磁波

(3)接收电磁波

算法伪代码

性能测评

参考文献

完整代码


        波搜索算法(Wave Search Algorithm, WSA)是一种新型的元启发式算法(智能优化算法),灵感来源于雷达技术的启发,采用了新的初始化方法和边界约束规则以及各种改进的贪心机制,总体上看性能不错~作者23个标准测试函数和CEC2017上对WSA进行了测试,证明了WSA算法的优越性。该成果由Haobin Zhang等人于2024年4月发表在SCI期刊The Journal of Supercomputing上!

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

原理简介

        灵感:雷达技术是一种利用电磁波探测目标位置、速度和形状的无线通信技术。它通过发射无线电波,接收反射回波,并对回波进行处理和分析,实现对目标的检测、定位、跟踪和识别。

一、初始化阶段

        首先,我们需要执行一系列初始化准备。我们设粒子数为n,待优化问题维数为d,用矩阵模拟电磁波粒子W的位置:

        并用f ([Wn1, Wn2,⋯Wnd])表示第n个个体的适应度值,种群的适应度值可以用以下向量表示:

        最后,准备n个随机数k1, k2......Kn从0到1,初始化粒子位置。

        其中xi是均匀化的ki, xi*是x中的随机值,lb和ub为搜索空间的上下边界。

二、全局开发阶段

        式中,Wmin是由W各维上的最小值组成的向量,Wmax是由W各维上的最大值组成的向量,fmean是所有粒子适应度值的平均值,r1是0到1之间的随机数,t是当前迭代次数,t是总迭代次数。

        式(5)的好处是可以逐步缩小搜索范围,新生成的点在缩小的范围内生成,提高了搜索效率。式(6)是一种改进的贪心机制,控制种群在全局最优位置附近的位置。

三、局部勘探阶段

(1)发射电磁波

        式中σ=−(5t∕T−2)/√(25(5t∕T−2)2) + 0.7,σ为波形大小控制系数,m为元素服从正态分布并按顺序排列的列向量,Wbest为当前最优位置,Wl为W按与Wbest的接近程度重新排列后的位置矩阵,fmax为群中最大的适合度值。式(7)的作用是模拟电磁波向外扩散,减少陷入局部最优的可能性,提高搜索效率。式(8)是一种改进的贪心机制,其作用是当群体位置向外波动时,使群体位置不劣于当前群体位置。

(2)反射电磁波

        式中β= 0.75 + e−i∕nw2,β为反射强度系数,r2为0 ~ 1的随机值,nw2为模拟反射电磁波的粒子数。Wfi是W按照适应度值从小到大的顺序重新排列后的位置矩阵。式(9)模拟了部分粒子(适应度值较低的粒子)遇到障碍物向Wbest反射,而剩余粒子(适应度值较高的粒子)远离Wbest继续向外扩散。

(3)接收电磁波

        式中δ为接收系数,δ= 0.6 +(1.2−0.5)sin (tπ/2T),η为服从正态分布的随机数,nw3为模拟接收电磁波的粒子数。Wbest*是由通过卷积得到的历史最优位置,Wbest*= [Wbest1;Wbest2;Wbest3⋯Wbestt]∗([I1;I2;I3⋯It]),I1=I2= I3⋯It=1∕t。λ为校正因子,λ= (2t∕T−0.7)∕(0.78+|2t∕T−0.7|)+1。r3、r4、r5、r6是0到1的随机数。式(11)模拟了雷达通常正常接收电磁波,但有时会受到干扰,需要进行校正和处理。其作用是使粒子群体向当前最优方向搜索。同时,有一定的概率会向W方向偏转,以减少陷入局部最优的可能性。

        最后,引入了一种确定性优化技术:基于中心差分法的拟合梯度下降法。其数学表达式为:

        式中,W+εi = Wi +ε,W−εi = Wi−ε,ε= 10−6,g为梯度,α为步长系数,将α的初始值设为α0=0.3,通过步长试验确定最终的步长。步长试验方法如下:如果初始步长迭代后的适应度值小于等于当前适应度值,则α=α0∕c,否则α=α0*c,其中c为缩放因子。式(14)采用中心差分法拟合待优化问题的解析信息,用于搜索最优解,以提高搜索效率和精度。值得注意的是,该策略是一种确定性优化技术。WSA算法通过引入该策略,结合了确定性和不确定性优化技术。

        另外,广义的边界限制规则是将越过边界的粒子放在边界上。我们发现这种方法降低了粒子群的多样性。因此,我们建议将超出边界的粒子随机设置在搜索范围内。数学表达式为:

        其中,lb和ub分别为搜索范围的下边界和上边界,r是一个d维随机化列向量,其元素值范围为0到1。

算法伪代码

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

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

性能测评

        原文作者在经典的23个基准测试函数和30个CEC2017测试函数)对WSA算法进行测试,并将WSA算法应用于六个常见工程问题和移动机器人路径规划问题,将其与最先进和高引用算法进行比较。实验结果表明,WSA算法的优化能力优于其他最先进的优化算法,能够有效地解决实际工程问题。

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

        可以看到,WSA在许多高难度的函数上都超过了经典的SSA算法,表明该算法性能是非常优越的,很有说服力,大家应用到各类预测、优化问题中是一个不错的选择~

参考文献

        [1]Zhang H, San H, Sun H, et al. A novel optimization method: wave search algorithm[J]. The Journal of Supercomputing, 2024: 1-36.

完整代码

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

WSA

        也可点击下方小卡片,后台回复个人需求(比如WSA-SVM)定制以下青蒿素算法优化模型(看到秒回):

        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、TVFEMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可~

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

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

        更多免费代码链接:更多免费代码链接

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

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

相关文章

我与C++的爱恋:string类的常见接口函数

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 朋友们大家好啊,本节我们来到STL内容的第一部分:string类接口函数的介绍 ​ ​ 1.string类的认识 给大家分享一个c文档 https://legacy.cplusplus.…

Weblogic 管理控制台未授权远程命令执行漏洞(CVE-2020-14882,CVE-2020-14883)

1 漏洞概述 Weblogic Pre-Auth Remote Command Execution 漏洞(CVE-2020-14882, CVE-2020-14883)是针对 Oracle WebLogic Server 的两个安全漏洞。CVE-2020-14882 允许远程用户绕过管理员控制台组件中的身份验证,而 CVE-2020-14883 则允许经…

Python3 笔记:Python的函数

函数是编写好的,可重复调用的,用来实现某一功能的一段代码。 也可以理解为做某事的方法和步骤。第一次做的时候写好了方法,下次同类型的事直接拿来就用。 Python 内部有很多功能强大的内置函数供我们使用,除此之外,你…

Nagle算法

Nagle算法简介 Nagle算法主要是避免发送小的数据包,要求TCP连接上最多只能有一个未被确认的小分组,在该分组的确认到达之前不能发送其他的小分组。 在默认的情况下,Nagle算法是默认开启的,Nagle算法比较适用于发送方发送大批量的小数据&…

Sam Blackshear谈Move语言的起源

Move编程语言作为Sui生态系统的关键组成部分,通过可编程交易区块等机制支持其独特的对象数据模型,并支持高效的代码。五年前,Mysten Labs的联合创始人兼首席技术官Sam Blackshear创建了Move。他专门设计了Move,用于编写智能合约&a…

数据库SQL查询语句汇总详解

SQL是一种强大的编程语句,可用于操作和提取数据库中的数据。如果你对编程语句有所让步,那么你可能对SQL的力量感到难以置信。本文将带你深入探索SQL查询的世界,让你了解SQL语句的各种查询方式,并以实例进行详解。 1. SELECT基础查…

Iterator底层源码分析

/** * Iterator用于遍历Collection下的集合&#xff0c;Collection下的每个集合底层实现不一样&#xff0c;意味着遍历逻辑也不一样&#xff0c; * 所以Java的设计者将Iterator设计成了接口&#xff0c;让Collection下的每个集合实现Iterator */ public interface Iterator<…

英伟达的GPU(1)

又好久没更新了,一方面是最近事情有点多,另一方面最近也确实有点懒。 之前我说要把硬件部分补完,要写Nvidia的GPU,我估计一篇写不完,所以先写点。 早先的硬件文章可以参考: 上一篇:解读神秘的华为昇腾910 (qq.com) 上上一篇Microsoft Maia (qq.com) 上上上篇Google的…

sqli-labs靶场第十四关

目录 1&#xff1a;分析 找闭合符&#xff1a; 2&#xff1a;开始注入 报错注入&#xff1a; 注入数据库名&#xff1a; 注入表名&#xff1a; 注入列名&#xff1a; 注入具体值&#xff1a; 1&#xff1a;分析 经过我们的实验发现当我们输入的密码后面存在双引号时会报…

【C++】学习笔记——多态_1

文章目录 十二、继承8. 继承和组合 十三、多态1. 多态的概念2. 多态的定义和实现虚函数重写的两个特殊情况override 和 final 3. 多态的原理1. 虚函数表 未完待续 十二、继承 8. 继承和组合 我们已经知道了什么是继承&#xff0c;那组合又是什么&#xff1f;下面这种情况就是…

英语学习笔记13——A new dress

A new dress 一件新连衣裙 词汇 Vocabulary colour / color n. 颜色 v. 上色&#xff0c;涂色  英  美 颜色短语&#xff1a;green hand 新手      black tea 红茶      white house 白宫      black sheep 害群之马 英文颜色类词汇&#xff1a; red 红色…

鸿蒙开发接口Ability框架:【ApplicationContext】

ApplicationContext ApplicationContext模块提供开发者应用级别的的上下文的能力&#xff0c;包括提供注册及取消注册应用内组件生命周期的监听接口。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.m…

静态IP代理:网络世界的隐秘通道

在数字化时代&#xff0c;网络安全和隐私保护日益受到重视。静态IP代理作为一种网络服务&#xff0c;为用户提供了一个稳定且可预测的网络连接方式&#xff0c;同时保护了用户的在线身份。本文将从五个方面深入探讨静态IP代理的概念、优势、应用场景、技术实现以及选择时的考量…

C语言学习【printf函数和scanf函数】

C语言学习【printf函数和scanf函数】 printf()函数和scanf()函数可以让用户与程序交流&#xff0c;是输入/输出函数 printf()函数 请求printf()函数打印数据的指令要与待打印数据的类型相匹配。例如&#xff0c;打印整数时使用%d&#xff0c;打印字符时使用%c。这些符号被称…

实战项目技术点(1)

1、什么是REST&#xff1f; REST&#xff08;Representational State Transfer&#xff09;&#xff0c;表述性状态转换&#xff0c;它是一种软件架构风格。传统URL风格如下&#xff1a; http://localhost:8080/user/getById?id1 GET&#xff1a;查询id为1的用户 http://loc…

网络常识一:常用工具

作为后端开发&#xff0c;特别是网络游戏后端开发&#xff0c;经常需要处理各种现网问题&#xff0c;其中有不少是网络相关的。 下面列举的工具主要是在 linux 下的&#xff0c;诊断线上服务器问题的时候&#xff0c;往往是分秒必争&#xff0c;所以这些工具都要用得很熟练&am…

程序在银河麒麟系统下实现开机自启及创建桌面快捷方式

目录 1. 机器环境说明 2. 程序开机自启动设置 2.桌面快捷方式设置 3. 附加说明 1. 机器环境说明 机器安装的银河麒麟操作系统属性如下&#xff1a; 2. 程序开机自启动设置 第1步&#xff1a;编写一个脚本,用于自动化启动&#xff0c;为便于后文描述&#xff0c;该脚本名称…

干货教程【软件篇】| 免费实现游戏加速自由

需要这个游戏加速软件的小伙伴可以关注一下文章底部公众号&#xff0c;回复关键词【zdjs】即可获取。 该软件可以实现免费的游戏加速&#xff0c;实测延迟低体验好&#xff01; 建议看到后赶紧保存下来防止丢失&#xff01; 下面讲一下该软件安装流程~ 通过链接可以得到下面…

2.go语言初始(二)

本篇博客涉及到go 的基础数据类型、 go 语言中的运算符、转义字符、格式化输出、字符串操作 go 语言中的运算符 在 go 语言中&#xff0c;基本数据类型主要包括以下几类&#xff1a;整数类型、浮点数类型、复数类型、布尔类型、字符串类型、字节类型&#xff08;byte&#xf…

Linux进程控制——Linux进程程序替换

前言&#xff1a;Linux进程控制包含了进程终止&#xff0c;进程等待&#xff0c;进程程序替换。走到现在我们也只剩下进程程序替换没介绍了&#xff0c;那么让我们来看看进程程序替换到底是什么&#xff01; 本篇主要内容&#xff1a; 替换原理 替换函数 实现简易shell 我们所创…