计算机系统应用  2019, Vol. 28 Issue (6): 209-212   PDF    
基于搜索空间大小的动态变异算子差分进化算法
苗晓锋1, 刘志伟2     
1. 榆林职业技术学院神木校区 信息中心, 神木 719300;
2. 西北工业大学 信息中心, 西安 710072
摘要:差分进化算法(DE)是一种较新的进化计算技术, 具有概念简单、易于实现、收敛速度快等优点, 得到了广泛的关注和应用. 为了解决经典DE计算开销大, 参数设置与问题本身过于相关等缺陷, 提出了一种改进的差分进化算法(IDE), 它采用了一种动态变异算子, 可根据进化代数的增加, 基于搜索空间大小, 实时地调整变异步长, 从而提高算法的求解精度. 通过在MATLAB仿真环境下对著名的基准测试函数分别进行求解, 将改进后的算法和已有的多种优化算法进行比较, 结果表明, 改进的IDE算法性能明显优于已知的算法, 证明动态变异是一种有效的改进思路.
关键词: 遗传算法    优化算法    动态变异    差分进化    仿真    MATLAB    
Differential Evolution with Dynamic Mutation Based on Search Space
MIAO Xiao-Feng1, LIU Zhi-Wei2     
1. Information Center, Yulin Vocational and Technical College at Shenmu, Shenmu 719300, China;
2. Information Center, Northwestern Polytechnical University, Xi’an 710072, China
Foundation item: National Natural Science Foundation of China (61672433); Year 2018, Major Educational and Scientific Research Project of Yulin Vocational and Technical College at Shenmu (ZK-201801)
Abstract: Differential Evolution (DE) is a novel evolutionary computation technique, which has attracted much attention and wide applications for its simple concept, easy implementation and quick convergence. In order to tackle much overhead, problem-dependent parameters, etc and enhance the precision of classical DE, an Improved DE(IDE) algorithm is proposed by using an dynamical mutation operator adjusting the step size based on search space with evolution. Experiments of solving well-known benchmark functions in MATLAB show the improved approach outperforms existing algorithms, and dynamic mutation is a effective improvement ideas.
Key words: genetic algorithm     optimization     dynamic mutation     differential evolution (DE)     simulation     MATLAB    

差分进化(Differental Evolution, DE)是由Price和Storn[1]首先提出的一种简单高效的基于群体的随机搜索算法. 作为遗传算法的一个分支, DE的性能在很大程度上受到其控制参数(收缩因子和杂交概率)的影响[2,3]. 选择不同的策略和控制参数会导致不同的算法性能, 尤其会在很大程度上决定最终所能获得最优解的求解效率和质量[4]. 而选择适当的参数值是一个与待求解问题自身特征相关的问题, 通常由使用者根据主观经验决定. 许多研究都尝试更好地解决这个问题, 例如自适应控制参数DE(SADE)[4], 模糊DE(FADE)[5], 自适应DE(SaDE)[6]和相邻搜索自适应DE(SaNSDE)[7]等改进DE算法.

本文引入一种可根据进化代数实时调整变异策略步长的动态变异算子, 以变异策略的改变来优化DE性能, 并将采用了这种动态变异算子的IDE (Improved DE)算法和已有的SADE[4], 古典进化规划(CEP)[8]和快速进化规划(FEP)[8]等既有算法进行了仿真比较研究.

1 差分进化算法

差分进化(DE)算法是一种基于种群和定向搜索策略的遗传算法[1]. 它的求解过程与其它仿生算法类似, 都是从一个随机生成的初始解种群开始, 模仿生物进化过程中基因变异和杂交的过程进行迭代求解, 直至找到最终最优解.

DE有多种最基本的形式[1], 最著名的一种是标准DE即“DE/rand/1/bin”. 该算法工作时首先随机生成一组初始解, 然后通过变异和杂交操作产生一组对应的试验解, 再根据最优适应值函数判断哪些试验解能作为下一代解种群成员, 然后迭代进行以上操作, 直至所得到当前解种群的精度达到要求时即停止求解循环.

首先, 定义 ${X_{ri,G}}(i = 1,2,\cdots, {N_p})$ 是第G代种群的解向量, 其中NP是种群的大小,

变异操作: 每个G代种群中的解Xri,G变异生成一个试验解Vi,G, 定义如下

$ {V_{i,G}} = {X_{r{\rm{1}},G}} + F({X_{r2,G}} - {X_{r3,G}}) $ (1)

其中, $i = 1,2,\cdots, {N_p} $ , r1, r2r3是集合 $\{ 1,2,\cdots,{N_p}\} $ 中任意互不相等随机整数, F是缩放系数.

杂交操作: 如同其它遗传算法一样, DE也利用杂交算子结合两个不同的解来生成试验解, 该试验解定义如下:

$ {U_{i,G}} = \left( {{U_{1i,G,}}{U_{2i,G,}}\cdots,{U_{Di,G,}}} \right) $

其中, $j = 1,2,\cdots, D$ (D是问题维数).

$ {U_{ji,G}} = \left\{ \begin{array}{l} {V_{ji,G}},{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\rm{if}}{\kern 1pt} {\kern 1pt} ran{d_j}(0,1) \le CR{\kern 1pt} {\kern 1pt} \vee {\kern 1pt} j = k\\ {X_{ji,G}},{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\rm{otherwise}} \end{array} \right. $ (2)

其中, CR是预先定义好的杂交概率, $ran{d_j}(0,1) $ 是(0, 1)范围内的任意随机数, $ k \in \{ 1,2,\cdots,D\} $ 也是随机数.

选择操作: 决定Ui, GXi, G二者当中哪一个成为下一代G+1种群的成员. 对求最优值问题而言, 能得到更好目标值的解将被选中继续进行迭代运算.

2 根据搜索空间大小动态调整变异算子的算法

经典DE算法的性能很大程度上受到其控制参数(收缩因子和杂交概率)的影响, 不同的参数选择和变异策略会导致不同的算法性能.

在已有研究成果中, Yao和Liu[9]提出了一种引入三角变异算子的DE, 可以在算法的收敛速度和鲁棒性两者间取得较好的平衡. He等[10]采用了辅助种群和放大因子F的自动计算. Shi[11]提出了结合DE和分布估计的DE/EDA算法. Liu和Lampinen[3]提出了一种模糊自适应DE(FADE), 它使用一个模糊逻辑控制器设置杂交与变异概率. Brest等[5]研究了采用自适应控制参数的DE(SADE). SADE采用自适应控制机制调整参数F和CR. Qin和Suganthan[4]提出了一种自适应DE(SaDE), 研究参数CR和变异策略的适应性. Yang等人[6]提出了邻域搜索策略DE(NSDE), 它利用服从高斯和柯西分布的随机数生成参数F, 而不是预定义常数F. 基于SaDE和NSDE, Yang等人[6]提出了另一个版本的DE(SaNSDE), 它吸收了SaDE和NSDE的优点. 苗晓锋等[12]提出了一种基于混合策略的HDE. 虽然以上方法都采用加权因子的方法来控制变异步长, 但很难解决待求解问题被自身特征支配的缺陷.

本文提出了一种新的动态变异算子, 即根据当前搜索空间的大小动态调整局部搜索的步长, 算子定义如下:

$ {x_j}(t + 1) = {x_j}(t) + [{b_j}(t) - {a_j}(t)]*rand() $ (3)
$ \begin{array}{l} {a_j}(t) = {\mathop{\rm Min}\nolimits} \left( {{x_{ij}}(t)} \right),\;\;{b_j}(t) = {\mathop{\rm Max}\nolimits} \left( {{x_{ij}}(t)} \right) \end{array} $ (4)
$ i = 1,2,\cdots,ps,\;\;j = 1,2,\cdots,n $

其中, xj是解个体x的第j维向量, aj(t)和bj(t)分别是当前搜索空间第j维的最小值和最大值. rand()是[0, 1]区间上的随机数, PS是种群规模大小, t = 1, 2, …, 指进化代数.

采用了该算子的IDE算法流程如下:

Begin

While NE < MAXNE do

For i = 1 to PS do

根据式(1)和式(2)生成一个试验向量;

计算试验向量的适应值;

Xi和试验向量中选择具有更好适应度的一个进入下一代种群;

End For

根据式(4)计算aj(t)和bj(t);

根据式(3)对最优个体best进行变异操作;

if best(t+1)的适应值优于best的适应值

best = best(t+1);

if end

End While

End

其中, PS是种群规模, best是当前最优解, NE是函数运行次数,MAXNE是函数运行最大次数.

在IDE算法中, bj(t)–aj(t)可以被视为当前种群搜索空间变异步长的放大率. 在进化初期, 初始搜索空间大, 步长bj(t)–aj(t)也大, 此时较大的步长有利于覆盖全局搜索, 便于发现潜在的更优解, 同时加快算法收敛. 随着代数的增加, 种群将逐渐收敛到当前最优值附近, 此时当前种群的搜索空间和步长bj(t)–aj(t)均变小. 在这种情况下, 较小的bj(t)–aj(t)值将更有利于在小范围局部搜索.

通过对著名的基准测试函数simple Sphere’s problem进行求解, 并选取当前解第一维b(t)–a(t)的变化进行记录, 结果如图1所示.

图 1 b(t)–a(t)值的收敛过程

可见, 在进化开始时b(t)–a(t)值和最优适应值很大, 在进化的最后阶段, 最优适应值和b(t)–a(t)很小, 算法迅速收敛.

3 基准函数测试试验

为了测试算法性能, 选择了三个单峰函数(f1-f3)和一个多峰函数(f4)来进行MATLAB环境下的仿真求解实验. 表1中给出了所有基准测试函数、变量维数、定义域及其全局最优解.

表 1 测试函数

我们将常用的CEP、FEP、SADE和IDE四种算法进行比较, 四种算法分别对四个测试函数进行求解运算. 参数设置如下:

种群规模PS设置为50, 控制参数CRF分别设置为0.9和0.5, 函数调用最大次数MAXNE分别设置为150 000 (f1f4), 200 000 (f2), 500 000 (f3).

表2中给出了测试函数的求解结果, 其中Mean表示上一代最优解的平均值, STD代表标准方差.

显然, 在同等条件下, SADE对于前三个单峰函数的求解精度平均优于CEP和FEP多达e+24倍、e+20倍和e+12倍, 对第四个多峰函数的求解精度平均优于两种算法e+15和e+13倍. 而IDE的求解精度又远优于SADE, 上述优势分别达到了e+27、e+25和e+16倍. 只是在最后一个多峰函数上, IDE和SADE的求解精度数量级相同, 但它的当前最优解的值比SADE的值更接近于最终全局最优解.

其中IDE对测试函数f1f3求解时的收敛过程分别如图2图3所示, 可见其收敛过程也非常迅速, 并未陷入局部最优.

表 2 测试结果

4 结论与展望

本文提出了一种改进的IDE算法, 该方法可以根据当前搜索空间的大小动态调整变异步长. 四个著名的基准测试函数求解实验表明, 所提出的IDE算法在同等条件下求解精度大大优于CEP、FEP和SADE. 今后的工作是尝试更多的进化和参数设置策略, 以研究其对DE算法性能的影响.

图 2 改进DE求解f1时的收敛过程

图 3 改进DE求解f3时的收敛过程

参考文献
[1]
Storn R, Price K. Differential evolution–A simple and efficient heuristic for global optimization over continuous spaces. Journal of Global Optimization, 1997, 11(4): 341-359. DOI:10.1023/A:1008202821328
[2]
Vesterstrom J, Thomsen R. A comparative study of differential evolution, particle swarm optimization, and evolutionary algorithms on numerical benchmark problems. Proceedings of the 2004 Congress on Evolutionary Computation. Portland, OR, USA. 2014. 1980–1987.
[3]
Liu JH, Lampinen J. A fuzzy adaptive differential evolution algorithm. Soft Computing-A Fusion of Foundations, Methodologies and Applications, 2005, 9(6): 448-462.
[4]
Qin AK, Suganthan PN. Self-adaptive differential evolution algorithm for numerical optimization. Proceedings of 2005 IEEE Congress on Evolutionary Computation. Edinburgh, Scotland, UK. 2005. 1785–1791.
[5]
Brest J, Greiner S, Boskovic B, et al. Self-adapting control parameters in differential evolution: A comparative study on numerical benchmark problems. IEEE Transactions on Evolutionary Computation, 2006, 10(6): 646-657. DOI:10.1109/TEVC.2006.872133
[6]
Yang ZY, Yao X, He JS. Making a difference to differential evolution. Siarry P, Michalewicz Z. Advances in Metaheuristics for Hard Optimization. Berlin, Heidelberg: Springer, 2018. 397–414.
[7]
Ali MM, Törn A. Population set-based global optimization algorithms: Some modifications and numerical studies. Computers and Operations Research, 2004, 31(10): 1703-1725. DOI:10.1016/S0305-0548(03)00116-3
[8]
Sun JY, Zhang QF, Tsang EPK. DE/EDA: A new evolutionary algorithm for global optimization. Information Sciences, 2005, 169(3–4): 249-262.
[9]
Yao X, Liu Y, Lin GM. Evolutionary programming made faster. IEEE Transactions on Evolutionary Computation, 1999, 3(2): 82-102. DOI:10.1109/4235.771163
[10]
He YC, Kou YZ, Shen CP. An improved differential evolution based on triple evolutionary strategy. Proceedings of the 3rd International Symposium on Intelligence Computation and Applications. Wuhan, China. 2008. 89–97.
[11]
Shi Y, Lan ZZ, Feng XH. Differential evolution based on improved learning strategy. Proceedings of the 10th Pacific Rim International Conference on Artificial Intelligence. Hanoi, Vietnam. 2008. 880–889.
[12]
苗晓锋, 刘志伟. 一种基于混合策略的差分进化算法研究. 计算机应用与软件, 2019, 36(3): 260-265.