一、差分进化算法
在DE算法中,首先随机初始化一个种群 X i , G = ( X 1 , X 2 , ⋯ , X N P ) T \boldsymbol X_{i,G}=(\boldsymbol X_1,\boldsymbol X_2,\cdots,\boldsymbol X_{NP})^T Xi,G=(X1,X2,⋯,XNP)T,并计算其适应度值 f ( X ) f(\boldsymbol X) f(X)。其中, X i = x i 1 , x i 2 , ⋯ , x i D , i = 1 , 2 , ⋯ , N P , D \boldsymbol X_i={x_{i1},x_{i2},\cdots,x_{iD}},i=1,2,\cdots,NP,D Xi=xi1,xi2,⋯,xiD,i=1,2,⋯,NP,D是向量维数, N P NP NP为种群规模。之后,算法根据差分变异、杂交和选择操作产生下一代。具体操作如下。
1、差分变异操作
在差分变异操作中,种群中每一个父代个体 X i , G = ( x i , 1 , G , x i , 2 , G , ⋯ , x i , D , G ) \boldsymbol X_{i,G}=(x_{i,1,G},x_{i,2,G},\cdots,x_{i,D,G}) Xi,G=(xi,1,G,xi,2,G,⋯,xi,D,G)都产生一个变异个体 V i , G = ( v i , 1 , G , v i , 2 , G , ⋯ , v i , D , G ) \boldsymbol V_{i,G}=(v_{i,1,G},v_{i,2,G},\cdots,v_{i,D,G}) Vi,G=(vi,1,G,vi,2,G,⋯,vi,D,G)。DE算法中常用的差分变异策略如下:
- DE/rand/1: V i , G = X r 1 , G + F ⋅ ( X r 2 , G − X r 3 , G ) (1) \boldsymbol V_{i,G}=\boldsymbol X_{r_1,G}+F\cdot(\boldsymbol X_{r_2,G}-\boldsymbol X_{r_3,G})\tag{1} Vi,G=Xr1,G+F⋅(Xr2,G−Xr3,G)(1)
- DE/best/1: V i , G = X b e s t , G + F ⋅ ( X r 1 , G − X r 2 , G ) (2) \boldsymbol V_{i,G}=\boldsymbol X_{best,G}+F\cdot(\boldsymbol X_{r_1,G}-\boldsymbol X_{r_2,G})\tag{2} Vi,G=Xbest,G+F⋅(Xr1,G−Xr2,G)(2)
- DE/current/1: V i , G = X i , G + F ⋅ ( X r 1 , G − X r 2 , G ) (3) \boldsymbol V_{i,G}=\boldsymbol X_{i,G}+F\cdot(\boldsymbol X_{r_1,G}-\boldsymbol X_{r_2,G})\tag{3} Vi,G=Xi,G+F⋅(Xr1,G−Xr2,G)(3)
- DE/current-to-best/1: V i , G = X i , G + F ⋅ ( X b e s t , G − X i , G ) + F ⋅ ( X r 1 , G − X r 2 , G ) (4) \boldsymbol V_{i,G}=\boldsymbol X_{i,G}+F\cdot(\boldsymbol X_{best,G}-\boldsymbol X_{i,G})+F\cdot(\boldsymbol X_{r_1,G}-\boldsymbol X_{r_2,G})\tag{4} Vi,G=Xi,G+F⋅(Xbest,G−Xi,G)+F⋅(Xr1,G−Xr2,G)(4)
- DE/rand-to-best/1: V i , G = X r 1 , G + F ⋅ ( X b e s t , G − X r 1 , G ) + F ⋅ ( X r 2 , G − X r 3 , G ) (5) \boldsymbol V_{i,G}=\boldsymbol X_{r_1,G}+F\cdot(\boldsymbol X_{best,G}-\boldsymbol X_{r_1,G})+F\cdot(\boldsymbol X_{r_2,G}-\boldsymbol X_{r_3,G})\tag{5} Vi,G=Xr1,G+F⋅(Xbest,G−Xr1,G)+F⋅(Xr2,G−Xr3,G)(5)
式(1)~(5)中: G G G为进化代数; X b e s t , G \boldsymbol X_{best,G} Xbest,G是当前种群的最优个体; X i , G \boldsymbol X_{i,G} Xi,G是父个体; r 1 , r 2 , r 3 , i ∈ { 1 , 2 , ⋯ , N P } r_1,r_2,r_3,i∈\{1,2,\cdots,NP\} r1,r2,r3,i∈{1,2,⋯,NP},且两两互不相等; X r 1 , G − X r 2 , G \boldsymbol X_{r_1,G}-\boldsymbol X_{r_2,G} Xr1,G−Xr2,G和 X r 2 , G − X r 3 , G \boldsymbol X_{r_2,G}-\boldsymbol X_{r_3,G} Xr2,G−Xr3,G为差分向量; F F F为缩放因子,用于控制差分扰动的程度,通常情况下 F = 0.5 F=0.5 F=0.5能够获得更好的效果。
2、杂交操作
杂交操作也称之为交叉操作,是利用差分变异操作中产生的变异个体 V i , G \boldsymbol V_{i,G} Vi,G与父个体 X i , G \boldsymbol X_{i,G} Xi,G进行二项杂交,产生试验个体 U i , G = ( u i , 1 , G , u i , 2 , G , ⋯ , u i , D , G ) \boldsymbol U_{i,G}=(u_{i,1,G},u_{i,2,G},\cdots,u_{i,D,G}) Ui,G=(ui,1,G,ui,2,G,⋯,ui,D,G)。该过程如下: u i , j , G = { v i , j , G , r a n d ( 0 , 1 ) ≤ C R o r j = = j r a n d x i , 1 , G , o t h e r w i s e (6) u_{i,j,G}=\begin{dcases}v_{i,j,G},\quad rand(0,1)≤CR\,\,or\,\, j==j_{rand}\\x_{i,1,G},\quad otherwise\end{dcases}\tag{6} ui,j,G={vi,j,G,rand(0,1)≤CRorj==jrandxi,1,G,otherwise(6)式中, j = 1 , 2 , ⋯ , D j=1,2,\cdots,D j=1,2,⋯,D, j r a n d j_{rand} jrand为 [ 1 , D ] [1,D] [1,D]之间的一个随机整数, C R CR CR为杂交概率。
3、选择操作
选择操作是根据适应值从父个体和试验个体中选择更好的个体成为下一代个体,该过程如下: X i , G + 1 = { U i , G , f ( U i , G ) ≤ f ( X i , G ) X i , G , f ( U i , G ) > f ( X i , G ) (7) \boldsymbol X_{i,G+1}=\begin{dcases}\boldsymbol U_{i,G},\quad f(\boldsymbol U_{i,G})≤f(\boldsymbol X_{i,G})\\\boldsymbol X_{i,G},\quad f(\boldsymbol U_{i,G})>f(\boldsymbol X_{i,G})\end{dcases}\tag{7} Xi,G+1={Ui,G,f(Ui,G)≤f(Xi,G)Xi,G,f(Ui,G)>f(Xi,G)(7)式中, X i , G + 1 \boldsymbol X_{i,G+1} Xi,G+1为下一代个体。
二、实验测试
以经典的Sphere函数为例,对20维取值在
[
−
100
,
200
]
[-100,200]
[−100,200]的自变量进行仿真实验,种群规模
N
=
30
N=30
N=30,最大迭代次数
M
a
x
I
t
=
500
MaxIt=500
MaxIt=500,采用DE/rand/1变异策略。
下图是迭代进化曲线。
最优位置及最优解显示如下:
Best position:1.6312e-05 -2.6041e-05 -4.4357e-05 1.4011e-05 -3.8454e-05 -6.9642e-07 3.5074e-05 2.6117e-05 6.921e-06 2.9509e-05 -8.4558e-06 -1.2684e-05 5.6268e-05 4.6493e-05 -6.8618e-06 7.0934e-05 -3.1023e-05 3.1736e-05 1.6565e-05 -7.4063e-05
Best fitness:2.5786e-08
三、参考文献
[1] Storn R, Price K. Differential evolution—A simple and efficient heuristic for global optimization over continuous spaces[J]. Journal of Global Optimization, 1997, 11(4): 341–359.
[2] 熊小峰, 刘啸婵, 郭肇禄, 等. 余弦适应性骨架差分进化算法[J]. 工程科学与技术, 2020, 52(2): 180-191.