麻雀搜索算法求解大规模函数优化问题 C++代码

作品简介

麻雀搜索算法原理

麻雀搜索算法规则:

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

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

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

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

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

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

算法原理:


实验结果:

实验环境:Windows10+VS2019

代码中包含多个单峰和多峰函数,可以直接运行

运行结果都会保存到相应的txt文件夹中,如下所示:


参考文献:

薛建凯.(2020).一种新型的群智能优化技术的研究与应用(硕士学位论文,东华大学).https://kns.cnki.net/KCMS/detail/detail.aspx?dbname=CMFD202101&filename=1020647458.nh




创作时间: