system: [SYSTEM]

user: 3. 仿真实验 3.1. 实验环境与参数设置 为了验证新算法EOMFO的有效性，文章选取了7个测试函数。实验中算法参数设置为：种群规模为30个个体，最大迭代次数为1000次，函数维数设置为30维，最终测试结果采用独立运行30次最优值的平均值。 3.2. 测试函数 在这次仿真实验中共选取7个基准测试函数，其中包含有4个单峰函数( f 1 ~ f 4 )和3个多峰函数( f 5 ~ f 7 )。单峰函数因其只有一个全局最优值，可以对算法的开采能力进行测试，多峰函数具有较多的局部最优值，可以考验算法跳出局部最有停滞的能力。实验中用到的7个测试函数如下： 1) Sphere函数 f 1 ( x ) = ∑ i = 1 n x i 2 ， − 100 ≤ x i ≤ 100 ( i = 1 ， 2 ， ⋯ ， n ; n = 30 ) ，在 ( 0 ， 0 ， ⋯ ， 0 ) 处取得全局最小值0。 2) Schwefel’s 2.22函数 f 2 ( x ) = ∑ i = 1 n | x i | + ∏ i = 1 n | x i | ， − 10 ≤ x i ≤ 10 ( i = 1 ， 2 ， ⋯ ， n ; n = 30 ) ，在 ( 0 ， 0 ， ⋯ ， 0 ) 处取得全局最小值0。 3) Step函数 f 3 ( x ) = ∑ i = 1 n ( ⌊ x i + 0.5 ⌋ ) 2 ， − 100 ≤ x i ≤ 100 ( i = 1 ， 2 ， ⋯ ， n ; n = 30 ) ，在 ( 0 ， 0 ， ⋯ ， 0 ) 处取得全局最小值0。 4) Quartic函数 f 4 ( x ) = ∑ i = 1 n i x i 4 + r a n d o m ( 0 ， 1 ) ， − 1.28 ≤ x i ≤ 1.28 ( i = 1 ， 2 ， ⋯ ， n ; n = 30 ) ，在 ( 0 ， 0 ， ⋯ ， 0 ) 处取得全局最小值 0。 5) Ackley函数 f 5 ( x ) = − 20 exp ( − 0.2 1 n ∑ i = 1 n x i 2 ) − exp ( 1 n ∑ i = 1 n cos ( 2 π x i ) ) + 20 + e ， − 32 ≤ x i ≤ 32 ( i = 1 ， 2 ， ⋯ ， n ; n = 30 ) ，在 ( 0 ， 0 ， ⋯ ， 0 ) 处取得全局最小值0。 6) Griewangk函数 f 6 = 1 4000 ∑ i = 1 n x i 2 − ∏ i = 1 n cos ( x i i ) + 1 ， − 600 ≤ x i ≤ 600 ( i = 1 ， 2 ， ⋯ ， n ; n = 30 ) ，在 ( 0 ， 0 ， ⋯ ， 0 ) 处取得全局最小值0。 7) Penalized 1函数 f 7 ( x ) = π n { 10 sin ( π y 1 ) + ∑ i = 1 n − 1 ( y 1 − 1 ) 2 [ 1 + 10 sin 2 ( π y i + 1 ) ] + ( y n − 1 ) 2 }                       + ∑ i = 1 n u ( x i ， 10 ， 100 ， 4 ) y i = 1 + x i + 1 4 ;       u ( x i ， a ， k ， m ) = { k ( x i − a ) m                     x i > a 0                                     − a < x i < a k ( − x i − a ) m               x i < − a ， − 50 ≤ x i ≤ 50 ( i = 1 ， 2 ， ⋯ ， n ; n = 30 ) ，在 ( 0 ， 0 ， ⋯ ， 0 ) 处取得全局最小值0。 3.3. 实验结果 实验结果如表1所示。 Table 1 Comparison of experimental results between MFO and EOMF 函数 算法 最优值 最差值 平均值 标准差 f 1 MFO 3.2261E+03 6.4131E+04 3.2377E+04 1.5163E+04 EOMFO 1.8786E−08 2.0199E+00 1.5157E−01 4.0127E−01 f 2 MFO 7.1532E+01 2.7280E+02 1.5936E+02 4.2535E+01 EOMFO 4.1848E−04 2.2238E−01 2.8888E−02 4.7675E−02 f 3 MFO 6.5860E+03 7.9729E+04 2.9463E+04 1.5410E+04 EOMFO 6.3025E+00 3.1617E+01 1.5458E+01 7.6320E+00 f 4 MFO 3.0692E+01 4.8076E+02 1.5219E+02 1.1180E+02 EOMFO 2.9033E−02 3.9697E−01 1.4490E−01 8.4964E−02 f 5 MFO 1.9145E+01 1.9967E+01 1.9850E+01 2.0687E−01 EOMFO 3.0896E−04 1.9966E+01 5.2427E+00 7.2335E+00 f 6 MFO 2.8695E+01 6.2916E+02 2.7128E+02 1.3971E+02 EOMFO 3.4562E−08 1.0622E+00 9.9621E−02 2.2445E−01 f 7 MFO 4.6106E+06 4.2425E+08 1.3560E+08 1.3240E+08 EOMFO 1.0454E−01 3.0018E+01 2.7691E+00 5.7585E+00 表1. MFO与EOMFO实验结果比较 从表1可知，单峰函数方面，对于函数 f 1 ，EOMFO的最优值精确度达到 e − 8 ，平均值方面其求解精度比标准MFO提高了5个数量级，并且方差较小，说明新算法对于 f 1 的求解具有一定的稳定性。对于函数 f 2 ，EOMFO的最优值精确度达到 e − 4 ，平均值和方差均达到了 e − 2 ，说明新算法对于 f 2 的求解具有较好的稳定性。对于函数 f 3 ，EOMFO的最优值、最差值、平均值虽没有取得理想的成绩，但相较于标准MFO还是提高了3个数量级。对于函数 f 4 ，EOMFO在最优值和方差方面的精确度达到 e − 2 ，说明新算法对其的寻优过程中具有良好的稳定性；另外，在平均值和最差值方面，新算法EOMFO的求解精度与标准MFO相比提高了3个数量级。 多峰函数方面，对于函数 f 5 ，EOMFO在平均值方面比标准MFO只有少量的提升，但在最优值方面却达到了 e − 4 ，比标准MFO提高了5个数量级。对于函数 f 6 ，EOMFO的最优值精度达到了 e − 8 ，比标准MFO提高了9个数量级，其平均求解精度也达到了 e − 2 。对于函数 f 7 ，EOMFO的最优值精度为 e − 1 ，虽没有取得很好的求解精度，但与标准MFO相比，也提高了7个数量级；另外，在最优值和方差方面，EOMFO所求值均比原算法提高了8个数量级。由前面的比较结果可知，与标准MFO算法相比，EOMFO算法搜索最优值的能力更好，求解的最优值也更接近理论最优值。 为了更好的对比标准MFO算法和EOMFO算法的性能，选取了4个函数的收敛曲线图，如图1~4所示。 图1. f 1 的适应度曲线 图2. f 3 的适应度曲线 图3. f 5 的适应度曲线 图4. f 6 的适应度曲线 从以上4幅图可以看到EOMFO算法的收敛速度明显要高于标准MFO算法，且求解精度也有一定的提升。标准MFO算法在迭代一定的次数后便陷入局部最优而很难跳出，而EOMFO算法由于针对精英个体执行反向学习，使其具有比标准MFO算法更好的跳出局部最优的能力，从而能够更快的向理论最优值收敛，并且随着迭代次数的增长，所求结果的精度有进一步提升的可能。