一文了解差分进化算法的前世今生


差分进化算法(Differential Evolution,以下简称 DE)由Storn等人于1995年提出,其最初的设想是用于解决切比雪夫多项式问题,后来发现它也可用于求解复杂优化问题。当前,它已经成为求解 连续变量非线性全局优化问题的最有效方法之一。与遗传算法类似,DE是一种基于种群进化的元启发式算法。

PS:博主的博士课题以改进DE为主。研究过程中,走了很多弯路。以下内容,主要为这些年针对DE的相关总结。希望此文可以帮助朋友们降低了解和认识DE的准入门槛,若真如此,幸甚。若有相关问题,欢迎留言或私信讨论。

综合表现

下表列举了2005-2020年IEEE CEC 单目标参数优化竞赛的前三名优化算法。其中,2005年和2016年未针对算法进行总排名,不参与统计(用N/A表示); 2007年为多目标优化问题,不参与统计(用N/A表示);2009年和2014 年的第二名和第三名算法,未在网站上公布,表中也未列出(用N/A表示)。
在这里插入图片描述
上表中的DE算法和改进DE算法用黑体标注。从表中可以看出,DE在求解标准测试算例时,具有较为明显的优势。下图汇总了DE在各届IEEE CEC竞赛中的最优排名及其对应的改进DE。除了2013年排名第4外(图中未标出),DE在其他所有年份的排名都位列前三。在2006和2009等7个年份中,DE取得了第一名的成绩。在最近三年的竞赛中,即2018年、2019年和2020年,DE依然保持着领先的地位。
在这里插入图片描述

流程概述

