改三行代码就发了SCI一区?基于全面学习策略的Jaya算法!学会你也可以!CEC2017效果极佳!

news2024/11/19 3:47:45

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

目录

原始Jaya算法

改进Jaya算法策略详解:

学习策略1:

学习策略2:

学习策略3:

总结:

结果展示

参考文献

部分代码展示与程序目录

完整代码获取


        今天为大家带来一期基于全面学习策略的Jaya算法代码与原理讲解,不同于以往的23个标准测试函数,此次在难度更高的CEC2017函数上进行测试,并包含CEC2017函数图像,非常美观!效果极佳!同时,也是一篇在《Journal of Intelligent Manufacturing》SCI一区顶刊文章!

        同时,本次程序附带各个算法的平均值,最佳值,标准差,最差值,中位值五种指标!并附带Wilcoxon秩和检验箱型图!所有结果均可一键运行出图!!!

        最重要的是,此次改进并不复杂!非常适合新手小白!心急的小伙伴可直接拉到后文看效果和代码!

原始Jaya算法

        首先给大家介绍一下Jaya算法,Jaya算法的提出者与教学优化算法的提出者是同一位学者:R. Venkata Rao。

        各位一定非常好奇为什么叫Jaya算法?该算法努力通过达到最优解来取得胜利,因此将其命名为 Jaya(Jaya是梵文,意思是胜利)。相比于教学优化算法的两个阶段(即教师阶段与学习阶段),Jaya算法只有一个阶段,并具有无参数运行、求解速度快、不易陷入局部最优解等优点。

        Jaya算法的基本思想是趋近最优解,远离最差解。因此,Jaya算法更新位置的公式如下:

        但是,Jaya算法也存在两个很明显的缺点!

        一是JAYA算法只有一种学习策略,它采用当前最佳解和当前最差解来引导种群的搜索方向。因此,一旦当前最佳个体被困在局部最优中,其他个体将被吸引,进而逐渐陷入局部最优。

        二是在求解具有正数搜索空间的优化问题时,JAYA中搜索算子的有效性可能会受到削弱。在上文的公式中,绝对值符号在保持种群多样性方面非常关键。因此我们实际的工程优化问题的设计变量的值通常都大于0,而绝对值符号对于解决这些问题是无效的。

改进Jaya算法策略详解:

        考虑到原始Jaya算法中的上述不足,提出一种由三种不同学习策略的改进Jaya算法CLJaya!

学习策略1:

        该阶段学习策略基于当前最优个体和当前最差个体,继承了原始JAYA算法的特征,可以表示为:

        其中,φ1和φ2是服从标准正态分布的两个随机数。这里需要指出的是,上式使用两个随机数(即φ1和φ2) 具有标准正态分布,而原始Jaya算法采用两个随机数(即r1和r2) 分布均匀。与均匀分布的随机数相比,标准正态分布的随机数来具有更大的变化幅度,这可以扩展个体的搜索空间。因此,学习策略1比原始Jaya算法更有机会找到更好的解。

学习策略2:

        随着迭代次数的增加,大多数个体都聚集在当前最优个体周围进行局部开发。剩下的少数个体(滞后个体)远离当前的最优个体,执行全局探索任务。

        在搜索过程中,当前种群的平均位置总是在移动。因此,一旦种群陷入局部最优,则滞后个体由当前种群的平均位置引导可以有更多的机会逃离局部最优。鉴于此,学习策略2是基于当前最优个体和当前群体的平均位置设计的,可以定义为:

        其中,φ3和φ4是服从标准正态分布的两个随机数,与学习策略1中一样,并且M是当前种群的平均位置,可以写成:

学习策略3:

        为了加快收敛速度,当前最优个体被认为是CLJAYA中的领导者,可以表示为

        φ5和φ6是0和1之间服从均匀分布的两个随机数,p和q(p≠q≠i)是1和N之间的两个任意整数。此外,考虑其中xi是当前的最佳解,等式右侧的第二项为0。因此,将随机扰动项添加到上式中以避免了这种情况。

总结:

        学习策略1、学习策略2和学习策略3对CLJAYA具有相同的重要性,所以应该为它们分配相同的选择概率。鉴于此,设计的全面学习机制可以表示为:

        总的来说,改进算法就是把原始Jaya算法的一个公式扩展成了三个公式,应该不难理解!

