声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~
目录
效果展示:
改进策略详解:
改进点1:立方映射初始化种群
改进点2:蝴蝶优化策略
改进点3:正余弦搜索策略
改进点4:高斯扰动策略
参考文献
部分代码
完整代码:
今天为大家带来一期四种策略改进的麻雀搜索算法代码与原理讲解,方便大家改进自己的算法~学会这一篇可扩展到所有算法!
废话不多说,直接看效果!
效果展示:
为了方便大家比较,这里采用经典的23个标准测试函数,也就是CEC2005与原始麻雀算法进行对比!
可以看到,选取的前10个函数里(没有故意遗漏!),有8个都优于原来的麻雀算法,且收敛速度大幅提高,是一种不错的改进方法!其他的函数小伙伴们可以自行尝试,总体上效果明显优于原有的麻雀算法!
改进策略详解:
废话不多说,直接来看一下是如何改进的!
改进点1:立方映射初始化种群
麻雀搜索算法对种群进行初始化时,采用的是随机生成的方式,这种方式会使得麻雀种群分布不均匀,影响后期的迭代寻优。为提高算法全局搜索能力,避免迭代后期种群多样性降低,同时考虑到混沌映射具有随机性、遍历性和规律性等特点,利用混沌序列对种群进行初始化。汤安迪等证明了立方映射的均匀性及遍历性优于经典的Logistic映射,故采用立方映射完成种群的初始化。立方映射公式如下:
式(4)中,n 为映射次数,y(n)∈(-1,0)∪(0,1), y(n)为第n次映射值。
从图中可以看出,相比随机初始化的种群序列,通过立方映射产生 的初始种群分布更加均匀,遍历性更好。
改进点2:蝴蝶优化策略
蝴蝶优化算法(Butterfly Optimization Algorithm, BOA)是受到蝴蝶觅食和求偶过程所启发的群智能算法。在迭代时,蝴蝶将朝着气味最浓的方向移动,该阶段被称为全局搜索阶段。其位置更新方式如下:
式中,Xti是第t次迭代过程中第i只蝴蝶的位置,Xgbest是当前全局最优位置,fi表示第i只蝴蝶发出的气味,其取值大小取决于适应度的大小,r为0-1的随机数。
由发现者位置公式可知,当R<ST时,虽然随着迭代次数的增大,取值分布变得较为均匀,在一定程度上提高了其收敛速度,但是发现者的每一维都在变小并逐渐收敛于0,因此其搜索能力在逐渐降低,这会导致算法在迭代后期易陷入局部极值的情况。故本研究利用BOA的全局搜索阶段位置更新策略改进发现者位置公式,改进后的公式如下:
对改进前后的公式分别进行迭代,得到麻雀种群中个体的分布如图3和图4所示。从图中可以看出, 改进后的策略在迭代后期保证了麻雀种群个体分布 的多样性,在提高收敛速度的同时,在一定程度上扩大了搜索空间,提升了算法的全局寻优能力。
改进点3:正余弦搜索策略
根据跟随者公式可知,跟随者在向发现者最优位置靠近时,会导致种群个体短时间聚集,虽然提高了算法的收敛速度,但是易出现算法陷入局部最优。正余弦函数不仅易于实现,而且有着良好的收敛性。利用其振荡特性进行寻优可以降低算法易陷入局部最优解 的风险。改进后跟随者的位置更新公式如下:
式中,a为大于1的常数,本研究中的a取2; S1、S2、S3、S4 均为服从均匀分布的随机数;S2∈(0, 2π)、S3∈(0,2)、S4∈(0,1);tmax 为最大迭代次数。
改进点4:高斯扰动策略
高斯分布在局部空间搜索性能好,对全局最优个体使用高斯扰动有利于算法跳出局部极值点,同时也 增强了算法全局搜索性能。使用高斯扰动策略生成新个体的公式如下:
式中,Xtbest为当前全局最优位置,XtGbest为高斯变异后得到的个体位置。u和σ2为高斯分布的均值和方差,本研究中的u取0,σ2取1。
参考文献
[1]胡青,龚世才,胡珍.基于改进麻雀搜索算法的空气质量指数预测[J].广西科学,2022,29(04):642-651.(北大核心)
部分代码
可自由切换想要的23个函数,一键出三维函数图与迭代效果图!适合新手小白!
clear
clc
close
SearchAgents_no=30; % 种群数量
Function_name='F10'; % 函数名称
Max_iteration=1000; % 最大迭代次数
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
[SSA_Best_score,bestX,SSA_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
[ISSA_Best_score,AbestX,ISSA_curve]=ISSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
%% 画图
figure('Position',[500 500 660 290])
% 三维函数图
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
% 迭代曲线图
subplot(1,2,2);
semilogy(ISSA_curve,'r-','linewidth',1)
hold on
semilogy(SSA_curve,'b-','linewidth',1)
title('收敛曲线')
xlabel('迭代次数');
ylabel('适应度值');
axis tight
grid on
box on
legend('ISSA','SSA')
set(gcf,'color','w')
%% 显示结果
display(['ISSA在函数' [num2str(Function_name)],'上的最优值', num2str(ISSA_Best_score)]);
display(['SSA在函数' [num2str(Function_name)],'上的最优值', num2str(SSA_Best_score)]);
完整代码:
如果需要免费获得图中的完整测试代码,只需点击下方小卡片,后台回复关键字:
GJMQA
也可点击小卡片,后台回复个人需求定制此改进麻雀算法ISSA优化模型(看到秒回):
1.回归/时序/分类预测类:SVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、BP、XGBoost、TCN、BiTCN、ESN等等均可~
2.组合预测类:CNN/TCN/BiTCN/DBN/Adaboost结合SVM/RVM/ELM/LSTM/BiLSTM/GRU/BiGRU/Attention机制类等均可(可任意搭配非常新颖)~
3.分解类:EMD、EEMD、VMD、REMD、FEEMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可~
4.其他:机器人路径规划、无人机三维路径规划、DBSCAN聚类、VRPTW路径优化、微电网优化、无线传感器覆盖优化、故障诊断等等均可~
5.原创改进优化算法(适合需要创新的同学):2024年的新算法CPO等或麻雀SSA、蜣螂DBO等任意优化算法均可,保证测试函数效果!