麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化
算法,在2020年提出,主要是受麻雀的
觅食行为和反捕食行为的启发。
算法来源
在麻雀觅食的过程中,分为发现者(探索者)和加入者(追随者),发现者在种群中负责寻找食物并为整个麻雀种群提供觅食区域和方向,而加入者则是利用发现者来获取食物。为了获得食物,麻雀通常可以采用发现者和加入者这两种行为策略进行觅食。种群中的个体会监视群体中其它个体的行为,并且该种群中的攻击者会与高摄取量的同伴争夺食物资源,以提高自己的捕食率。此外,当麻雀种群意识到危险时会做出反捕食行为。
算法描述
在SSA中,具有较好适应度值的发现者在搜索过程中会优先获取食物。此外,因为发现者负责为整个麻雀种群寻找食物并为所有加入者提供觅食的方向。因此,发现者可以获得比加入者更大的觅食搜索范围。在每次迭代的过程中,发现者的位置更新描述如下:
其中,t代表当前迭代数,itermax是一个常数,表示最大的迭代次数。Xij表示第i个麻雀在第j维中的位置信息。α∈(0,1]是一个随机数。R2(R2∈[0,1])和ST(ST∈[0.5,1])分别表示预警值和安全值。Q是服从正态分布的随机数。L表示一个1×d的矩阵,其中该矩阵内每个元素全部为1。当R2< ST 时,这意味着此时的觅食环境周围没有捕食者,发现者可以执行广泛的搜索操作。当R2 ≥ ST,这表示种群中的一些麻雀已经发现了捕食者,并向种群中其它麻雀发出了警报,此时所有麻雀都需要迅速飞到其它安全的地方进行觅食。
加入者(追随者)的位置更新描述如下:
其中,Xp是目前发现者所占据的最优位置,Xworst则表示当前全局最差的位置。A表示一个1×d的矩阵,其中每个元素随机赋值为1或-1,并且A+=AT(AAT)-1。当i >n/2时,这表明,适应度值较低的第i个加入者没有获得食物,处于十分饥饿的状态,此时需要飞往其它地方觅食,以获得更多的能量。
当意识到危险时,麻雀种群会做出反捕食行为,其数学表达式如下:
其中,其中Xbest是当前的全局最优位置。β作为步长控制参数,是服从均值为0,方差为1的正态分布的随机数。K∈[-1,1]是一个随机数,fi则是当前麻雀个体的适应度值。fg和fw分别是当前全局最佳和最差的适应度值。ε是最小的常数,以避免分母出现零。
为简单起见,当fi >fg表示此时的麻雀正处于种群的边缘,极其容易受到捕食者的攻击。fi = fg时,这表明处于种群中间的麻雀意识到了危险,需要靠近其它的麻雀以此尽量减少它们被捕食的风险。K表示麻雀移动的方向同时也是步长控制参数。
实验效果
为了验证该算法的有效性,使用Sphere函数和
Rosenbrock函数进行验证
应用前景
可以将该算法应用到更为广阔的场景,如路径规划,图像处理等等