Page 186 - 《软件学报》2021年第10期
P. 186
3158 Journal of Software 软件学报 Vol.32, No.10, October 2021
=O(D+f(D))+4O(n(D))
=O(D+f(D)),
其中,r 6 ~r 9 分别为公式(6)~公式(9)中生成新解时一维变量的执行时间.因此,MIFPA 算法的时间复杂度与 FPA 算
法的时间复杂度属于同一数量级,也就是说,改进算法的复杂度并未比 FPA 算法提高太多.
根据上述对 MIFPA 算法的时间复杂度的理论分析(定性分析)可知,MIFPA 算法的时间复杂度与基本 FPA
算法属于同一数量级.因为 FPA 的迭代次数为 Max_Gf=Max_FEs/n,其中,n 为种群数,MIFPA 算法的最大迭代次
数为 Max_FEs/(2n)<Max_Gc<Max_FEs/n,故 Max_Gc<Max_Gf.从上述分析可知:在相同的最大函数评估次数
Max_FEs=10000D(其中,D 为函数的维数)下,MIFPA 算法并没有增加算法的时间复杂度.
3 实验仿真及分析
3.1 实验测试函数及参数设置
为了检验 MIFPA 算法的有效性,本节选用 19 个经典的标准测试函数(包含 CEC 测试函数)进行实验,测试
函数的函数名称、搜索空间、维数及理论最优值的描述见表 1 [22,23] .按其特性,可将测试函数分为五大类:f 1 ~f 4
是单模态高维函数;f 5 ~f 9 是非旋转的多模态高维函数;f 10 ~f 13 是多模态低维函数;f 14 ~f 16 是带旋转的多模态高维函
数;f 17 ~f 19 是变换旋转高维函数.本文中所用的所有函数都是求解最小值.
Table 1 Experimental test functions in the paper
表 1 本文使用的实验测试函数
*
测试函数 函数名 搜索范围 维度 最优值 f(x )
Sphere [100,100] 30,50,100 0
f 1
f 2 Schwefel 1.2 [100,100] 30,50,100 0
f 3 Rosenbrock [30,30] 30,50,100 0
f 4 Quartic with noise [1.28,1.28] 30,50,100 0
f 5 Rastrigin [5.12,5.12] 30,50,100 0
Ackley [32,32] 30,50,100 0
f 6
f 7 Griewank [600,600] 30,50,100 0
f 8 Generalized penalized 1 [50,50] 30,50,100 0
f 9 Generalized penalized 2 [50,50] 30,50,100 0
f 10 Kowalik [5,5] 4 0.000 307 5
Shekel5 [0,10] 4 10.153 2
f 11
Shekel7 [0,10] 4 10.402 9
f 12
f 13 Shekel10 [0,10] 4 10.536 4
f 14 Rotated rosenbrock’s function [2.048,2.048] 30,50 0
f 15 Rotated griewank’s function [600,600] 30,50 0
f 16 Rotated ackley’s function [32.768,32.768] 30,50 0
f 17 Shifted sphere function [100,100] 30,50 450
f 18 Shifted rosenbrock’s function [100,100] 30,50 390
f 19 Shifted rotated ackley’s function with global optimum on bounds [32,32] 30,50 140
3.2 余弦函数搜索因子对算法性能的影响分析
为了更直观地进一步说明本文引入余弦函数搜索因子能够提高算法解的质量这一点,本节对带余弦函数
搜索因子的花授粉算法(flower pollination algorithm with cosine function factor,简称 CFPA)与基本花授粉算法
(FPA)进行定量分析.本节利用表 1 中经典的标准测试函数(包含 CEC 测试函数)进行实验测试,其实验参数设置
为:种群个数 n=50;函数维数 D=30 或 4;最大函数评估次数 Max_FEs=10000D,独立运行 30 次.其中,Mean_
error(平均值误差)通过公式(10)计算:
*
Mean_error=f(x)f(x ) (10)
*
其中,x 为算法当前获得的解,x 为算法当前求解到的全局最优解.
由公式(10)可知:Mean_error 越小,则算法解的质量越好.
实验结果见表 2,其中,加粗的数值表示该算法在该测试函数上取得的最优计算结果.