system: [SYSTEM]

user: 5. 实验结果与分析 该章节主要列举和分析了ABCCC算法的实验结果，首先在指定的测试函数集进行测试，找到了测试集的优秀结果，验证了该算法能够用来解决约束优化问题。接下来，还将ABCCC与DECC和PSOCC算法进行了对比(把ABC替换为差分进化算法(DE)和粒子群算法(PSO))，实验结果表明，ABCCC优于其余两个算法。同时该章节还分析了算法内部参数对实验结果的影响。最后将ABCCC算法与其他较优秀的算法进行了比较，实验表明了ABCCC在解决约束优化问题上具有一定的竞争力。 5.1. 测试函数集与参数设置 通过求解CEC2017约束优化测试函数集中的部分函数，对算法进行了测试 [ 14 ]。函数集中的问题具有不同的数学特征，比如有的目标函数或约束是线性或非线性的，有的约束是等式或不等式，有的目标函数是单峰或多峰。并且有的函数是可行空间非常小，这更增加了解决问题的难度。 算法的参数设置包括如下内容：种群P的大小为100，选择SPP个不可行个体的依据是SPP = 0.5SP (在5.3章节讨论为什么将比例设置为0.5)，总迭代次数设为100，每个问题独立运行的次数为10次。对比算法DECC和PSOCC的参数设置为：DE的变异因子F设为0.5，交叉因子CR设为0.4；PSO的学习因子C 1 和C 2 相等，取值均为1.4，惯性权值w设为0.8。约束一致策略的参数设置如下：可行距离的容差值a设为10 −6 ，移动容差值b为10 −4 。 5.2. 实验结果 在本节，首先列出了ABCCC在CEC2017函数集下的实验结果，同时还对比了DECC和PSOCC在相同状况下的实验结果，表4列出了实验过程中得到的最优解、平均值和标准差。最优解表明算法在解决该问题时找到的目标函数的最小值，平均值反映了10次运行的平均结果，标准差则能表明算法的鲁棒性，标准差越小，表明算法每次运行得到的结果都是近似的，说明算法是稳定的。实验结果表明ABCCC的算法性能总体上要优于DECC和PSOCC，收敛迅速且能找到最优解。 从表4可以看出，ABCCC算法得到的最优解和平均解在大多数函数(C01、C02、C03、C04、C05、C06、C07和C09)的表现都优于DECC和PSOCC。而对于函数C08和C10，DECC得到的结果则是最小的，优于PSOCC和ABCCC。其中有一个函数C09，该函数在ABCCC和PSOCC下取得的最优解相同。 Table 4 Comparison results of ABCCC， DECC and PSOC Algorithm best mean std best mean std C01 ABCCC 4.3422e−01 1.0276e+00 7.7749e−01 C06 0.0000e+00 1.9903e−01 6.2940e−01 DECC 2.0552e+01 5.7294e+01 2.6456e+01 1.1025e+02 1.5862e+02 5.6512e+01 PSOCC 1.9394e+01 3.0953e+01 7.5116e+00 6.9656e+01 1.3079e+02 5.3494e+01 C02 ABCCC 1.1917e−01 5.6705e−01 3.6207e−01 C07 −5.2474e+02 −5.2474e+02 6.7115e−06 DECC 2.2081e+01 3.8531e+01 1.2447e+01 −3.1552e+02 −3.0261e+02 8.6554e+00 PSOCC 2.8930e+01 3.6837e+01 4.6696e+00 −2.3716e+02 −2.0193e+02 2.3230e+01 C03 ABCCC 2.6169e−01 7.2534e−01 4.5649e−01 C08 1.2499e+00 2.6492e+00 1.0700e+00 DECC 1.9347e+01 7.9392e+01 2.6244e+01 7.6596e−01 1.4086e+00 4.8360e−01 PSOCC 2.5698e+01 3.2883e+01 3.7946e+00 1.2276e+00 2.2839e+00 5.8413e−01 C04 ABCCC 0.0000e+00 0.0000e+00 0.0000e+00 C09 −6.0917e−01 −6.0917e−01 0.0000e+00 DECC 1.7852e+01 3.2618e+01 7.5740e+00 1.8540e−01 3.2352e−01 1.2396e−01 PSOCC 4.4996e+01 6.7187e+01 1.4799e+01 −6.0917e−01 −6.0917e−01 0.0000e+00 C05 ABCCC 3.8795e−04 5.4388e−03 9.4572e−03 C10 1.0175e+01 1.5753e+01 5.1411e+00 DECC 7.2160e+00 8.1310e+00 6.5960e−01 4.5172e−01 1.1297e+00 6.1977e−01 PSOCC 2.0620e+01 4.6958e+01 3.0318e+01 1.3172e+00 2.3567e+00 4.3120e−01 表4. ABCCC与DECC和PSOCC的对比结果 从图2所示的收敛曲线图可以看出，ABCCC比其他算法收敛速度更快，收敛结果较优，得到了更理想的全局最优解。然而，函数C08和C10则是DECC得到的解更优。 图2. 各算法的收敛曲线对比图 图3. 算法的盒图对比结果 图3给出了算法的盒图。对于每个盒图，中心标记表示中间值，方框的底部和顶部边缘分别表示第25百分位数和第75百分位数。胡须延伸到不被认为是异常值的最极端数据点，并使用“+”符号分别绘制异常值。从图3可以看出，ABCCC在大部分测试函数(C01、C02、C03、C04、C05、C06、C07、C09)均是性能较优越的。 5.3. SPP值对ABCCC的影响 在5.1章节中，SPP参数的选取为0.5，即选取了不可行个体的一半，在该章节中，我们将测试SPP值对算法性能的影响。 处理不可行个体时，5.1节中介绍的是在所有的不可行个体中只选取部分个体，因此本节按照不同比例范围选值进行测试，其中SPP设置为0.1SP、0.3SP、0.5SP、0.7SP和0.9SP (SP即为前面章节介绍的全部不可行个体)。SPP值越高，预计搜索周期越长，具体的实验结果如表5所示。从搜索周期的角度看，SPP的值越小，搜索的时间越短，所以当SPP = 0.1SP时算法会更好，因为它的运行时间相对最短。但是从解的质量角度看，当SPP = 0.5SP时，大多数函数的实验结果比其他情况较好，尤其是平均适应度值的结果。因此ABCCC算法中SPP值的选取为0.5时更合适，能够解决大部分的测试函数问题。 Table 5 The influence of SSP on result SPP−value best aver std best aver std C01 SPP = 0.1 3.6224e−01 2.1745e+00 3.7883e+00 C02 9.6252e−02 7.5394e−01 5.1756e−01 SPP = 0.3 6.6545e−01 1.0406e+00 3.4463e−01 1.2425e−01 1.9530e+00 2.8007e+00 SPP = 0.5 4.3422e−01 1.0276e+00 7.7749e−01 1.1917e−01 5.6705e−01 3.6207e−01 SPP = 0.7 8.0072e−01 1.4671e+00 7.0296e−01 2.6261e−01 9.3691e−01 1.2533e+00 SPP = 0.9 2.7358e−01 1.2008e+00 6.8819e−01 2.5149e−01 9.4132e−01 1.2486e+00 C03 SPP = 0.1 3.3249e−01 1.2147e+00 5.6815e−01 C04 0.0000e+00 0.0000e+00 0.0000e+00 SPP = 0.3 5.2694e−01 1.3587e+00 7.7649e−01 0.0000e+00 0.0000e+00 0.0000e+00 C03 SPP = 0.5 2.6169e−01 7.2534e−01 4.5649e−01 C04 0.0000e+00 0.0000e+00 0.0000e+00 SPP = 0.7 1.7941e−01 2.2968e+00 3.1205e+00 0.0000e+00 0.0000e+00 0.0000e+00 SPP = 0.9 3.1033e−01 3.1911e+00 3.8990e+00 0.0000e+00 0.0000e+00 0.0000e+00 C05 SPP = 0.1 3.1579e−04 3.0156e−03 3.4689e−03 C06 0.0000e+00 2.0000e−01 6.3244e−01 SPP = 0.3 1.3199e−03 1.2395e−02 1.7242e−02 0.0000e+00 7.9602e−01 1.0277e+00 SPP = 0.5 3.8795e−04 5.4388e−03 9.4572e−03 0.0000e+00 1.9903e−01 6.2940e−01 SPP = 0.7 1.4399e−04 5.3629e−03 6.7180e−03 0.0000e+00 1.9921e+00 1.3279e+00 SPP = 0.9 6.0703e−04 1.2685e−02 2.9036e−02 3.9851e+00 1.1887e+02 1.4430e+02 C07 SPP = 0.1 −5.2474e+02 −5.2474e+02 2.1047e−07 C08 5.1001e+00 8.7588e+00 2.7110e+00 SPP = 0.3 −5.2474e+02 −5.2474e+02 2.6055e−07 1.1888e+00 2.8243e+00 9.0287e−01 SPP = 0.5 −5.2474e+02 −5.2474e+02 6.7115e−06 1.2499e+00 2.6492e+00 1.0700e+00 SPP = 0.7 −5.2474e+02 −5.2453e+02 6.7970e−01 2.5761e+00 4.3356e+00 1.0971e+00 SPP = 0.9 −5.2474e+02 −5.2474e+02 9.0928e−06 6.5659e−01 4.0359e+00 1.9499e+00 C09 SPP = 0.1 −6.0917e−01 −6.0917e−01 0.0000e+00 C10 1.4054e+01 2.0605e+01 5.9842e+00 SPP = 0.3 −6.0917e−01 −6.0917e−01 0.0000e+00 8.9854e+00 1.6984e+01 5.7525e+00 SPP = 0.5 −6.0917e−01 −6.0917e−01 0.0000e+00 1.0175e+01 1.5753e+01 5.1411e+00 SPP = 0.7 −6.0917e−01 −6.0917e−01 0.0000e+00 8.3204e+00 1.7478e+01 5.2565e+00 SPP = 0.9 −6.0917e−01 −6.0917e−01 0.0000e+00 8.9586e+00 1.6326e+01 4.7826e+00 表5. SPP值的选取对算法结果的影响 图4为测试函数C02的收敛曲线图，从图中可以明显地看出，SPP = 0.5SP时收敛速度更快，得到的最优解更好。 图4. 不同SPP值下ABCCC的收敛曲线图(函数C02) 5.4. ABCCC与其他算法的比较结果 在该章节，ABCCC算法与其他的算法进行了比较，具体的实验结果展示在下面的表6中。ABCCC先与CALSHADE和UDE进行了实验对比，结果表明ABCCC能取得大多数测试函数的最优解。但对于函数C01和C02，CALSHADE算法取得了函数的最优解；对于函数C08和C10，算法UDE的表现更好。但从整体来说，实验结果表明ABCCC算法的性能优于其他算法。 Table 6 Comparison results of ABCCC、CLSHADE and UD ABCCC CALSHADE UDE best mean best mean best mean C01 4.3422e−01 1.0276e+00 1.6437e−02 1.7105e−01 3.1160e+03 5.2019e+03 C02 1.1917e−01 5.6705e−01 2.4550e−03 1.3606e−01 2.4394e+03 4.3835e+03 C03 2.6169e−01 7.2534e−01 1.7797e+04 2.2553e+05 2.0650e+03 4.1730e+03 C04 0.0000e+00 0.0000e+00 1.8905e+01 3.4916e+01 1.0086e+02 1.3747e+02 C05 3.8795e−04 5.4388e−03 2.9752e+00 4.0586e+00 1.3716e+04 3.6528e+04 C06 0.0000e+00 1.9903e−01 1.6082e+02 3.7367e+02 2.1652e+02 3.0200e+02 C07 −5.2474e+02 −5.2474e+02 −2.1798e+02 −5.9272e+00 −4.0431e+02 −3.5367e+02 C08 1.2499e+00 2.6492e+00 1.5861e−02 8.6148e−02 −9.0367e+01 −9.0367e+01 C09 −6.0917e−01 −6.0917e−01 −4.9730e−03 1.8271e−01 −6.0917e−01 −6.0917e−01 C10 1.0175e+01 1.5753e+01 8.7000e−05 4.6556e−03 −5.9754e+01 −5.9754e+01 表6. ABCCC与CLSHADE和UDE算法的比较结果 人工蜂群算法在后来的研究中被许多研究者提出了一些变体，比如CABC和GABC，因此该章节也将ABC算法替换为CABC和GABC，将这些算法进行了比较，结果如表7所示。除了测试函数C01，C08和C10外，ABCCC在其他测试函数中均能够找到最优解。而函数C01和C08的最优解由GABCCC找到，对于C10，则是CABCCC获得了最小值。究其原因，GABCCC利用全局最优值在搜索周期中对个体进行变异，对结果的影响较大。虽然CABCCC基于随机选择的某个维度对每个个体进行变异操作，但也降低了收敛速度，导致搜索周期变长。 Table 7 Comparison results of ABCCC， CABCCC and GABCC ABCCC CABCCC GABCCC best mean best mean best mean C01 4.3422e−01 1.0276e+00 4.0138e+02 1.1968e+03 2.7349e−01 8.8519e−01 C02 1.1917e−01 5.6705e−01 1.9751e+02 8.9848e+02 1.7921e−01 1.7533e+00 C03 2.6169e−01 7.2534e−01 3.8785e+02 7.8629e+02 2.8725e−01 1.2546e+00 C04 0.0000e+00 0.0000e+00 6.3515e+01 7.9414e+01 0.0000e+00 1.9362e−14 C05 3.8795e−04 5.4388e−03 7.5505e+02 9.1375e+03 4.9405e−04 3.8794e−02 C06 0.0000e+00 1.9903e−01 1.0994e+02 1.7150e+02 0.0000e+00 4.5917e+00 C07 −5.2474e+02 −5.2474e+02 −4.2280e+02 −3.8719e+02 −5.2446e+02 −5.2152e+02 C08 1.2499e+00 2.6492e+00 5.3728e+00 1.2295e+01 1.1618e+00 2.3740e+00 C09 −6.0917e−01 −6.0917e−01 −6.0917e−01 1.8960e−01 −6.0917e−01 −6.0917e−01 C10 1.0175e+01 1.5753e+01 7.7372e+00 1.5545e+01 9.8156e+00 1.6622e+01 表7. ABCCC与CABCCC和GABCCC算法的比较结果