智能算法 | Matlab实现改进黑猩猩优化算法SLWCHOA与多个基准函数对比与秩和检验

发布时间:2024年01月21日

智能算法 | Matlab实现改进黑猩猩优化算法SLWCHOA与多个基准函数对比与秩和检验

预测效果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

基本描述

1.Matlab实现改进黑猩猩优化算法SLWCHOA与多个基准函数对比与秩和检验 (完整源码)
2.利用Sobol序列初始化种群,增加种群的随机性和多样性,为算法全局寻优奠定基础;
3.其次,引入基于凸透镜成像的反向学习策略,将其应用到当前最优个体上产生新的个体,提高算法的收敛精度和速度;
4.最后,将水波动态自适应因子添加到攻击者位置更新处,增强算法跳出局部最优的能力。
提供与原始CHOA、鲸鱼算法WOA、麻雀搜索算法SSA、灰狼算法GWO等算法的对比。
5.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。

程序设计

%% 清除环境变量
clear 
clc
close all

%% 参数设置
N = 30;             % 种群规模
Function_name = 'F4';       % 从F1到F23的测试函数的名称(本文中的表123)
Max_iteration = 500;         % 最大迭代次数
% 加载所选基准函数的详细信息
[lb, ub, dim, fobj] = Get_Functions_details(Function_name);
% 初始化种群位置
X = initialization(N, dim, ub, lb);

cnt_max =5;

%% 画图

% 画图迭代曲线图
figure
semilogy(SLWChoA_Curve,'r-','linewidth',1.5);
hold on
semilogy(SSA_Curve,'b--','linewidth',1.5);
hold on
semilogy(GWO_Curve,'y--','linewidth',1.5);
hold on
semilogy(PSO_Curve,'b-','linewidth',1.5);
hold on
semilogy(WOA_Curve,'k-','linewidth',1.5);
hold on
semilogy(CHOA_Curve,'m-','linewidth',1.5);
hold on
semilogy(MPA_Curve,'r-','linewidth',1.5);
hold on
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
set(gca,'fontname','Times New Roman')

axis tight
grid on
box on
legend('SLWChoA','SSA','GWO','PSO','WOA','CHOA','MPA')

% 画出所选基准函数的三维立体图形
figure;
func_plot(Function_name);
title(Function_name)
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
set(gca,'fontname','Times New Roman')

% 2、画出目标函数值变化曲线图
figure;
t = 1:Max_iteration;
semilogy(t, SLWChoA_Curve, 'ro-',t, SSA_Curve, 'ko-', t, GWO_Curve, 'cs-', ...
    t, PSO_Curve, 'k*-', t, WOA_Curve, 'gh-', t, CHOA_Curve, 'b^-', t, MPA_Curve, 'r*-',  ...
    'linewidth', 1.5, 'MarkerSize', 8, 'MarkerIndices', 1:50:Max_iteration);
title(Function_name)
xlabel('迭代次数');
ylabel('适应度值');
axis fill
grid on
box on
legend('SLWChoA','SSA','GWO','PSO','WOA','CHOA','MPA');
%% 显示结果
disp(['SSA得到的最佳位置为 : ', num2str(SSA_Best_pos)]);
disp(['SSA得到的目标函数的最佳值为 : ', num2str(SSA_Best_score)]);
disp(['WOA得到的最佳位置为 : ', num2str(WOA_Best_pos)]);
disp(['WOA得到的目标函数的最佳值为 : ', num2str(WOA_Best_score)]);
disp(['GWO得到的最佳位置为 : ', num2str(GWO_Best_pos)]);
disp(['GWO得到的目标函数的最佳值为 : ', num2str(GWO_Best_score)]);
disp(['PSO得到的最佳位置为 : ', num2str(PSO_Best_pos)]);
disp(['PSO得到的目标函数的最佳值为 : ', num2str(PSO_Best_score)]);
disp(['CHOA得到的最佳位置为 : ', num2str(CHOA_Best_pos)]);
disp(['CHOA得到的目标函数的最佳值为 : ', num2str(CHOA_Best_score)]);
disp(['MPA得到的最佳位置为 : ', num2str(MPA_Best_pos)]);
disp(['MPA得到的目标函数的最佳值为 : ', num2str(MPA_Best_score)]);
disp(['SLWChoA得到的最佳位置为 : ', num2str(SLWChoA_Best_pos)]);
disp(['SLWChoA得到的目标函数的最佳值为 : ', num2str(SLWChoA_Best_score)]);

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129036772?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128690229

文章来源:https://blog.csdn.net/kjm13182345320/article/details/135728449
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。