3.2 差分进化算法
差分进化(Differential Evolution, DE)算法是在求解Chebyshev多项式拟合问题时提出的,算法主要通过基于差分形式的变异操作和基于概率选择的交叉操作进行优化搜索。DE算法最初的设计方法源于遗传退火算法,主要操作包括变异、交叉和选择,但具体实现方法与遗传算法有本质区别。
3.2.1 算法原理
算法首先对搜索群体进行初始化。假设NPNP表示群体规模,DD表示变量维数,GG表示迭代次数,令Xi,GXi,G表示第GG代的寻优个体ii,并可以表示为:
Xi,G=[X1i,G,X2i,G,...,XDi,G]Xi,G=[X1i,G,X2i,G,...,XDi,G](1)对每个搜索个体的解采用随机初始化方法,例如个体ii的第jj个解的分量可以通过如下方法产生:
Xji,0=Xjmin+r(Xjmax−Xjmin)Xji,0=Xjmin+r(Xjmax−Xjmin)(2)其中XjmaxXjmax和XjminXjmin分别表示第jj个分量的上下界;rr表示在[0,1]间服从均匀分布的随机数。完成初始化后,进入循环
1. 变异操作
在DE算法中,经典的变异操作是在目标向量的基础上,利用两个向量的差分进行解的更新,比如:
Vi,G=Xr1,G+F(Xr2,G−Xr3,G)Vi,G=Xr1,G+F(Xr2,G−Xr3,G)(3)其中r1,r2,r3r1,r2,r3是从当前搜索群体中随机选择的三个个体编号,要求r1≠r2≠r3r1≠r2≠r3;Xi,GXi,G称为目标向量;Vi,GVi,G表示个体Xi,GXi,G变异后的解向量,称为个体i的合成向量;Xr1,GXr1,G表示被选择的进行变异的向量,Xr2,GXr2,G和Xr3,GXr3,G是被选择进行差分操作的两个向量;系数FF称为缩放因子,用于控制差分向量对变异公式的影响。
2. 交叉操作
在DE算法中,交叉操作是利用合成向量Vi,GVi,G和目标向量Xi,GXi,G的分量进行重新组合产生试验向量Ui,GUi,G,以提高解的多样性。目前,二项式交叉和指数交叉是DE算法主要的交叉方法,二项式交叉对应定义如下:
Uji,G={Vji,G,ifrand≤Crorj=jrandXji,G,otherwiseUji,G={Vji,G,ifrand≤Crorj=jrandXji,G,otherwise(4)其中,rand表示[0,1]之间服从均匀分布的随机数;Cr表示交叉概率,且取值与[0,1];jrand表示在区间[1,D]上随机产生的整数。
指数交叉实现方法如下:
Uji,G={Vji,G,j=<n>D,<n+1>D,...,<n+L+1>DXji,G,otherwise其中,n和L是在[1,D]上随机产生的整数;<>D表示对D进行取模运算。
3. 选择操作
选择操作是基于贪婪策略,比较试验向量Ui,G和目标向量Xi,G的优劣,挑选更优的值作为下一代的目标向量。
DE算法的流程如下图所示:
上述算法是差分优化算法的基本形式,目前还有其他版本的算法,可以用DE/x/y/z表示,其中x表示被变异的向量选择方法;y表示变异种采用的差分向量的个数;z表示交叉操作的方法,上bin表示二项式交叉,exp表示指数交叉,因此前面的DE算法可以表示为DE/rand/1/bin,此外,其他DE算法的形式有:
- DE/rand/2/bin
- DE/best/1/bin
- DE/best/2/bin
- DE/target−to−best/1/bin
- DE/rand/1/exp
3.2.2 应用案例
瓶颈TSP问题(不追求总巡回路线最短,希望在巡回路线中单次行程尽可能短)、Chebyshev多项式拟合问题