1 简介
麻 雀 搜 索 算 法 (sparrow search algorithm,SSA)提 出 时 间 是2020年,它 是 根 据 麻 雀 觅 食并逃避捕食者的行为而提出的群智能优化算法。麻雀搜索算法主要模拟了麻雀群觅食的过程。每只麻雀都有3种可能的行为:发现者:搜索食物;加入者:跟随发现 者 觅 食;侦 察 者:警 戒 侦 查。其 中,发 现 者是麻雀中找 到 食 物 较 早 的 个 体,加入者则为其他个体,同时在麻雀种群中还有一定比例的个体进行侦查预警,它们的任务是在发现危险的情况下就放弃食物,选择安全第一。
2 部分代码
function [zbest,yy]=PSO_chebyshev( alpa,c1,c2,D,maxgen,sizepop,u,Vmax,Vmin,popmax,popmin,randdata1,randdata2,model)
%% chebyshev混沌粒子群
%% 产生初始粒子和速度
for i=1:sizepop
%随机产生一个种群
pop(i,:)=randdata1(i,:); %初始种群
V(i,:)=randdata2(i,:); %初始化速度
%计算适应度
fitness(i)=fun(pop(i,:),model); %粒子的适应值
end
%% 个体极值和群体极值
[bestfitness bestindex]=min(fitness);
zbest=pop(bestindex,:); %全局最佳
gbest=pop; %个体最佳
fitnessgbest=fitness; %个体最佳适应度值
fitnesszbest=bestfitness; %全局最佳适应度值
%% 迭代寻优
for i=1:maxgen
for j=1:sizepop
%速度更新
V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
V(j,find(V(j,:)>Vmax))=Vmax;
V(j,find(V(j,:)<Vmin))=Vmin;
%种群更新
pop(j,:)=pop(j,:)+V(j,:);
pop(j,find(pop(j,:)>popmax))=popmax;
pop(j,find(pop(j,:)<popmin))=popmin;
%适应度值
fitness(j)=fun(pop(j,:),model);
end
for j=1:sizepop
%个体最优更新
if fitness(j) < fitnessgbest(j)
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitness(j);
end
%群体最优更新
[ybestfitness ybestindex]=min(fitness);%寻找最优混沌可行解矢量
ybest=y(ybestindex,:);%最佳个体
ran=1+fix(rand()*sizepop);%产生一随机数1~sizepop之间
pop(ran,:)=ybest;
yy(i)=fitnesszbest;%记录每代最佳
end
3 仿真结果
4 参考文献
[1]许亮, 张紫叶, 陈曦,等. 基于改进麻雀搜索算法优化BP神经网络的气动光学成像偏移预测[J]. 光电子.激光, 2021, 32(6):6.