差分进化算法(Differential Evolution,DE)于1997年由Rainer Storn和Kenneth Price在遗传算法等进化思想的基础上提出的,本质是一种多目标(连续变量)优化算法(MOEAs),用于求解多维空间中整体最优解。
差分进化思想来源即是早期提出的遗传算法(GeneticAlgorithm,GA),模拟遗传学中的杂交(crossover)、变异(mutation)、复制(reproduction)来设计遗传算子。
差分进化算法相对于遗传算法而言,相同点都是通过随机生成初始种群,以种群中每个个体的适应度值为选择标准,主要过程也都包括变异、交叉和选择三个步骤。不同之处在于遗传算法是根据适应度值来控制父代杂交,变异后产生的子代被选择的概率值,在最大化问题中适应值大的个体被选择的概率相应也会大一些。而差分进化算法变异向量是由父代差分向量生成,并与父代个体向量交叉生成新个体向量,直接与其父代个体进行选择。显然差分进化算法相对遗传算法的逼近效果更加显著。
DE的群体由突变和选择过程驱动。突变过程,包括突变和交叉操作,这两步操作被设计用于利用或探索搜索空间,而选择过程被用于确保有希望的个体的信息可以进一步利用。
在解空间中随机均匀产生M个个体,每个个体由n维向量组成
DE/rand/1:Vi(g)=Xp1(g)+F⋅(Xp2(g)−Xp3(g)) D E / r a n d / 1 : V i ( g ) = X p 1 ( g ) + F · ( X p 2 ( g ) − X p 3 ( g ) )
DE/best/1:Vi(g)=Xbest(g)+F⋅(Xp1(g)−Xp2(g)) D E / b e s t / 1 : V i ( g ) = X b e s t ( g ) + F · ( X p 1 ( g ) − X p 2 ( g ) )
DE/current to best/1:Vi(g)=Xi(g)+F⋅(Xbest(g)−Xi(g))+F⋅(Xp1(g)−Xp2(g)) D E / c u r r e n t t o b e s t / 1 : V i ( g ) = X i ( g ) + F · ( X b e s t ( g ) − X i ( g ) ) + F · ( X p 1 ( g ) − X p 2 ( g ) )
DE/best/2:Vi(g)=Xbest(g)+F⋅(Xp1(g)−Xp2(g))+F⋅(Xp3(g)−Xp4(g)) D E / b e s t / 2 : V i ( g ) = X b e s t ( g ) + F · ( X p 1 ( g ) − X p 2 ( g ) ) + F · ( X p 3 ( g ) − X p 4 ( g ) )
DE/rand/2:Vi(g)=Xp1(g)+F⋅(Xp2(g)−Xp3(g))+F⋅(Xp4(g)−Xp5(g)) D E / r a n d / 2 : V i ( g ) = X p 1 ( g ) + F · ( X p 2 ( g ) − X p 3 ( g ) ) + F · ( X p 4 ( g ) − X p 5 ( g ) )
其中 cr∈[0,1]为交叉概率 c r ∈ [ 0 , 1 ] 为 交 叉 概 率
参数 cr c r 的自适应调整:
其中 fi f i 是个体 Xi X i 的适应度, fmin f m i n 与 fmax f m a x 分别是当前种群中最差和最优个体的适应度, f¯ f ¯ 是当前种群适应度平均值, crl c r l 和 cru c r u 分别是 cr c r 的下限与上限,一般 crl=0.1,cru=0.6 c r l = 0.1 , c r u = 0.6