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

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

目录

原始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.hqwc.cn/news/536454.html

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

相关文章

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

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

【海贼王的数据航海】探究二叉树的奥秘

目录 1 -> 树的概念及结构 1.1 -> 树的概念 1.2 -> 树的相关概念 1.3 -> 树的表示 1.4 -> 树在实际中的运用(表示文件系统的目录树结构) 2 -> 二叉树概念及结构 2.1 -> 二叉树的概念 2.2 -> 现实中的二叉树 2.3 -> 特殊的二叉树 2.4 ->…

Window API 使用的一些注意事项

文章目录 1、LPCWSTR类型2、LPCTSTR类型3、LPCSTR类型4、LPCTSTR和LPCWSTR区别5、LPCTSTR和LPCSTR、LPCWSTR三者区别6、_T(" ")7、DWORD类型转换为std::wstring类型8、char类型转换为LPCSTR类型9、获取当前时间戳(毫秒)10、std::wstring和LPCSTR区别11、std::wstring…

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

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

Unity开发中Partial 详细使用案例

文章目录 **1. 分割大型类****2. 与 Unity 自动生成代码协同工作****3. 团队协作****4. 共享通用逻辑****5. 自定义编辑器相关代码****6. 配合 Unity 的 ScriptableObjects 使用****7. 多人协作与版本控制系统友好** 在 Unity 开发中, partial 关键字是 C# 语言提供…

rabbitmq-spring-boot-start配置使用手册

rabbitmq-spring-boot-start配置使用手册 文章目录 1.yaml配置如下2.引入pom依赖如下2.1 引入项目resources下libs中的jar包依赖如下2.2引入maven私服依赖如下 3.启动类配置如下4.项目中测试发送消息如下5.项目中消费消息代码示例6.mq管理后台交换机队列创建及路由绑定关系如下…

Github 2024-03-13 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目2Python项目2非开发语言项目2HTML项目1CSS项目1Dart项目1TypeScript项目1Go项目1JavaScript项目1《Hello 算法》:动画图解、一键运行的…

【论文撰写】参考文献引用

1、交叉引用 当在撰写论文时往往需要在不同的位置引用参考文献,并且希望其在参考文献顺序与数量变动后也动态改变。这时,就需要word中的【引用】|【交叉引用】 在需要引用参考文献的地方点击后,选择对应的文献 将会得到以下效果 在将其设置为…

谷粒商城——分布式基础(全栈开发篇第一部分)

文章目录 一、服务治理网路数据支撑日志处理ELK应用监控集成工具开发工具 二、环境创建1、虚拟机创建2、虚拟机安装docker等1. 安装docker1. 配置阿里docker3.docker安装mysql错误 4、docker安装redis 3、软件1.Maven 阿里云镜像1.8jdk2、idea lombokmybatisX ,3、 …

Python学习DAY13_图像处理

图形处理 用程序来处理图像和办公文档经常出现在实际开发中,Python 的标准库中虽然没有直接支持这些操作的模块,但我们可以通过 Python 生态圈中的第三方模块来完成这些操作。 相关知识 颜色 大家也许不太记得小时候美术课上的具体内容,但是…

【Flink SQL】Flink SQL 基础概念:SQL 动态表 连续查询

Flink SQL 基础概念:SQL 动态表 & 连续查询 1.SQL 应用于流处理的思路2.流批处理的异同点及将 SQL 应用于流处理核心解决的问题3.SQL 流处理的输入:输入流映射为 SQL 动态输入表4.SQL 流处理的计算:实时处理底层技术 - SQL 连续查询5.SQL…

css实现高度是宽度一半的效果

1、方法一&#xff1a;使用变量:root、var()、clac()实现&#xff1a; 1.1 效果如下&#xff1a; 2.2 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>&l…