声明:文章是从本人公众号中复制而来(如图片无法显示可前往本人公众号找到对应推文查看)。想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~
冠军算法一般指 国际进化计算大会(CEC)中的Top算法(一般为前三),计算机领域也经常成为SOTA算法,上一期给大家介绍了CEC冠军算法中的JADE算法:
冠军算法-JADE(具有可选外部存档的差分进化算法)-公式原理详解与性能测评 附Matlab代码
本期要介绍的冠军算法,是由Janez Brest等人于2006年发表于 国际进化计算顶级会议 《 IEEE Congress on Evolutionary Computation 》上的一个算法。尽管这个算法已经比较老了,但是近几年依旧有很多SCI算法与之对比,进而凸显算法优越性,可见其是一个非常优秀的对比算法。
本期代码在CEC2017上进行测试,函数格式均已调整成经典的6输入3输出格式,如果大家需要替换成自己的对比算法非常方便!
您只需做的工作:一键运行main文件即可出图!非常适合新手小白!
01
原理简介


02
算法伪代码
为了使大家更好地理解,这边给出作者算法的流程图,非常清晰!
如果实在看不懂,不用担心,可以看下源代码,再结合上文公式理解就一目了然了!
03
性能测评
为了方便大家对比与理解,我们采用29个CEC2017函数,设置种群数量为30,迭代次数为500,和原始且经典的差分进化算法进行对比!这边展示其中5个测试函数的图,其余几十个个测试函数大家可以自行切换尝试!
可以看到,这个算法在DE算法的基础上有很大的改进,大部分函数上均优于DE算法,表明其寻优能力非常强!大家应用到各类预测、优化问题中也是一个不错的选择~
04
部分代码展示
%% 清除环境变量
clear
clc
close all
addpath(genpath(pwd));
%% 参数设置
pop_size = 30; % 种群规模
max_iter = 500; % 最大迭代次数
Function_name = 'F30'; % CEC2017测试函数: F1,F3-F30(F2被删除,勿选)
[lb, ub, dim, fobj] = CEC2017(Function_name); % 加载所选基准函数的详细信息
%% 运行各算法
[SaDE_Best_score,~,SaDE_curve] = SaDE(pop_size,max_iter,lb,ub,dim,fobj);
[DE_Best_score,~,DE_curve] = DE(pop_size,max_iter,lb,ub,dim,fobj);
%% 显示结果
display(['SaDE在函数' [num2str(Function_name)],'上的最优值', num2str(SaDE_Best_score)]);
display(['DE在函数' [num2str(Function_name)],'上的最优值', num2str(DE_Best_score)]);
%% 画图
figure1 = figure('Color',[1 1 1]);
G1=subplot(1,2,1,'Parent',figure1);