一、麻雀搜索算法

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

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_基于pytorch的麻雀搜索优化算法

二、CEC 2013 on Real-Parameter Optimization

在CEC 2013 Special Session on Real-Parameter Optimization中共有28个测试函数维度可选择为10/30/50/100。

每个测试函数的详细信息如下表所示:

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_机器学习_02

三、SSA求解CEC2013(Real Parameter )

将麻雀搜索算法运用于求解CEC2013(Real Parameter Optimization)中的28个单目标测试函数,其中每个测试函数可以选择的维度分别为:10D、30D、50D、100D。增大迭代次数,SSA的求解效果更佳。

本例测试函数维度均为50(可根据自己需求调整),SSA种群大小为100,最大迭代次数为1000次。

部分测试结果如下:

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_算法_03

F1:目标函数值:-1400,SSA求得值:-1400

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_算法_04

F5:目标函数值:-1000,SSA求得值:-1000

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_基于pytorch的麻雀搜索优化算法_05

F10:目标函数值:-500,SSA求得值:-496.4

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_matlab_06

SSA在F1/F5/F10上快速求得的值与函数理论值十分接近,增大迭代次数效果更佳显著。SSA在cec2013上具有一定的竞争力。

四、CEC2013 on Large-Scale Global Optimization

CEC2013 (LSGO)共有15个测试函数,每个测试函数其维度为1000,理论最优值均为0。CEC2013 (LSGO)中每个测试函数极具挑战力,求解十分困难。测试函数详细信息如下:

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_机器学习_07

五、SSA求解CEC2013(LSGO)

将麻雀搜索算法运用于求解CEC2013(LSGO)中15个大规模无约束函数,其中增大迭代次数,SSA的求解效果更佳。在本例中,SSA的种群大小为100,最大迭代次数为50000次。

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_基于pytorch的麻雀搜索优化算法_08


部分测试结果如下:F1:

基于pytorch的麻雀搜索优化算法 麻雀搜索算法参数辨识_基于pytorch的麻雀搜索优化算法_09


由此可以看出,通过增大迭代次数,SSA在求解CEC2013(LSGO)上具有一定的竞争力。

六、源代码见评论区