1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56XlZ9p
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
蛙跳算法(SFLA)是一种全新的启发式群体进化算法,具有高效的计算性能和优良的全局搜索能力。对混合蛙跳算法的基本原理进行了阐述,针对算法局部更新策略引起的更新操作前后个体空间位置变化较大,降低收敛速度这一问题,提出了一种基于阈值选择策略的改进蛙跳算法。通过不满足阈值条件的个体分量不予更新的策略,减小了个体空间差异,从而改善了算法的性能。数值实验证明了该改进算法的有效性,并对改进算法的阈值参数进行了率定。
4.部分源码
..................................................................
%%产生初始青娃
F=m*n;
tic;
for i1=1:F
p(i1,:)=pmax*rands(1,d);
end
%%全局迭代寻优
yy=zeros(1,MAXGEN);
for ii=1:MAXGEN
for i2=1:F
fitness(i2)=fun(p(i2,:));
end
%排序,找最好的,并分组
[fitsort,index]=sort(fitness);
for i3=1:F
x(i3,:)=p(index(i3),:);
end
gx=x(1,:);%种群内最好的青娃
yy(ii)=fitsort(1);
% yy(ii)=fun(x(1,:));
% local=zeros(n,d);
for i4=1:m
local = p(i4:m:end,:);
for j=1:Ne %每组青蛙迭代次数
pb=local(1,:);%组内最优
pw=local(n,:);%组内最差
s1=rand.*(pb-pw);%采用组内最优更新
s1(find(s1>smax))=smax;
temp= pw+s1;
temp(find(temp>pmax))=pmax;
temp(find(temp<pmin))=pmin;
if fun(temp) > fun(pw)
s1=rand.*(gx-pw);%采用全局最优更新
s1(find(s1>smax))=smax;
temp=pw+s1;
temp(find(temp>pmax))=pmax;
temp(find(temp<pmin))=pmin;
end
if fun(temp)>fun(pw)
s1=pmax*rands(1,d);%随机更新
s1(find(s1>smax))=smax;
temp=pw+s1;
temp(find(temp>pmax))=pmax;
temp(find(temp<pmin))=pmin;
end
local(n,:) = temp;
for loc=1:n
fitlocal(loc)=fun(local(loc,:));
end
[localsort,indexlocal]=sort(fitlocal);
for loc=1:n
localnew(loc,:) = local(indexlocal(loc),:);
end
local=localnew;
end %结束Ne
p(i4:m:end,:) =local;
end %结束m
%最好的青娃适配值
end %结束MAXGEN
toc
a266