✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
针对黑猩猩优化算法存在易陷入局部最优、收敛速度慢、寻优精度低等缺陷,提出了混合改进策略的黑猩猩优化算法(SLWChOA)。首先,利用Sobol序列初始化种群,增加种群的随机性和多样性,为算法全局寻优奠定基础;其次,引入基于凸透镜成像的反向学习策略,将其应用到当前最优个体上产生新的个体,提高算法的收敛精度和速度;同时,将水波动态自适应因子添加到攻击者位置更新处,增强算法跳出局部最优的能力;最后,通过10个基准测试函数、Wilcoxon秩和检验以及部分CEC2014函数进行仿真实验来评价改进算法的寻优性能,实验结果表明所提算法在寻优精度、收敛速度和鲁棒性上均较对比算法有较大提升。另外,通过一个机械优化设计实验进行测试分析,进一步验证SLWChOA的可行性和适用性。
📣 部分代码
ttt = zeros(100,1);
for o = 1:5
tic
I=imread('lena.jpg');
J=rgb2gray(I);%如果是彩色图像要加此句,但去掉下面一句
%J=I;
[a,b]=size(J);
figure(1)
imshow(J)
[p,x]=imhist(J,256); %I为灰度的输入图像,n为指定的灰度级数目
figure(2)
plot(p);
title('灰度直方图')
xlabel('灰度值')
ylabel('像素点个数')
L=x';
LP=p'/(a*b);
n=256
c1=2; %参数,两个学习因子
c2=2;
wmax=0.9;%最大权重
wmin=0.4;%最小
G=100;%迭代次数
M=20; %总群数
X=min(L)+fix((max(L)-min(L))*rand(1,M));
V=min(L)+(max(L)-min(L))*rand(1,M);
m=0;
for i=1:1:n
m=m+L(i)*LP(i);
end
for j=1:1:b
if J(i,j)>gbest1
J(i,j)=250;
else
J(i,j)=0;
end
end
end
kk=1:1:G;
gbest1
figure(3)
imshow(J)
ttt(o) = toc;
figure(4)
plot(kk,GG)
title('最优适应度')
fn = ['myfig' num2str(o) '.jpg'];
saveas(gcf,fn);
end