基于成功历史的参数自适应差分进化算法SHADE是经典的差分进化变体,该论文发表于2013年,性能非常有参考价值,可用于和其他算法进行对比试验,该算法尤其是在CEC测试集上有着优秀的表现,将此算法用作对比算法,可以极大增强试验的说服力。提升论文被录用的概率。
参考文献:Ryoji Tanabe and Alex Fukunaga. Success-history based parameter adaptation for differential evolution. In 2013 IEEE Congress on Evolutionary Computation, pages 71–78, 2013.
部分代码及实验结果如下:
clear;clc;close all
SearchAgents_no=30; % 种群数量
Max_iteration=1000; % 最大迭代次数
Function_name=1; %设定测试函数
dim=10; %维度设定
lb=-100;%下边界
ub=100;%上边界
fobj = @(x) cec17_func(x',Function_name);
Max_test=30;
for i=1:Max_test
disp(['第',num2str(i),'次实验']);
[Best_pos1(i,:),Best_score1(i,:),curve(i,:)]=SHADE(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %开始优化
end
% % %结果对比
figure
semilogy(mean(curve),'color','r','linewidth',2.0)
title(['CEC2017-F',num2str(Function_name)])
xlabel('Iteration');
ylabel('Fitness');
axis tight%用 axis tight命令可以让坐标轴调整到紧凑地显示图像或曲线,不留边界的空白
grid off%显示 gca 命令返回的当前坐标区或图的主网格线。主网格线从每个刻度线延伸。
box on %显示坐标区周围的轮廓
legend('SHADE')
disp('-------------------------------------------------')
display(['SHADE 30次实验最优适应度值(Best) : ', num2str(min(Best_score1))]);
display(['SHADE 30次实验最优解对应的平均适应度值(mean) : ', num2str(mean(Best_score1))]);
display(['SHADE 30次实验最差适应度值(worst) : ', num2str(max(Best_score1))]);
display(['SHADE 30次实验标准差(std) : ', num2str(std(Best_score1))]);