麻雀搜索算法(SSA)-高被引算法-公式原理详解与性能测评 Matlab代码免费获取

作品简介

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

今天为大家介绍一下性能非常优异的算法—— 麻雀搜索算法( Sparrow Search Algorithm, SSA ) ,这个算法灵感来源于麻雀的生物行为,该算法 薛建凯 等人于2020提出。 这个算法深受大家欢迎,性能非常不错,同时改进空间也非常大。 因此,对它改进的学者也非常多,很多改进它的算法甚至都发到了SCI一区期刊上!

中国知网上显示,该算法发表至今,就已经被引610次,妥妥的高被引算法!

01

原理简介

一、灵感与规则:

为了使算法更加简洁,我们将麻雀的以下行为理想化,并制定相应的规则。 主要规则如下所述:

1) 发现者通常拥有较高的能源储备并且在整个种群中负责搜索到具有丰富食物的区域,为所有的加入者提供觅食的区域和方向。 在模型建立中能量储备的高低取决于麻雀个体所对应的适应度值 (Fitness Value) 的好坏。

2) 一旦麻雀发现了捕食者,个体开始发出鸣叫作为报警信号。 当报警值大于安全值时,发现者会将加入者带到其它安全区域进行觅食。

3) 发现者和加入者的身份是动态变化的。 只要能够寻找到更好的食物来源,每只麻雀都可以成为发现者,但是发现者和加入者所占整个种群数量的比重是不变的。 也就是说,有一只麻雀变成发现者必然有另一只麻雀变成加入者。

4) 加入者的能量越低,它们在整个种群中所处的觅食位置就越差。 一些饥肠辘辘的加入者更有可能飞往其它地方觅食,以获得更多的能量。

5) 在觅食过程中,加入者总是能够搜索到提供最好食物的发现者,然后从最好的食物中获取食物或者在该发现者周围觅食。 与此同时,一些加入者为了增加自己的捕食率可能会不断地监控发现者进而去争夺食物资源。

6) 当意识到危险时,群体边缘的麻雀会迅速向安全区域移动,以获得更好的位置,位于种群中间的麻雀则会随机走动,以靠近其它麻雀。

二、算法设计:

我们需要使用虚拟麻雀进行食物的寻找,由n只麻雀组成的种群可表示为如下形式:

其中,d表示待优化问题变量的维数,n则是麻雀的数量。那么,所有麻雀的适应度值可以表示为如下形式:

其中,f表示适应度值。在SSA中,具有较好适应度值的发现者在搜索过程中会优先获取食物。此外,因为发现者负责为整个麻雀种群寻找食物并为所有加入者提供觅食的方向。因此,发现者可以获得比加入者更大的觅食搜索范围。根据规则(1)和规则(2),在每次迭代的过程中,发现者的位置更新描述如下:

其中,t代表当前迭代数,j=1,2,3,...,d。itemmax是一个常数,表示最大的迭代次数。Xij表示第i个麻雀在第j维中的位置信息。α∈(0,1]是一个随机数。R2(R2∈[0,1])和ST(ST∈[0.5,1])分别表示预警值和安全值。Q是服从正态分布的随机数。L表示一个1×d的矩阵,其中该矩阵内每个元素全部为1。

当R2

对于加入者,它们需要执行规则(4)和规则(5)。如前面所描述,在觅食过程中,一些加入者会时刻监视着发现者。一旦它们察觉到发现者已经找到了更好的食物,它们会立即离开现在的位置去争夺食物。如果它们赢了,它们可以立即获得该发现者的食物,否则需要继续执行规则(5)。加入者的位置更新描述如下:

其中,Xp是目前发现者所占据的最优位置,Xworst则表示当前全局最差的位置。A表示一个1×d的矩阵,其中每个元素随机赋值为1或-1,并且A+=AT(AAT)-1。当i>n/2时,这表明,适应度值较低的第i个加入者没有获得食物,处于十分饥饿的状态,此时需要飞往其它地方觅食,以获得更多的能量。

在模拟实验中,我们假设这些意识到危险的麻雀占总数量的10%到20%。这些麻雀的初始位置是在种群中随机产生的。根据规则(6),其数学表达式可以表 示为如下形式:

其中,其中Xbest是当前的全局最优位置。β作为步长控制参数,是服从均值为0,方差为1的正态分布的随机数。K∈[-1,1]是一个随机数,fi则是当前麻雀个体的适应度值。fg和fw分别是当前全局最佳和最差的适应度值。ε是最小的常数,以避免分母出现零。

为简单起见,当fi>fg表示此时的麻雀正处于种群的边缘,极其容易受到捕食者的攻击。Xbest表示这个位置的麻雀是种群中最好的位置也是十分安全的。fi=fg时,这表明处于种群中间的麻雀意识到了危险,需要靠近其它的麻雀以此尽量减少它们被捕食的风险。K表示麻雀移动的方向同时也是步长控制参数。

02

算法伪代码

为了使大家更好地理解,这边给出作者算法的伪代码,非常清晰!

如果实在看不懂,不用担心,可以看下源代码,再结合上文公式理解就一目了然了!

03

性能测评

原文作者 选取了七种单峰测试函数、五种多峰测试函数和七种固定维度测试函数进行了数值仿真实验并将优化结果与粒子群算法、灰狼优化算法和引力搜索算法进行了对比与分析,进一步验证了算法的收敛速度、稳定性和收敛精度。

这边为了方便大家对比与理解,采用23个标准测试函数,即CEC2005,设置种群数量为30,迭代次数为1000,并与原文中的灰狼优化算法GWO进行对比!这边展示其中5个测试函数的图,其余十几个测试函数大家可以自行切换尝试!

可以看到,这个算法性能确实不错,与原文阐述的效果一致,在大部分函数上均超越了经典的GWO算法,大家应用到各类预测、优化问题中是一个不错的选择~

04

参考文献

[1]薛建凯.一种新型的群智能优化技术的研究与应用[D].东华大学,2020.DOI:10.27012/d.cnki.gdhuu.2020.000178.

也可后台回复个人需求(比如SSA-BP)定制以下SSA算法优化模型(看到秒回):

1.回归/时序/分类预测类: SVM、RVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、SAE、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、TVFEMD、CEEMDAN、ICEEMDAN、SVMD、FMD等分解模型均可~

4.路径规划类: 机器人路径规划、无人机三维路径规划、冷链物流路径优化、VRPTW路径优化等等~

5.优化类: 光伏电池参数辨识优化、储能容量配置优化、 微电网优化、PID参数整定优化、无线传感器覆盖优化、故障诊断等等均可~ ~

6.原创改进优化算法(适合需要创新的同学): 原创改进麻雀优化算法SSA以及哈里斯鹰算法HHO、麻雀算法SSA等任意优化算法均可,保证测试函数效果!

更多代码链接(也可直接点击阅读原文):

https://docs.qq.com/sheet/DT1hWRkpoVVJ3TGZv?tab=BB08J2


创作时间: