声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~
目录
原始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等任意优化算法均可,保证测试函数效果!
更多代码链接:更多代码链接