基于差分进化算法的函数寻优算法

一、差分进化算法

在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,GXr3,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,GXr2,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,GXr2,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,GXi,G)+F(Xr1,GXr2,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,GXr1,G)+F(Xr2,GXr3,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,GXr2,G X r 2 , G − X r 3 , G \boldsymbol X_{r_2,G}-\boldsymbol X_{r_3,G} Xr2,GXr3,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.

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心️升明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值