Ying Tan在2010年受烟花爆炸的启发,提出了烟花算法. 该算法的寻优能力强,得到广大研究者的青睐. 烟花算法主要由爆炸算子,变异算子和选择策略组成,具有对质量较好的烟花进行局部搜索和对较差的烟花进行全局搜索的能力. 传统烟花算法存在以下3个不足之处:(1) 受烟花爆炸半径的影响,后期烟花爆炸半径大于最优峰值所在的区域,以致陷入局部最优;(2) 若搜索区域很小,高斯变异作用被弱化;(3) 传统烟花算法所使用的轮盘赌选择策略,随机性较大,不能保证留下较多的优质的烟花,从而降低了算法的收敛速度.
为此,许多学者提出多种对烟花算法的爆炸半径、变异算子、烟花爆炸策略等的改进[1-11]. 文献[1]提出基于定向变异的烟花算法,该算法根据烟花爆炸信息确定变异方向与变异步长,定向变异产生的潜在解添加到种群,有利于提高种群的多样性与质量;文献[2]提出基于差分进化操作的烟花算法,该算法引入了交叉算子和变异算子,通过增加种群多样达到跳出局部最优的目的;文献[3]通过独立选择操作和避免拥挤的合作策略,动态修改爆炸半径方法来提高种群多样性,但该文所用的固定搜索空间方法可能导致算法效率不高;文献[4]对每个烟花采用动态爆炸半径,若找到更优值则爆炸半径将增大,否则爆炸半径减小,此方法有利于提高算法的局部搜索能力;文献[5]引入自适应转换函数,利用自适应转换函数产生烟花爆炸的数量和爆炸的幅度,能够产生质量高的解;文献[6]提出的改进的烟花爆炸优化算法,该论文采用精英策略,每一代的每个烟花按一定的概率与最好的个体进行交叉操作,可丰富烟花种群的多样性,使之跳出局部最优值,但后期存在交叉变异失效的情况;文献[7]将烟花算法与差分算法相结合,通过模型结构的改进和参数的学习,从而扩大搜索范围,避免过早陷入局部最优,但该算法使用保留较优个体进入下一轮迭代的选择策略,使得算法前期收敛速度快而后期收敛速度慢;文献[8]针对种群初始化出现的个体分布不均匀的情况,提出自适应反向学习算子,可加快算法的收敛速度,但易陷入局部最优;文献[9-10]分别针对高斯变异存在的缺点提出协方差变异和差分变异,可以弥补高斯变异的不足,使其具有跳出局部最优的能力,但协方差变异计算代价较高,差分变异则易陷入局部最优值;文献[11]提出改进烟花爆炸半径的方法,保证算法前期搜索半径较大,后期接近最优值时爆炸半径较小,有利于增强算法局部搜索与全局搜索能力,但是该算法的优化效果不明显,找到的最优值与精确值有一定的误差.
本文利用爬山算子和协作算子与烟花算法相结合,提出了一种双种群烟花算法. 该算法采用双种群结构,两个种群独立进化,算法在一定条件下通过信息互换,增加种群多样性. 数据实验分析表明,新算法具有较快收敛速度和较高的求解精度.
1 烟花算法烟花算法是受实际生活中烟花爆炸产生火花的启发而提出的一种智能优化算法[12-13],在这里烟花被视为可行域内的一个解向量,烟花爆炸产生火花的过程即解在其领域内的搜索过程. 烟花算法的寻优性能主要是由爆炸算子、变异算子和选择策略决定,烟花算法其程序框图如图1所示.
![]() |
图 1 烟花算法流程图 Figure 1 Flowchart of fireworks algorithm |
在烟花算法中,假设求解的问题为n维函数的无约束优化问题
$\min f\left( X \right) \in {\bf{R}},{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} X \in {\bf{\Omega }} \subset {{\bf{R}}^n}.$
|
(1) |
其中
烟花爆炸操作,先评价可行域内产生的烟花的适应值. 为了保证较优烟花进行局部搜索,较差烟花进行全局搜索的目的,对烟花爆炸的半径和爆炸数量进行设计.
根据式(2)和(3)计算第i个烟花的爆炸半径Ai,爆炸数量Si.
${A_i} = A \times \frac{{f\left( {{X_i}} \right) - {y_{{\rm{min}}}} + \varepsilon }}{{\sum\limits_{i = 1}^N {\left( {f\left( {{X_i}} \right) - {y_{{\rm{min}}}}} \right)} + \varepsilon }},$
|
(2) |
${S_i} = S \times \frac{{{y_{{\rm{max}}}} - f\left( {{X_i}} \right) + \varepsilon }}{{\sum\limits_{i = 1}^N {\left( {{y_{{\rm{max}}}} - f\left( {{X_i}} \right)} \right) + \varepsilon } }}.$
|
(3) |
其中,
烟花爆炸需要确定每个烟花的爆炸半径和爆炸产生火花数量. 第i个烟花产生第j个火花
$x_{\left( {i,j} \right)}^k = x_i^k + {A_i} \times {\rm{rand}}\left( { - 1,1} \right),1 \leqslant k \leqslant Z.$
|
(4) |
为了保证烟花爆炸后产生的火花在可行域内,利用式(5)进行越界处理.
$\left\{ \begin{array}{l}{B^k_{\rm{u}}} - {\rm{rand}}\left( 1 \right) \times \left( {x_i^k - {B^k_{\rm{u}}}} \right),{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_i}^k > {B^k_{\rm{u}}};\\[9pt]{B^k_{\rm{d}}} + {\rm{rand}}\left( 1 \right) \times \left( {{B{^k_{\rm{d}}}} - x_i^k} \right),{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_i}^k < {B^k_{\rm{d}}}.\end{array} \right.$
|
(5) |
其中,
烟花变异过程是按高斯分布产生m个变异火花以增加种群多样性的目的,避免陷入局部最优. 烟花种群中随机选择m个烟花,每个烟花随机选择z维坐标进行高斯变异操作,第i个烟花的第
$\dot x_i^k = x_i^k \times {\rm{Gaussian}}\left( {1,1} \right).$
|
(6) |
其中,
经过烟花爆炸和变异后产生的烟花与火花总数为
双种群[14]是维持种群多样的一种有效方法. 新算法的两个种群并行独立运算,交替执行爬山算子和协作算子;爬山算子有利于种群进行局部搜索,协作算子通过两个种群间信息共享,有利于种群进行全局搜索.
双种群烟花算法的流程图如图2所示.
![]() |
图 2 双种群烟花算法流程图 Figure 2 Flowchart of dual population fireworks algorithm |
传统烟花算法中最大爆炸半径设为常数,这使得算法后期精细搜索能力被弱化,导致算法精度不高. 根据动态搜索的思想,最大爆炸半径呈非线性递减的变化,有利于算法前期侧重全局搜索,后期侧重局部搜索,以达到加快算法收敛速度的效果.
$A = {A_{{\rm{init}}}} - \left( {{A_{{\rm{init}}}} - {A_{{\rm{final}}}}} \right)\frac{{\sqrt {\left( {2{\rm{MaxIter}} - {\rm{curIter}}} \right) \times {\rm{curIter}}} }}{{{\rm{MaxIter}}}},$
|
(7) |
其中,
爬山算子[15-16]是对个体进行局部寻优的一种操作. 首先随机生成一个搜索方向D, 个体
定义 若个体
步骤1:P=1;
步骤2:
$X_i' = {X_i} + \lambda D;$
|
(8) |
步骤3: 若新个体优于原个体,则步长不变,并替换个体
步骤4:若
协作算子[17-19]有算术交叉算子和两点交叉算子两种形式,由交叉概率
双种群烟花算法中,若种群1中个体
$X_i' = r \cdot {X_i} + \left( {1 - r} \right) \cdot {X_j},$
|
(9) |
$X_i{''} = \left( {1 - r} \right) \cdot {X_i} + r \cdot {X_j}.$
|
(10) |
其中r表示算术交叉因子,
双种群烟花算法中,若种群1中个体
$X_i' = \left( {x_i^1,x_i^2, \cdots ,x_j^a,x_j^{a + 1}, \cdots ,x_j^b, \cdots x_i^n} \right){\kern 1pt} {\kern 1pt} ,$
|
(11) |
$X_i^{''} = \left( {x_j^1,x_j^2, \cdots ,x_i^a,x_i^{a + 1}, \cdots ,x_i^b, \cdots x_j^n} \right){\kern 1pt} {\kern 1pt} .$
|
(12) |
其中
为了尽可能多地将优秀个体保留到下一代种群中,新算法采用锦标赛选择策略[20].
双种群烟花算法中,每个种群独立选择生成下一代种群,选择方式为先使用最优保存策略保留最优烟花,然后采用锦标赛选择策略选择N-l个烟花组成下一代种群. 锦标赛选择策略规模c=10.
2.5 双种群并行搜索策略由图2可知, 双种群烟花算法中种群1与种群2是两个相互独立进化的种群,两个种群共享同一参数t(进化代数),两个种群搜索都由t控制;在同一次进化迭代中,两个种群各自执行爆炸算子、变异算子、爬山算子或协作算子、种群选择与评价,实现双种群的独立搜索优化,完成双种群并行搜索策略.
3 数值仿真为测试本文所提出算法的性能,如表1选取CEC2013测试集[21]中5个测试函数(F1、F2、F6、F7、F8)和CEC2014测试集[22]中的3个测试函数(F3、F4、F5),将新算法(记为DPFA)分别与同类型算法如反向烟花算法(记为OBLFA)[8]、混沌烟花算法(记为CPAFA)[23]、遗传算法(记为DECGA)[24]和微分进化算法(记为DE)[25]进行比较.
![]() |
表 1 测试函数 Table 1 Test Function |
数值实验运用MATLAB编程,为了比较的有效性,3种算法采用相同的参数设置,种群规模为100,最大迭代次数为100,同一条件下独立运行50次,记录实验结果的最优值、最差值、均值和标准差.
3.1 交叉概率pc和算术交叉因子r参数灵敏度分析选取测试函数F1,给出了新算法对交叉概率pc和算术交叉因子r的灵敏度分析,如表2所示.
![]() |
表 2 F1交叉概率pc和算术交叉因子r的参数灵敏度分析 Table 2 F1 sensitivity analysis in parameter of pc and r |
表2给出了不同pc和r情况下,测试函数F1实验所求的最优值. 由表2知,F1的最优值为1.54×10–20,从而确定测试函数F1参数值选择为r=0.9,pc=0.1.
本文通过多个测试函数,若干组pc和r组合进行数值实验,比较优化效果,给出了pc和r的选择参考范围,建议r的取值范围为[0.5, 1],pc的取值范围为[0.1, 0.7]. 其他7个测试函数是在pc和r的选择参考范围内,经过类似参数灵敏度分析方法确定pc和r参数值,如表3所示.
3.2 种群多样性评价种群熵[26]是常用的评价种群多样性的方法之一,种群熵的定义如下:若第t代种群有Q个子集:
${E_t} = - \sum\limits_{j = 1}^Q {{P_j}\lg \left( {{P_j}} \right)} ,$
|
(13) |
${P_j} = \frac{{\left| {{S_{tj}}} \right|}}{N}.$
|
(14) |
其中,N为解群中个体的数目,当解群中个体都相同时,Q=1,种群熵取最小值
表4为3种算法对同一测试函数F1数值实验在不同迭代次数时计算所得种群熵值,对比分析可知:本文算法早期(前30代)种群熵较大,后期(50代后)种群熵较小;说明新算法早期种群多样好,利于算法全局搜索,后期种群集中利于局部搜索,从而提高算法优化性能.
![]() |
表 3 F1-F8优化计算结果 Table 3 Optimum results of F1-F8 |
![]() |
表 4 种群多样性评价 Table 4 Population diversity |
由表3可知,F1、F3、F4、F6、F7、F8测试函数,新算法的最差值、最优值、均值、标准差均优于反向烟花算(OBLFA)和混沌烟花算法(CPAFA).
对于F2,新算法求出函数最优解,相对于F1,F3,F4新算法精度分别为10–19、10–14、10–16,说明新算法有较高的求解精度;与反向烟花算法与混沌烟花算法比较,新算法的实验数据大部分标准差均最小,说明新算法的稳定性较高.
对于函数F7,F8,新算法找到理论最优值,对于F6,新算法求解的最优值为7.90×10–28,说明新算法寻优能力优于遗传算法(DECGA)和微分进化算法(DE);新算法的实验数据的均值,标准差均最小,说明新算法的稳定性高于遗传算法和微分进化算法.
测试函数的进化曲线图如图3~10所示. 由图3~7可以看出,新算法收敛速度均优于反向烟花算(OBLFA)和混沌烟花算法(CPAFA).新算法引入爬山算子,增强了算法局部搜索能力,具有不断寻优的能力,从而提高算法收敛速度;新算法两种群独立并行搜索,在每次迭代中,通过协作算子实现信息交流共享;新算法中的协作算子能够提高种群多样性与种群质量,加强了算法的全局搜索能力.
![]() |
图 3 F1进化曲线 Figure 3 F1 convergence curve |
![]() |
图 4 F2进化曲线 Figure 4 F2 convergence curve |
![]() |
图 5 F3进化曲线 Figure 5 F3 convergence curve |
![]() |
图 6 F4进化曲线 Figure 6 F4 convergence curve |
![]() |
图 7 F5进化曲线 Figure 7 F5 convergence curve |
由图8~10可知,新算法收敛速度优于遗传算法(DECGA)和微分进化算法(DE). 对于F7,新算法70次迭代找到最优值,对于F8,新算法25次迭代找到最优解;由于爬山算子加强了算法局部搜索能力,协作算子通过双种群信息交流,提高了种群多样性与种群质量,增强新算法全局搜索能力,因而整体上优化了算法性能.
![]() |
图 8 F6进化曲线 Figure 8 F6 convergence curve |
![]() |
图 9 F7进化曲线 Figure 9 F7 convergence curve |
![]() |
图 10 F8进化曲线 Figure 10 F8 convergence curve |
双种群烟花算法通过两种群间的信息交换,维持了种群的多样性,种群交替执行爬山算子和协作算子,有利于全局优化与局部优化有效结合,加快算法收敛速度,提高算法精度.
4 结语本文提出新的双种群烟花算法,新算法引入了爬山算子和协作算子,将局部搜索和全局搜索有效结合在一起,增加了种群多样性,有效平衡传统烟花算法全局搜索和搜索速度慢的矛盾,使其比传统算法有更高的求解精度和更快的收敛速度. 数值实验表明新算法拥有更强的寻优能力,使用范围更广,是一种稳健的求解无约束优化问题的新算法.
[1] | LI J Z, TAN Y. Orienting mutation based fireworks algorithm [C]//2015 IEEE Congress on Evolutionary Computa- tion(CEC). [s.n.]: IEEE, 2015: 1265-1271. DOI: 10.1109/ CEC.2015.7257034. |
[2] | ZHENG Y J, XU X L, LING H F, et al. A hybrid fireworks optimization method with differential evolution operators[J]. Neurocomputing, 2015, 148: 75-82. DOI: 10.1016/j.neucom.2012.08.075. |
[3] | ZHENG S Q, LI J Z, JANECEK A, et al. A cooperative framework for fireworks algorithm [C]//IEEE/ACM Transactions on Computational Biology and Bioinformatics. [s.n.]: IEEE, 2016, 14(1): 27-41. DOI: 10.1109/TCBB. 2015.2497227. |
[4] | ZHENG S Q, JANECEK A, LI J Z, et al. Dynamic search in fireworks algorithm [C]//2014 IEEE Congress on Evolutionary Computation(CEC). [s.n.]: IEEE, 2014: 3222-3229. DOI: 10.1109/CEC.2014.6900485. |
[5] | SI T, GHOSH R. Explosion sparks generation using adaptive transfer function in firework Algorithm [C]//2015 Third International Conference on Signal Processing, Communication and Networking(ICSCN). [s.n.]: IEEE, 2015, 14(1): 1-9. DOI: 10.1109/ICSCN.2015.7219917. |
[6] |
曹炬, 季艳芳. 改进的烟花爆炸优化算法及其收敛性分析[J].
计算机工程与科学, 2012, 31(1): 90-93.
CAO G, JI Y F. An improved fireworks explosion optimization algorithm. An improved fireworks explosion optimization algorithm and its convergence Analysis[J]. Computer Engineer & Science, 2012, 31(1): 90-93. |
[7] |
朱晓东, 刘冲, 郭雅默. 基于烟花算法与差分进化算法的模糊分类系统设计[J].
郑州大学学报(工学版), 2015, 36(6): 47-51.
ZHU X D, LIU C, GUO Y M. Design of fuzzy classification system based on fireworks optimization and differential evolution algorithm[J]. Journal of Zhengzhou University (Engineering Science), 2015, 36(6): 47-51. |
[8] |
李浩, 柏鹏, 张辉, 等. 反向烟花算法及其应用研究[J].
西安交通大学学报, 2015, 49(11): 82-87.
LI H, BAI P, ZHANG H, et al. Backward fireworks algorithm and application research[J]. Journal of Xi’an Jiaotong University, 2015, 49(11): 82-87. DOI: 10.7652/xjtuxb201511014. |
[9] | CHAO Y, YING T. Fireworks algorithm with covariance mutation [C]//2015 IEEE Congress on Evolutionary Computation (CEC). [s.n.]: IEEE, 2015: 1250-1256. DOI: 10.1109/CEC.2015.7257032. |
[10] | YU C, LI J Z, TAN Y. Improve enhanced fireworks algorithm with differential mutation [C]//2014 IEEE International Conference on Systems, Man, and Cybernetics(SMC). [s.n.]: IEEE, 2014: 264-269. DOI: 10.1109/SMC. 2014.6973918. |
[11] |
杜振鑫. 烟花算法中烟花爆炸半径的改进研究[J].
计算机时代, 2013, 1(1): 28-29.
DU Z X. Study on improvement of explosion radius in fireworks algorithm[J]. Computer Era, 2013, 1(1): 28-29. |
[12] |
谭营, 郑少秋. 烟花算法研究进展[J].
智能系统学报, 2014(5): 515-528.
TAN Y, ZHENG S Q. Recent advances in fireworks algorithm[J]. CAAI Transactions on Intelligent Systems, 2014(5): 515-528. |
[13] | YAN P, ZHENG S Q, TAN Y, et al. An empirical study on influence of approximation approaches on enhancing fireworks algorithm [C]//2012 IEEE International Conference on Systems, Man, and Cybernetics (SMC). [s.n.]: IEEE, 2012: 1322-1327. DOI: 10.1109/ICSMC.2012. 6377916. |
[14] |
谭跃, 谭冠政, 叶勇, 等. 具有混沌局部搜索策略的双种群遗传算法[J].
计算机应用研究, 2011, 28(2): 469-471.
TAN Y, TAN G Z, YE Y, et al. Dual population genetic algorithm with chaotic local search strategy[J]. Application Research of Computers, 2011, 28(2): 469-471. |
[15] |
柴岩, 周艳钊. 遗传算法的爬山法改进[J].
辽宁工程技术大学学报(自然科学版), 2014, 33(7): 996-999.
CHAI Y, ZHOU Y Z. Improved genetic algorithm based on climbing[J]. Journal of Liaoning Technical University (Natural Science), 2014, 33(7): 996-999. |
[16] |
梁瑞仕, 姜云飞, 杨会志. 基于有序爬山法的前向启发式搜索规划[J].
电子科技大学学报, 2013, 42(3): 464-468.
LIANG R S, JIANG Y F, YANG H Z. Forward heuristic search planning based on ordered hill climbing algorithm[J]. Journal of University of Electronic Science and Technology of China, 2013, 42(3): 464-468. |
[17] |
慕彩红, 焦李成, 刘逸. M-精英协同进化数值优化算法[J].
软件学报, 2009, 20(11): 2925-2938.
MU C H, JIAO L C, LIU Y. M-elite coevolutionary algorithm for numerical optimization[J]. Journal of Software, 2009, 20(11): 2925-2938. |
[18] |
慕彩红, 焦李成, 刘逸. 求解约束优化问题M-精英协同进化算法[J].
西安电子科技大学学报(自然科学版), 2010, 37(5): 854-861.
MU C H, JIAO L C, LIU Y. M-elite coevolutionary algorithm for constrained optimization[J]. Journal of Xidian University, 2010, 37(5): 854-861. |
[19] |
李松芳, 刘伟. 基于万有引力思想的遗传算子[J].
广东工业大学学报, 2015, 32(1): 121-127.
LI S F, LIU W. Genetic operator based on the idea of universal gravitation[J]. Journal of Guangdong University of Technology, 2015, 32(1): 121-127. |
[20] |
夏桂梅, 曾建潮. 基于锦标赛选择遗传算法的随机微粒群算法[J].
计算机工程与应用, 2007, 43(4): 51-53.
XIA G M, ZENG J C. Stochastic particle swarm optimization algorithm based on genetic algorithm of tournament selection[J]. Computer Engineering and Applications, 2007, 43(4): 51-53. |
[21] | LIANG J, SUGANTHAN P N, HERNANDEZ-DIAZ A G. Problem definitions and evaluation criteria for the cec2013 special session on real-parameter optimization [R/OL]. (2016-10-21) [2016-10-23]. http://www.ntu.edu.sg/ home/EPNSugan/index_files/CEC2013/CEC2013.htm. |
[22] | LIANG J J, QU B Y, SUGANTHAN P N. Problem definitions and evaluation criteria for the cec2014 special session and competition on single objective real-parameter numerical optimization [R/OL]. (2016-10-21) [2016-10-23]. http://www.ntu.edu.sg/home/EPNSugan/index_files/CEC2014/CEC2014.htm. |
[23] |
王培崇, 李丽荣. 改进的混合混沌烟花爆炸搜索算法[J].
微电子学与计算机, 2014, 31(11): 69-73.
WANG P C, LI L R. Improved hybrid chaos and fireworks explosion search algorithm[J]. Microelectronics & Computer, 2014, 31(11): 69-73. |
[24] |
刘全, 王晓燕, 傅启明, 等. 双精英协同进化遗传算法[J].
软件学报, 2012, 23(4): 765-775.
LIU Q, WANG X Y, FU Q M, et al. Double elite coevolutionary genetic algorithm[J]. Journal of Software, 2012, 23(4): 765-775. |
[25] | LEI S, LIU W. A differential evolution algorithm based on self-adapting mountain-climbing operator[J]. Applied Mechanics and Materials, 2012, 266: 2332-2338. |
[26] | 崔逊学, 多目标进化算法及其应用[M]. 北京: 国防工业出版社, 2006: 93-94. |