麻雀搜索算法(sparrow search algorithm,SSA)由Jiankai Xue等人于2020年提出,该算法是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法。SSA 主要是受麻雀的觅食行为和反捕食行为的启发而提出的。该算法比较新颖,具有寻优能力强,收敛速度快的优点。麻雀群觅食过程也是发现者-跟随者模型的一种,同时还叠加了侦查预警机制。麻雀中找到食物较好的个体作为发现者,其他个体作为跟随者,同时种群中选取一定比例的个体进行侦查预警,如果发现危险则放弃食物。

一、SSA算法理论基础

       麻雀通常是群居鸟类,种类繁多。与其他许多小鸟相比,麻雀和很强的记忆力。其中有两种不同类型的圈养家麻雀,发现者和加入者。发现者积极寻找食物来源,而加入者则通过生产者获得食物。此外,麻雀能够灵活的在发现者和捕食者之间切换。位于中心的麻雀有时会靠近附近的麻雀,以减少其危险范围。在生活中我们仔细观察会发现,当群体中有麻雀发现周围有捕食者时,此时群体中一个或多个个体会发出啁啾声,一旦发出这样的声音整个种群就会立即躲避危险。为了方便,我们将麻雀的行为理想化,并制定了相应的规则: 

(1)   发现者通常有高水平的能量储备,并为所有掠食者提供觅食区域或方向。它负责确定可以找到丰富食物来源的地区。能量储备水平取决于对个体健康值的评估。

(2)  一旦麻雀发现捕食者,它们就会发出啁啾声,发出警报信号。当报警值大于安全阈值时,发现者需要将所有搜捕者带到安全区域。

(3)  每只麻雀都可以成为加入者,只要它寻找更好的食物来源,但生产者和加入者在整个种群中的比例不变。

(4)  能量较高的麻雀将作为发现者。一些饥饿的麻雀更可能飞往其他地方寻找食物,以获取更多能量。

(5)  捕食者跟随能提供最好食物的发现者寻找食物。与此同时,一些捕食者可能会不断监视生产者并争夺食物,以提高自己的捕食率。

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

麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 麻雀智能算法_搜索

二、SSA算法数学模型

2.1 种群初始化

麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 麻雀智能算法_matlab_02

2.2 发现者位置更新

麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 麻雀智能算法_搜索算法_03

2.3 加入者位置更新 

麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 麻雀智能算法_matlab_04

2.4 警戒者位置更新

麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 麻雀智能算法_算法_05

 三、SSA算法流程

Input:
G: the maximum iterations
PD: the number of producers
SD: the number of sparrows who perceive the danger
R2: the alarm value
n: the number of sparrows
Initialize a population of n sparrows and define its
relevant
parameters.
Output:X_{best}, f_g.
while (t < G)
Rank the fitness values and find the current best
individual and the current worst individual.
 R2 = rand(1)
 for i = 1 : PD
 Using equation (3) update the sparrow’s location;
end for
 for i = (PD + 1) : n
Using equation (4) update the sparrow’s location;
end for
 for l = 1 : SD
Using equation (5) update the sparrow’s loca-tion;
end for
 Get the current new location;
If the new location is better than before, update it;
t = t + 1
 end while
return X_{best}, f_g

四、麻雀搜索(SSA)算法运行结果

F1:


The best optimal value of the objective funciton found by SSA is : 0


麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 麻雀智能算法_搜索算法_06

F6:


The best optimal value of the objective funciton found by SSA is : 0


麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 麻雀智能算法_搜索算法_07

F8:


The best optimal value of the objective funciton found by SSA is : -3477.6818


麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码 麻雀智能算法_搜索算法_08

可以看到麻雀算法求解结果精度高,收敛快,是一种非常有竞争力的算法。