设定优化问题如下:优化变量为 x \bm x x,变量维度为 D D D,表示为
x = ( x 1 , x 2 , . . . , x D ) {{\bm{x}}}=\left( {{x}^{1}},{{x}^{2}},...,{{x}^{D}} \right) x=(x1,x2,...,xD)
x \bm x x的上界 x m a x \bm x_{\rm{max}} xmax和下界 x m i n \bm x_{\rm{min}} xmin分别定义为
{ x min ⁡ = ( x min ⁡ 1 , x min ⁡ 2 , . . . , x min ⁡ D ) x max ⁡ = ( x max ⁡ 1 , x max ⁡ 2 , . . . , x max ⁡ D ) \left\{\begin{array}{l} {{\bm{x}}_{\min }}=\left( x_{\min }^{1},x_{\min }^{2},...,x_{\min }^{D} \right) \\ {{\bm{x}}_{\max }}=\left( x_{\max }^{1},x_{\max }^{2},...,x_{\max }^{D} \right) \\ \end{array}\right. {xmin=(xmin1,xmin2,...,xminD)xmax=(xmax1,xmax2,...,xmaxD)
目标函数为最小化某一性能指标
min ⁡    f ( x ) \min \;f\left( {\bm{x}} \right) minf(x)
针对以上的最小化问题,经典DE在求解过程中,一般包含4个步骤:初始化(Initialization)、变异(Mutation)、交叉(Crossover)和选择(Selection)。

初始化

DE的种群可以表示为
x i = ( x i 1 , x i 2 , . . . , x i D ) , i = 1 , 2 , . . . , N P {{\bm{x}}_i} = \left( {x_i^1,x_i^2,...,x_i^D} \right), i=1,2,...,NP xi=(xi1,xi2,...,xiD),i=1,2,...,NP
其中, N P NP NP是种群大小。

初始化第 i i i个个体 x i , 1 x_{i,1} xi,1的常用方法为
x i , 1 j = x min ⁡ j + r a n d ( 0 , 1 ) ⋅ ( x max ⁡ j − x min ⁡ j ) , j = 1 , 2 , . . . , D x_{i,1}^{j}=x_{\min }^{j}+\mathrm{rand}\left( 0,1 \right)\cdot \left( x_{\max }^{j}-x_{\min }^{j} \right),j=1,2,...,D xi,1j=xminj+rand(0,1)(xmaxjxminj),j=1,2,...,D
其中, r a n d ( 0 , 1 ) \rm{rand}(0,1) rand(0,1)是0~1之间的均匀随机数。

变异

定义 x i , G \bm x_{i,G} xi,G为第 i i i代种群的第 G G G个个体。 x i , G \bm x_{i,G} xi,G通过以下的变异算子生成与之对应的变异向量 v i , G \bm v_{i,G} vi,G
v i , G = x r 1 i , G + F ⋅ ( x r 2 i , G − x r 3 i , G ) {{\bm{v}}_{i,G}}={{\bm{x}}_{r_{1}^{i},G}}+F\cdot \left( {{\bm{x}}_{r_{2}^{i},G}}-{{\bm{x}}_{r_{3}^{i},G}} \right) vi,G=xr1i,G+F(xr2i,Gxr3i,G)

其中,下标 r 1 i r_1^i r1i r 2 i r_2^i r2i r 3 i r_3^i r3i是随机产生的整数值,范围是1~ N P NP NP,它们的数值互不相同,并且均不等于 i i i。对于每个变异向量,这些下标都只随机产生一次。此处, x i , G \bm x_{i,G} xi,G被称为 v i , G \bm v_{i,G} vi,G对应的目标向量, x r 1 i , G \bm{x}_{r_{1}^{i},G} xr1i,G为基向量, x r 2 i , G − x r 3 i , G {{\bm{x}}_{r_{2}^{i},G}}-{{\bm{x}}_{r_{3}^{i},G}} xr2i,Gxr3i,G是差分向量, F F F是缩放因子,范围是0~1。

交叉

交叉算子如下所示,其作用是通过组合 x i , G \bm x_{i,G} xi,G v i , G \bm v_{i,G} vi,G产生对应的试验向量 u i , G \bm u_{i,G} ui,G
u i , G j = { v i , G j ,   if ( j = j rand ) or ( r i j ≤ C r ) x i , G j ,   otherwise u_{i,G}^{j}=\left\{ \begin{array}{l} v_{i,G}^{j},~~\text{if}\left( j={{j}_{\text{rand}}} \right)\text{or}\left(r_i^j\le Cr \right) \\ x_{i,G}^{j},~~\text{otherwise} \\ \end{array}\right. ui,Gj={vi,Gj,  if(j=jrand)or(rijCr)xi,Gj,  otherwise其中, j rand {j}_{\text{rand}} jrand是1~ D D D之间的随机整数, r i j = r a n d ( 0 , 1 ) r_i^j=\mathrm{rand}(0,1) rij=rand(0,1) C r Cr Cr是交叉概率,范围是0~1。该方式下,至少存在1维变量从 v i , G \bm v_{i,G} vi,G u i , G \bm u_{i,G} ui,G。下图为生成试验向量 u i , G \bm u_{i,G} ui,G的示意图。
在这里插入图片描述

选择

生成 u i , G \bm u_{i,G} ui,G后,计算和比较 u i , G \bm u_{i,G} ui,G x i , G \bm x_{i,G} xi,G对应的目标函数,目标函数较小的对应向量可以保留到下一代
x i , G + 1 = { u i , G , f ( u i , G ) ≤ f ( x i , G ) x i , G ,  otherwise {{\bm{x}}_{i,G+1}}=\left\{ \begin{array}{l} {{\bm{u}}_{i,G}},f\left( {{\bm{u}}_{i,G}} \right)\le f\left( {{\bm{x}}_{i,G}} \right) \\ {{\bm{x}}_{i,G}},\ \text{otherwise} \\ \end{array} \right. xi,G+1={ui,G,f(ui,G)f(xi,G)xi,G, otherwise

算法特点

相比其他元启发式算法,DE的主要特点在于它使用差分向量来指导当前种群的进化方向。为了直观地展示差分向量(变异向量)的变化特点,本节结合经典DE求解2维Schwefel函数的优化实例,进行详细描述。

下图为2维Schwefel函数的3-D曲面图,其中 x x x y y y的范围均为-500~500。从图上可知,该函数中除了全局最优解外,还包含数量众多的局部最优解。
在这里插入图片描述
接下来,使用刚刚介绍的经典DE进行求解。设置种群大小 N P = 30 NP=30 NP=30,缩放因子 F = 0.5 F=0.5 F=0.5,交叉概率 C r = 0.1 Cr=0.1 Cr=0.1。下图记录了不同代数时的变异向量末端点的所有可能位置。在初始化种群后,虽然种群大小 N P NP NP仅为30,但是变异向量几乎可以覆盖所有的搜索空间。此时,个体差异较大, DE可以在较大范围内进行搜索,因此这个阶段的全局探索能力较强;12代时,优化过程逐渐摒弃中心位置,向边界附近搜索;19代时,搜索范围聚集到4个角落;23代时,优化区间已经减至2个小范围;25代时,只剩下一个搜索区域。此时,个体间差异也变小,局部开发能力更强,在40代时,基本收敛。因此,在优化过程中,差分向量可以利用个体差异的变化,自适应地调整DE的全局探索和局部开发能力,从而保证DE具有非常好的综合优化性能。

在这里插入图片描述

算法改进

经典DE虽然为求解全局优化问题提供了一种可行的途径,但是它还存在一些不足,比如易陷入局部最优、出现早熟收敛或搜索停滞等现象。为了提升DE的全局优化性能,许多学者致力于改进DE的相关工作。总的来说,改进DE的方法可以分别或同时从以下4个方面入手,包括:变异算子、种群大小 N P NP NP、缩放因子 F F F和交叉概率 C r Cr Cr

变异算子

为了区分不同类型的变异算子,一般使用“DE/x/y”对其简述。其中, x x x表示基向量, y y y表示差分向量。经典DE中的变异算子通常被标记为DE/rand/1。此后,学者们又提出了DE/best/1、DE/rand/2、DE/best/2和DE/current-to- p p pbest/1等变异算子。当前,DE/current-to- p p pbest/1变异算子是各种改进DE的最常用算子之一,其表达式如下
v i , G = x i , G + F i ( x best  , G p − x i , G ) + F i ( x r 1 , G − x ~ r 2 , G ) \boldsymbol{v}_{i, G}=\boldsymbol{x}_{i, G}+F_{i}\left(\boldsymbol{x}_{\text {best }, G}^{p}-\boldsymbol{x}_{i, G}\right)+F_{i}\left(\boldsymbol{x}_{r 1, G}-\tilde{\boldsymbol{x}}_{r 2, G}\right) vi,G=xi,G+Fi(xbest ,Gpxi,G)+Fi(xr1,Gx~r2,G)式中, x best  , G p \boldsymbol{x}_{\text {best }, G}^{p} xbest ,Gp为第 G G G代种群前 N P ∗ p NP*p NPp个最好的个体, p p p的范围是0~1 。 x r 1 , G \boldsymbol{x}_{r 1, G} xr1,G为从1~ N P NP NP范围内随机选取的个体, x ~ r 2 , G \tilde{\boldsymbol{x}}_{r 2, G} x~r2,G为从1~ N P NP NPA(Archive)组成的集合中随机选取的个体, i i i r 1 r1 r1 r 2 r2 r2互不相等。A中保存的是历史迭代过程中目标函数较差的个体。在优化开始阶段,A和第一代的种群相同;此后,逐渐向A中增加目标函数较差个体的数量;当A 中个体数量超过最大值时,将从中随机删除部分个体,并添加进新个体。下图为DE/current-to- p p pbest/1变异算子下,生成试验向量的示意图, 差分向量1为 x best  , G p − x i , G \boldsymbol{x}_{\text {best }, G}^{p}-\boldsymbol{x}_{i, G} xbest ,Gpxi,G,差分向量2为 x r 1 , G − x ~ r 2 , G \boldsymbol{x}_{r 1, G}-\tilde{\boldsymbol{x}}_{r 2, G} xr1,Gx~r2,G

在这里插入图片描述

种群数量 N P NP NP

种群设置的方式主要包含2种,固定值和自适应方式。在固定值中,通常认为种群数 N P NP NP设置为变量个数5~10倍为宜;2006年,自适应的 N P NP NP设计技术首次被证明有利于提升DE的优化性能,2014年,L-SHADE(DE的改进算法)在IEEE CEC 2014 测试算例上的优化表现排名第一,它更直接地证明了自适应种群设计技术的显著优势。该算法使用的是线性减少种群大小 N P NP NP值的方法。此后陆续又提出了其他的自适应调整 N P NP NP值的方式,如基于小生境(Niching-based)的 N P NP NP减少方法等。

缩放因子 F F F和变异率 C r Cr Cr

设计缩放因子 F F F的方式可以分为四类:固定值、随机值、基于历史自适应和基于目标函数自适应。固定值指的是缩放因子 F F F在整个优化过程中,都保持不变。一般认为, F F F取0.5,0.6或0.9为宜。随机值指的是每一代缩放因 F F F的值通过随机函数来确定。在研究过程中,均匀分布函数和正态分布函数是最常用的两种方式。

历史自适应缩放因子 F F F的核心是借鉴以往迭代成功的缩放因子 F F F值,作为设定当前缩放因子 F F F值的参考基准。下图(a)给出了历史自适应缩放因子 F F F设计的示意图。该方法广泛应用于各种自适应DE算法,SHADE是其中最为典型的算法。目标函数自适应缩放因子 F F F是指利用当前种群的目标函数来确定当前的缩放因子 F F F。下图 (b)给出了目标函数自适应缩放因子 F F F设计的示意图。
在这里插入图片描述
交叉概率 C r Cr Cr的设计方式与缩放因子 F F F类似,本文不再赘述。

改进DE排名

下图依据全局寻优能力的的区别,绘制了25种不同DE算法之间的相互关系 。各类改进DE从下到上,全局寻优能力逐渐提升。每两条红色虚线区间内的DE认为其全局寻优性能类似。DE之间的箭头指向表示来源关系,例如EsDEr-NR是JADEw的改进版。
在这里插入图片描述

发展方向

超参数改进

在DE算法中,超参数主要是指缩放因子 F F F、交叉概率 C r Cr Cr N P NP NP。针对 F F F C r Cr Cr的改进策略最近几年以历史自适应为主,如果不能从基本策略上有新的自适应设计,难以再有突破。博主针对该问题曾有部分新的想法,可惜不过限于时间约束,没能仔细研究透彻,略有可惜。

N P NP NP的改进设计具有通用性,可以用于DE的 N P NP NP自适应方案理论上也可以用于其他智能优化算法。如果能有技术突破,也是非常有价值的。

变异算子改进

DE的核心在于变异算子。不同的变异算子,具有不同的特点。现在还有很多学者去尝试提出新的变异算子。不过更有前途的,博主认为是去融合不同类型的变异算子。IMODE(IEEE CEC 2020冠军)是其中的一个典型代表。相信未来几年,这将成为DE的研究热点之一。

某种意义上,变异算子可以认为是不同智能优化算法融合的另一种体现。举个例子,DE/current-to- p p pbest/1的来源之一是粒子群算法。所以,强行想从概念上去融合DE与其他智能优化算法,不如直接去研究融合多个变异算子,更加有意义。

应用范围扩展

针对连续变量非线性全局优化问题,DE当前几乎可以判定为当之无愧的Number 1了。但是在其他问题类型上的综合表现,是否具有统治地位,并不明朗。一个显然的实例,针对组合优化问题,DE的全局搜索能力并不亮眼。大规模优化问题和多目标优化问题是近几年的热点优化问题,DE的表现,就有待各位大佬去探索了。

  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值