结果展示

        原文作者采用了CEC2013和CEC2014进行了测试,这里为了体现算法的优越性,采用说服力更高的CEC2017进行测试,这里随便选取十个,效果如下!其他的大家可以回去慢慢试!效果都很好!(其中第二个函数被官方删除了,无法得出)

        以上截的10个测试函数的图,可以看到,改进的JAYA算法与原始算法效果非常明显,存在很明显的差距,改进算法有些甚至已经达到最优值,同时也能很好的跳出局部最优。

        但是熟悉优化算法的小伙伴都知道,一次运行可能有随机因素存在,多次运行更有说服力!因此,设置种群个数为30个,每个函数运行10次,得到最优值,标准差,平均值,最差值,中位数五个指标!

        命令行窗口会自动统计这五个指标,为了方便大家撰写,本次程序可将这些指标一次性输出到Excel便于撰写!

        如果想拿程序写论文的话只需复制到Word里即可,另外还有秩和检验结果!同时,还有秩和检验结果!

        秩和检验可以从统计学上验证与其他算法的差异性,可以看到,此次改进的Jaya算法与原始算法差异很大!符合改进的要求!

        随后根据这五个指标画出箱型图!非常美观!

        大家使用该算法优化回归、分类、时序预测模型(如CLJAYA-SVM)或应用到信号分解故障诊断领域都是一个不错的选择!

        以上所有图片,均可一键运行出图并生成Excel!!(其中测试函数图像仅需手动切换函数)

        适用平台:Matlab

参考文献

        [1]Zhang Y, Jin Z. Comprehensive learning Jaya algorithm for engineering design optimization problems[J]. Journal of Intelligent Manufacturing, 2022, 33(5): 1229-1253.

部分代码展示与程序目录

%% 清除环境变量
clear
clc
close all
addpath(genpath(pwd));

%% 参数设置
number = 1;                                                   %  选定优化函数,自行替换
variables_no = 30;                                            %  可选 2, 10, 30, 50, 100
[lb,ub,variables_no,fobj]=Get_Functions_cec2017(number,variables_no);  % [lb,ub,D,y]:下界、上界、维度、目标函数表达式
pop_size = 30;                                                %  种群数量 
max_iter = 500;                                               %  迭代次数

%% 运行各算法
[CLJAYA_Best_score,~,CLJAYA_curve] = CLJAYA(pop_size,max_iter,lb,ub,variables_no,fobj);
[JAYA_Best_score,~,JAYA_curve] = JAYA(pop_size,max_iter,lb,ub,variables_no,fobj);

%% 显示结果
display(['CLJAYA在函数' [num2str(number)],'上的最优值', num2str(CLJAYA_Best_score)]);
display(['JAYA在函数' [num2str(number)],'上的最优值', num2str(JAYA_Best_score)]);

完整代码获取

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

CLJAYA

        也可点击小卡片,后台回复个人需求(比如CLJAYA-SVM)定制此改进算法CLJAYA优化模型(看到秒回):

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

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

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

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

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

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

相关文章

使用Golong轻松实现JWT身份验证

使用Golong轻松实现JWT身份验证 JSON Web Tokens (JWT)是一种流行的安全方法,用于在两个方之间表示声明。在Web应用程序领域,它们通常用作从客户端向服务器传输身份信息(声明)的方式。本教程将引导您逐步实现Go应用程序中的JWT身份…

操作系统内功篇:硬件结构之CPU是如何运行的?

本文分5个小结,分别是图灵机工作方式,冯诺依曼结构,总线线路位宽和CPU位宽,程序执行的基本过程, a12的具体执行过程。 一 图灵机的工作方式 图灵机由纸带,读写头组成。读写头上有一些部件例:存储单元&#…

java集合框架——List集合概述及ArrayList,LinkedList的区别

前言: List系列集合是Collection集合中两个系列的其中一个,整理下笔记。打好基础,daydayup! 需要了解Collection的,可以看这篇java集合框架——Collection集合概述 List系列集合 List系列集合的特点为添加的元素有序&…

python-0007-django模版

介绍 模版是对js,html等资源的封装 新建 在项目路径下新建模版文件夹templates(可以为其他名称),要是想细分业务的话,还可以在templates路径下继续建文件夹。如下图: 注册模版 在项目的settings找到T…

分布式链路追踪(一)SkyWalking(1)介绍与安装

一、介绍 1、简介: 2、组成 以6.5.0为例,该版本下Skywalking主要分为oap、webapp和agent三部分,oap和webapp分别用于汇总数据和展示,这两块共同组成了Skywalking的平台;agent是探针,部署在需要收集数据的…

深入解析C++树形关联式容器:map、set及其衍生容器的使用与原理

