DE、SaDE、JADE、SHADE、L-SHADE算法整理

DE(Differential Evolution)算法

A. 基本算法原理

DE算法仍然是EA算法的一种,所以在学习DE算法之前,先让我们复习一下EA(Evolution Algorithm)算法的流程图:
Steps of EA
在开始进行具体的流程介绍之前,先让我们来定义一些东西

Solution

根据问题的维度D,我们用一个D维的向量来表示为一个Solution
需要注意的是,每一个维度都应该有自己的上界和下界

Population

我们将固定数量(NP)个Solution打包起来,这样就形成了一个Population
Relationship

B. 流程详解

1. 初始化

每个Solution中每一个维度的值都初始化为该维度上下限中的随机值,公式为
x i , j , 0 = M i n j + r a n d i , j [ 0 , 1 ] ⋅ ( M a x j − M i n j ) x_{i,j,0}=Min_{j}+rand_{i,j}\left[ 0,1 \right]\cdot \left( Max_{j}-Min_{j} \right) xi,j,0=Minj+randi,j[0,1](MaxjMinj)

这里的i是Solution的序号、j是维度序号、0是第0代

2. 突变

对于每一个Solution X i , G X_{i,G} Xi,G,从同代中随机选择其它3个Solution X r 1 i , G 、 X r 2 i , G 、 X r 3 i , G X_{r_{1}^{i},G}、X_{r_{2}^{i},G}、X_{r_{3}^{i},G} Xr1i,GXr2i,GXr3i,G来计算这个Solution的Mutant vector V i , G V_{i,G} Vi,G,公式如下
V i , G = X r 1 i , G + F ⋅ ( X r 2 i , G − X r 3 i , G ) V_{i,G}=X_{r_{1}^{i},G}+F\cdot(X_{r_{2}^{i},G}-X_{r_{3}^{i},G}) Vi,G=Xr1i,G+F(Xr2i,GXr3i,G)

i i i是正在处理的Solution的序号,由于不同的Solution所使用到的三个随机Solution不同,因此打上了上标用以提醒
G G G是当前的代数
F F F是比例因子(Scaling factor),其取值为(0,1.5)的常数

3. 重组

有两种重组方式,但都离不开 C r Cr Cr,它是该维度变量是否更新的依据,这个值是预先设定好的
1. Binomial/Uniform Crossover

公式如下
u i , j , G = { v i , j , G , i f ( r a n d i , j [ 0 , 1 ] ≤ C r o r j = j r a n d ) x i , j , G , o t h e r w i s e u_{i,j,G}=\left\{ \begin{aligned} v_{i,j,G}&,&& if\left( rand_{i,j}\left[ 0,1 \right]\le{C}r\quad or\quad j=j_{rand} \right) \\ x_{i,j,G}&,&& otherwise \end{aligned}\right. ui,j,G={ vi,j,Gxi,j,G,,if(randi,j[0,1]Crorj=jrand)otherwise

u i , j , G u_{i,j,G} ui,j,G是经过重组之后生成的新的Solution U i , G U_{i,G} Ui,G j j j位置处的值
v i , j , G v_{i,j,G} vi,j,G是经过突变之后生成的Mutant vector V i , G V_{i,G} Vi,G j j j位置处的值
x i , j , G x_{i,j,G} xi,j,G是原Solution X i , G X_{i,G} Xi,G j j j位置处的值
j r a n d = r a n d [ 0 , D ] j_{rand}=rand[0,D] jrand=rand[0,D],为了避免 C r Cr Cr太小,我们引入该值,来随机一些位置,强制它们发生改变

2. Exponential(two-point modulo) Crossover
这里需要先引入两个值 n 、 L n、L nL n n n是直接随机得到的, L L L需要进行一些计算,这里给了 L L L的伪代码

L=0;
DO
{
   
	L=L+1;
}WHILE((rand[0,1]<=Cr)AND(L<D))

n n n确定了Crossover的起点, L L L确定了Crossover的终点
Crossover的公式如下
u i , j , G = { v i , j , G , f o r   j = ⟨ n ⟩ D , ⟨ n + 1 ⟩ D , . . . , ⟨ n + L − 1 ⟩ D x i , j , G , f o r    a l l    o t h e r    j ∈ [ 1 , D ] u_{i,j,G}=\left\{ \begin{aligned} v_{i,j,G}&,&& for\: j=\langle n\rangle _{D},\langle n+1\rangle _{D},...,\langle n+L-1\rangle _{D} \\ x_{i,j,G}&,&& for\; all\; other\; j\in [1,D] \end{aligned}\right. ui,j,G={ vi,j,G

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值