一、麻雀搜索算法SSA(代码获取:底部公众号)
麻雀搜索算法(SSA, Sparrow Search Algorithm)是2019年提出的一种新型的启发式算法,该算法的灵感来自于麻雀群体的搜索行为,通过模拟麻雀在寻找食物和避免天敌的过程中的行为,实现寻优目标函数的目的,具有搜索效率高、参数设置简单等优点。SSA算法的工作原理是将搜索空间划分为若干个小区域,并通过麻雀群体搜索和位置调整来实现全局优化。麻雀群体分为主群体和辅助群体,主群体的搜索过程受到辅助群体的影响,而辅助群体的位置则通过随机游走的方式进行更新,从而使主群体更好地探索搜索空间。
麻雀搜索算法的基本工作原理是将一个麻雀种群划分为发现食物的发现者和加入者,同时引入侦查预警机制,选择一定比例的个体进行侦查预警。在种群中,适应度值较高的发现者能力更强,能够优先发现食物,而其余加入者随之跟随觅食。如果麻雀群中出现较大危险,鸟群会进行报警,此时发现者和加入者将会转移到其他区域觅食,以保证其生存安全。在此过程中,发现者和加入者的身份可以互相转变,但它们在麻雀种群中所占的比例是固定的。如果加入者的适应度值较低,发现食物的能力较差,可能会飞往其他区域寻找更好的食物发现者,并在其周围进行觅食。
在每次迭代过程中,发现者的位置更新描述为:
当R2<ST时,意味着此时的觅食环境周围没有捕食者,发现者可以执行广泛的搜索操作;当R2≥ST时,表示种群中的一部分麻雀发现了捕食者,并向种群中其他麻雀发出警报,此时所有麻雀都需要迅速飞到其他安全的地方进行觅食。
追随者的位置更新描述为:
当i>n/2时,表明适应度较低的第i个追随者没有获得食物,处于十分饥饿的状态,此时需要飞往其他地方觅食,以获得更多的能量。
二、SSA优化BP流程
(1)建立BP神经网络,确定网络输入与输出因素,导入样本数据并确立BP网络的拓扑结构。
(2)初始化BP权值和阈值,将网络中的权重和偏置参数作为搜索空间中的变量,并设置搜索空间的上下界。
(3)初始化麻雀个体群,并根据个体的适应度值将其分为发现者和加入者两类。
(4)利用麻雀的觅食和报警行为来更新发现者和加入者的位置,同时采用侦查预警机制来避免局部最优解。
(5)计算每个个体的适应度值,更新发现者和加入者的身份,并记录全局最优解。
(6)判断停止条件是否满足,如果未达到停止条件,则重复步骤(4)和(5);否则返回全局最优解作为BP神经网络的最优权重和偏置参数。
三、部分代码
%初始化SSA参数
popsize=30; %初始种群规模
maxgen=50; %最大进化代数
dim=inputnum*hiddennum_best+hiddennum_best*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+outputnum; %自变量个数
lb=repmat(-3,1,dim); %自变量下限
ub=repmat(3,1,dim); %自变量上限
ST = 0.6;%安全值
PD = 0.7;%发现者的比列,剩下的是加入者
SD = 0.2;%意识到有危险麻雀的比重
PDNumber = popsize*PD; %发现者数量
SDNumber = popsize - popsize*PD;%意识到有危险麻雀数量
% 种群初始化
X=zeros(popsize,dim);
for i=1:dim
ub_i=ub(i);
lb_i=lb(i);
X(:,i)=rand(popsize,1).*(ub_i-lb_i)+lb_i;
end
% 计算初始适应度值
fit = zeros(1,popsize);
for i = 1:popsize
[fit(i),NET]= fitness(X(i,:),inputnum,hiddennum_best,outputnum,net,inputn,outputn,output_train,inputn_test,outputps,output_test);
eval( strcat('NETA.net',int2str(i),'=NET;'))
end
%初始化全局最优个体与网络
[fit, index]= sort(fit);%排序
GBestF = fit(1);
X = X(index,:);
GBestX = X(1,:);
eval( strcat('Net=NETA.net',int2str(index(1)),';'));
%初始化其他变量
curve=zeros(1,maxgen);
X_new = X;
四、仿真结果
(1)根据经验公式,通过输入输出节点数量,求得最佳隐含层节点数量:
(2)SSA-BP和BP的预测对比图和误差图
(3)BP和SSA-BP的各项误差指标,预测准确率
(4)麻雀算法SSA适应度进化曲线
(5)BP和SSA-BP模型的回归图
(6)BP和SSA-BP模型的误差直方图
五、BP算法优化
BP算法优化 | |
遗传算法 GA-BP | 灰狼算法 GWO-BP |
鲸鱼算法 WOA-BP | 粒子群算法 PSO-BP |
麻雀算法 SSA-BP | 布谷鸟算法 CS-BP |