文章目录 一、引言二、关联式容器的中的 paira.pair 的创建及使用b.pair 间的比较 三、 map 与 set 详解1. map 的基本操作2. set 的基本操作3.关联式容器的迭代器 四、 multimap 与 multiset 的特性五、关联式容器的使用技巧与注意事项1. 键值类型的选择与设计2. 自定义比较函…

STM32第八节:位带操作——GPIO输出和输入

前言 我们讲了GPIO的输出,虽然我们使用的是固件库编程,但是最底层的操作是什么呢?对,我们学习过51单片机的同学肯定学习过 sbit 修改某一位的高低电平,从而实现对于硬件的控制。那么我们现在在STM32中有没有相似的操作…

【AI+编程】利用chatGPT编写python程序处理日常excel工作提升效率小技巧

之前写过一篇AI编程相关的文章 【人工智能】为啥我最近很少写python编程文章了,浅谈AI编程RPA提升工作效率 。 最近有同学私信我,怎么利用AI编程来提升工作效率,除了文章里讲的 使用AI帮忙写算法、代码提示、代码优化、不同语言转换(如J…

如何简化漏洞管理生命周期

如今,由于系统中的漏洞数量不断增加,各种规模的组织都面临着巨大的挑战。截至 2024 年 2 月,国家漏洞数据库是漏洞数据的综合来源,报告了超过 238,000 个案例。网络安全漏洞可能会导致严重后果,包括关键流程中断、敏感…

SSA-LSTM多输入回时序预测 | 樽海鞘优化算法-长短期神经网络 | Matlab

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&a…

最新CLion + STM32 + CubeMX 开发环境搭建

网上有不少相关教程,但都是基于老版本Clion,新版有一些改变,但整体是简单了。 PS:本教程基于CLion 2023.3.4 安装所需工具参考:Clion搭建stm32开发环境(STM32F103C8T6),有这一篇就够…

C# 第三方 UI 库

C# 的第三方 UI 库提供了丰富的界面控件和组件,可以帮助开发者快速构建现代化、功能丰富的桌面应用程序。以下是一些常见的 C# 第三方 UI 库,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。…

深入了解 大语言模型(LLM)微调方法

引言 众所周知,大语言模型(LLM)正在飞速发展,各行业都有了自己的大模型。其中,大模型微调技术在此过程中起到了非常关键的作用,它提升了模型的生成效率和适应性,使其能够在多样化的应用场景中发挥更大的价值。 那么&…

vscode通过多个跳板机连接目标机(两种方案亲测成功)

1、ProxyJump(推荐使用) 需要OpenSSH 7.3以上版本才可使用,可用下列命令查看: ssh -V ProxyJump命令行使用方法 ssh -J [email protected]:port1,[email protected]:port2 一层跳板机: ssh dst_usernamedst_ip -…

聚观早报 | 小米汽车SU7将发布;一加Ace 3V渲染图曝光

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 3月13日消息 小米汽车SU7将发布 一加Ace 3V渲染图曝光 禾赛科技2023营收财报 荣耀Magic6至臻版开启预售 老板电…

【05】消失的数字

hellohello~这里是土土数据结构学习笔记🥳🥳 💥个人主页:大耳朵土土垚的博客 💥所属专栏:C语言函数实现 感谢大家的观看与支持🌹🌹🌹 有问题可以写在评论区或者私信我哦…

Android Bundle putBinder传输超过1MB数据,Kotlin

Android Bundle putBinder传输超过1MB数据,Kotlin 由于Android系统架构的设计,Activity/Fragment之间通过Intent在Bundle塞进数据进行传输时候,如果数据超过1MB,会抛JE: java.lang.RuntimeException: android.os.Tran…

【Node.js从基础到高级运用】十、Node.js中的数据库操作

简介 MongoDB 是一种非关系型数据库(NoSQL),它以其灵活的文档结构、高性能、高可用性、易扩展性而闻名。对于许多Node.js开发人员来说,MongoDB 是后端存储的首选解决方案,因为它可以存储的 JSON-like 文档与 JavaScri…

关于Oracle Primavera P6的各数据库帐号用途

在使用/维护P6时,经常会用到各种不同的P6数据库用户,如在连接配置P6 Professional时用到的公共帐号pubuser,进入后台维护p6配置信息(adminpv)或开发常连接的privuser,亦或是配置BI Report/BUSINESS Intelligence报表套件用到的pxr…

如何“使用Docker快速安装Jenkins,在CentOS7”?

1、运行 docker run -d --namejenkins -p 8080:8080 jenkins/jenkins 2、查看日志 ,使用 "docker logs -f jenkins",可以持续刷新日志 docker logs jenkins 3、通过命令查看密码 docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminP…