四种策略改进的麻雀算法!效果起飞!你确定不来看看吗?

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~  

目录

效果展示:

改进策略详解:

改进点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等任意优化算法均可,保证测试函数效果!

  • 27
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值