从麻雀的群体智慧、觅食行为和反捕食行为出发,提出了一种新的群体优化方法&麻雀搜索算法(SSA)。在19个基准函数上进行了实验,测试了该算法的性能,并与其他算法如灰太狼算法(gwolf optimizer,gwolf)、引力搜索算法(GSA)和粒子群优化算法(PSO)进行了比较。仿真结果表明,该算法在精度、收敛速度、稳定性和鲁棒性等方面优于GWO、PSO和GSA。最后,通过两个工程实例验证了该方法的有效性。
1.算法原理
建立麻雀搜索算法的数学模型,主要规则如下所述:
- 发现者通常拥有较高的能源储备并且在整个种群中负责搜索到具有丰富食物的区域,为所有的加入者提供觅食的区域和方向。在模型建立中能量储备的高低取决于麻雀个体所对应的适应度值(Fitness Value)的好坏。
- 一旦麻雀发现了捕食者,个体开始发出鸣叫作为报警信号。当报警值大于安全值时,发现者会将加入者带到其它安全区域进行觅食。
- 发现者和加入者的身份是动态变化的。只要能够寻找到更好的食物来源,每只麻雀都可以成为发现者,但是发现者和加入者所占整个种群数量的比重是不变的。也就是说,有一只麻雀变成发现者必然有另一只麻雀变成加入者。
- 加入者的能量越低,它们在整个种群中所处的觅食位置就越差。一些饥肠辘辘的加入者更有可能飞往其它地方觅食,以获得更多的能量。
- 在觅食过程中,加入者总是能够搜索到提供最好食物的发现者,然后从最好的食物中获取食物或者在该发现者周围觅食。与此同时,一些加入者为了增加自己的捕食率可能会不断地监控发现者进而去争夺食物资源。
- 当意识到危险时,群体边缘的麻雀会迅速向安全区域移动,以获得更好的位置,位于种群中间的麻雀则会随机走动,以靠近其它麻雀。
在模拟实验中,我们需要使用虚拟麻雀进行食物的寻找,由n只麻雀组成的种群可表示为如下形式:
其中,d 表示待优化问题变量的维数,n 则是麻雀的数量。那么,所有麻雀的适应度值可以表示为如下形式:
其中,f 表示适应度值。
在 SSA 中,具有较好适应度值的发现者在搜索过程中会优先获取食物。此外,因为发现者负责为整个麻雀种群寻找食物并为所有加入者提供觅食的方向。因此,发现者可以获得比加入者更大的觅食搜索范围。根据规则(1)和规则(2),在每次迭代的过程中,发现者的位置更新描述如下: