麻雀搜索算法SSA(Sparrow Search algorithm)

文章目录


前言

麻雀搜索算法是2020提出的一种新的优化算法,出自东华大学xue和shen的论文:A novel swarm intelligence optimization approach: sparrow search algorithm,本文的内容是基于该论文来写的。


数学模型

麻雀搜索算法是受麻雀觅食和反捕食行为启发而提出的。在麻雀集群中,我们将会划分出不同的角色。对于麻雀的行为,我们做出如下假设:
1、能量储备高的麻雀有足够的能力去寻找食物,他们被称为生产者,负责找到可以提供丰富食物来源的区域,他们为乞讨者提供觅食区域或方向。能量储备低的麻雀被称为乞讨者。能量储备的水平取决于对个体适应度值的评估。
2、一旦麻雀发现捕食者,个体就会发出警报,当警报值大于安全阈值时,生产者需要将乞讨者引导至安全区域。
3、每只麻雀只要寻找到更好的食物来源,都可以成为生产者,但生产者和乞讨者在整个种群中的比例保持不变。
4、能量较高的麻雀作为生产者,几个饥饿的乞讨者更有可能飞到其他地方觅食以获得更多的能量。
5、乞讨者会跟随提供最好食物的生产者来寻找食物,同时,一些乞讨者会不断监视生产者并且竞争食物以提高自己的捕食率
6、当意识到危险时,在群体边缘的麻雀将会迅速移动到安全的地方以获得更好的位置,而在群体中间的麻雀将会随机移动以靠近其他麻雀

我们用下面的矩阵来表示麻雀的位置:
在这里插入图片描述
其中,n表示麻雀的数量,d表示要优化的变量的维度,那么,所有麻雀的适应度值可用如下向量表示:

在这里插入图片描述
FX每一行的值代表个体的适应度值。在SSA中,适应度值较好的生产者在搜索过程中优先获得食物。由于生产者负责寻找食物并指导整个族群的移动,因此,比起乞讨者,生产者能够在更大的范围内寻找食物。
我们用下面的式子来更新生产者的位置信息:
在这里插入图片描述
式中,t代表的是当前的迭代次数,j的范围是{1,2,…,d},Xti,j表示第t次迭代时,第i只麻雀的第j个维度的值。itermax是最大的迭代次数,即我们设置要让它迭代多少次才结束的值。α∈(0.1]是一个随机数,R2(R2∈[0,1])和ST(ST∈[0.5,1.0])分别表示警报值和安全阈值。Q是一个满足正态分布的随机数,L是一个1×d的矩阵,并且里面的元素全为1。当R2<ST时,表明周围没有天敌,生产者进入广域搜索模式,当R2>ST时,表明附近存在危险,所有麻雀需要迅速飞到其他安全区域。
我们接着用另外的式子来更新乞讨者的位置信息。
在这里插入图片描述
上式中,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分别是当前全局最佳和最差适应度值,ε是最小的常数,以避免分母为0。当fi>fg,表明麻雀在群体的边缘,Xbest代表人口中心的位置,并且在其周围就是安全的,fi=fg表明处于种群中间的麻雀意识到了危险,需要靠近其他麻雀,K表示麻雀移动的方向,也是步长控制系数。
以上是关于麻雀搜索算法的具体内容,实现的伪代码如下:

猜你喜欢

转载自blog.csdn.net/A_lany/article/details/126380863
今日推荐