进化计算——进化策略(ES)
进化策略(Evolution Strategies,ES)作为一个生物学类比,进化策略将问题的解决方案模型化为物种,而不是像之前描述的其他算法那样(多重变量的个体种群正态分布在适应度空间中)。因此,这些种群有能力去进化自己的进化能力来使他们适应他们所处的环境。如果说EP是基于行为进化的,那么ES则是基于进化的进化的(对进化这一行为本身进行进化)。尽管都是利用变异、交叉(重组),但在操作上,ES同E
进化策略(Evolution Strategies,ES)
作一个生物学的类比,进化策略将问题的解决方案模型化为物种(多重变量的种群个体正态分布在适应度空间中)。因此,这些种群有能力去进化自己的进化能力来使他们适应他们所处的环境。如果说EP是基于行为进化的,那么ES则是基于进化的进化的(对进化这一行为本身进行进化)。
尽管都是利用变异、交叉(重组),但在操作上,ES同EP和GA都有所不同。ES同EP一样,采取的是自上而下的视角,强调的是表现型行为而非基因型;ES同样使用实数作为变量而非GA中的二进制编码。ES的目标是将种群的大多数进化(移动)到空间的最佳区域;使用一条简单规则:适者生存来指导进化,每一代中的最优个体进行复制,他们同他们的子代很相似,但也有差别(引入了变异)。个体作为问题的潜在解,其表现型特征是由一个数字向量表示,通过给父代表现型特征坐标加一个正态分布的随机数而引入变异,使得子代在原本空间位置附近探索更优的位置,即 x i ′ ( t ) = x i + N ( 0 , σ 2 ) x'_i(t)=x_i+N(0,\sigma^2 ) xi′(t)=xi+N(0,σ2)。
总之,在ES中,在父代的特征上进行突变,以随机产生与父代相似但不同的子代。每个存活个体的坐标是以一个正态分布的均值为中心,其对应的策略参数以方差或标准差为中心,子向量的数值根据位置和策略参数生成。
ES的步骤
- 种群初始化(个体初始化、策略参数初始化);
- 用 μ \mu μ个父代重组生成 λ \lambda λ 个子代;
- 所有子代变异;
- 对 λ \lambda λ 或 μ + λ \mu+\lambda μ+λ 个种群成员进行评估;
- 选择 μ \mu μ 个个体作为新种群;
- 返回第 2 步,直到达到终止条件。
进化窗口
ES在变异上的一个独特观点是进化窗口,这一理论背后的原理是可以使适应度提升的变异的步长都在一个限定的步长范围(窗口)内,在进化窗口之外的交叉和变异对进化是无用的。在ES中,变异率应当同个体种群成员的变量数量成反比,同最优解的距离成正比。但实际上,最优解的精确值是未知的,但关于最优解的相关信息是有可能知道的,通常在某个数量级内是知道的。这些有限的信息对于知道ES的搜索是很有帮助的。
策略参数
变异的种群数量,是种群的进化率在ES中是一个很关注的方面。个体体现在一组特征和相应的策略参数上,通常是方差或标准差,利用策略参数可以改变个体后代的特征向量,例如,标准差 σ \sigma σ可被用来刻画正态分布的变化性,以此来衡量扰动父代特征的程度。对策略参数本身进行进化,下一代的变异范围(或改变的可变性)也随着正在优化的特征而进化。直观的, σ \sigma σ增加,种群个体对应变量的步长也随之增加,可以探索更大范围的空间; σ \sigma σ减小,则更集中于某一区域内的开发(搜索)。策略参数在生成子代时随机决定步长 △ x i \triangle x_i △xi,大的 σ \sigma σ意味着子代同父代的差异越大,尽管如此,一个大的 σ \sigma σ同样可以产生一个小步长,例如,正态分布中95%的点会落在均值左右1.96个标准差的范围内。即 σ \sigma σ决定生成子代的离散程度。一般采用自适应的策略参数来决定每一代的最佳搜索方向和最大步长。
单一策略参数
用 χ i ( t ) = ( x i ( t ) , σ i ( t ) ) \chi_i(t)=(\mathbf x_i(t),\sigma_i(t)) χi(t)=(xi(t),σi(t)) 代表第 t 代第 i 个个体,其中 x i ∈ R n x \mathbf x_i\in\mathbb R^{n_x} xi∈Rnx 代表个体性状(即决策变量的向量), σ i ∈ R + n x \sigma_i\in\mathbb R^{n_x}_+ σi∈R+nx 表示参数策略向量的偏差,通常,ES对性状的所有组份都采用一个偏差,即 σ i j = σ i , j = 1 , 2 , ⋯ , n x , 其 中 , σ i ∈ R + \sigma_{ij}=\sigma_i,j=1,2,\cdots,n_x,其中,\sigma_i\in\mathbb R_+ σij=σi,j=1,2,⋯,nx,其中,σi∈R+。而使用更多的策略参数可以为个体提供更多程度的自由度来适当的调整他们再所有维度上的变异分布。如偏差被用作唯一的策略参数,则最佳的搜索方向是沿着搜索空间所在的坐标系轴线确定的,但沿着坐标轴并非总是最佳搜索方向。
Hessian矩阵做策略参数
应当利用更多的搜索信息来加速向全局最优解的收敛,关于适应度函数的信息定义了搜索空间的相关性质,可用适应度函数的Hessian矩阵得到,若将Hessian矩阵用于策略参数,则变异形式变为: x i ′ ( t ) = x i + N ( 0 , H − 1 ) , H x'_i(t)=x_i+N(0,\mathbf H^{-1}),\mathbf H xi′(t)=xi+N(0,H−1),H是Hessian矩阵。但并非所有的适应度函数都有Hessian矩阵(Hessian矩阵需要保证有二阶导),而计算Hessian矩阵的代价也是昂贵的。
协方差矩阵做策略参数
同样可以利用个体策略参数偏差的协方差矩阵 C − 1 \mathbf C^{-1} C−1 来为最佳分析和最大步长的决定提供辅助信息,即 x i ′ ( t ) = x i + N ( 0 , C ) x'_i(t)=x_i+N(0,\mathbf C) xi′(t)=xi+N(0,C),其中 N ( 0 , C ) N(0,\mathbf C) N(0,C)表示一个期望为0,概率密度为 f G ( r ) = d e t C ( 2 π ) n x e − 1 2 r T C r \displaystyle f_G(\mathbf r)=\frac{det \mathbf C}{(\sqrt{2\pi})^{n_x}}e^{-\frac{1}{2}\mathbf r^T\mathbf C\mathbf r} fG(r)=(2π)nxdetCe−21rTCr,其中, C − 1 \mathbf C^{-1} C−1 的对角线元素为方差 σ j 2 \sigma^2_j σj2,非对角线元素为突变步长的协方差。
协方差是通过旋转角度给出的,旋转角度描述了将一个不相关的变异向量转换为相关向量所需要的旋转。若
ω
i
(
t
)
\omega_i(t)
ωi(t) 表示个体
i
i
i 的向量旋转角度,则个体可以通过一个三元组表示:
χ
i
(
t
)
=
(
x
i
(
t
)
,
σ
i
(
t
)
,
ω
i
(
t
)
)
\chi_i(t)=(\mathbf x_i(t),\sigma_i(t),\omega_i(t))
χi(t)=(xi(t),σi(t),ωi(t)),其中
x
i
∈
R
n
x
,
σ
i
∈
R
+
n
x
,
ω
i
(
t
)
∈
R
n
x
(
n
x
−
1
)
/
2
,
且
ω
i
k
(
t
)
∈
(
0
,
2
π
]
,
k
=
1
,
2
,
⋯
,
n
x
(
n
x
−
1
)
/
2
\displaystyle \mathbf x_i\in\mathbb R^{n_x},\sigma_i\in\mathbb R^{n_x}_+,\omega_i(t)\in\mathbb R^{n_x(n_x-1)/2},且 \omega_{ik}(t)\in(0,2\pi],k=1,2,\cdots,n_x(n_x-1)/2
xi∈Rnx,σi∈R+nx,ωi(t)∈Rnx(nx−1)/2,且ωik(t)∈(0,2π],k=1,2,⋯,nx(nx−1)/2 。用旋转角表示个体形状向量
x
i
\mathbf x_i
xi 中的
n
x
n_x
nx 个形状之间的协方差。协方差阵是对称阵,
因此可用一个向量(替代矩阵)来表示旋转角,可使用旋转角计算正交旋转矩阵
T
(
ω
i
)
T(\omega_i)
T(ωi),即
T
(
ω
i
)
=
∏
l
=
1
n
x
−
1
∏
j
=
i
+
1
n
x
R
l
j
(
ω
i
)
\displaystyle T(\omega_i)=\prod^{n_x-1}_{l=1}\prod^{n_x}_{j=i+1}R_{lj}(\omega_i)
T(ωi)=l=1∏nx−1j=i+1∏nxRlj(ωi),这是
n
x
(
n
x
−
1
)
/
2
n_x(n_x-1)/2
nx(nx−1)/2个旋转矩阵的积,每个旋转矩阵
R
l
j
(
ω
i
)
\mathbf R_{lj}(\omega_i)
Rlj(ωi) 是一个
r
l
l
=
c
o
s
(
ω
i
k
)
,
r
l
j
=
−
r
j
l
=
−
s
i
n
(
ω
i
k
)
,
f
o
r
k
=
1
,
⋯
,
n
x
(
n
x
−
1
)
/
2
r_{ll}=cos(\omega_{ik}),r_{lj}=-r_{jl}=-sin(\omega_{ik}),for \;k=1,\cdots,n_x(n_x-1)/2
rll=cos(ωik),rlj=−rjl=−sin(ωik),fork=1,⋯,nx(nx−1)/2的单位矩阵,其中
k
=
1
⇔
(
i
=
1
,
j
=
2
)
,
k
=
2
⇔
(
i
=
1
,
j
=
3
)
k=1\Leftrightarrow(i=1,j=2),k=2\Leftrightarrow(i=1,j=3)
k=1⇔(i=1,j=2),k=2⇔(i=1,j=3)。
策略参数的变异
以
n
σ
n_{\sigma}
nσ表示使用的参数偏差的个数,
n
ω
n_{\omega}
nω表示旋转角度的个数,则有以下几种情况:
(a)
n
σ
=
1
,
n
ω
=
0
n_{\sigma}=1,n_{\omega}=0
nσ=1,nω=0,即对所有表现型形状组份使用同一偏差,无旋转,其变异分布是一个圆,如下图所示。圆心位置表示父代
x
i
\mathbf x_i
xi 的位置,边界表示步长的偏差,其策略参数更新规则为:
σ
i
′
(
t
)
=
σ
i
(
t
)
⋅
e
τ
⋅
N
(
0
,
1
)
\displaystyle \sigma'_i(t)=\sigma_i(t)\cdot e^{\tau\cdot N(0,1)}
σi′(t)=σi(t)⋅eτ⋅N(0,1),其中
τ
=
1
n
x
\tau=\frac{1}{\sqrt{n_x}}
τ=nx1。这种单参数调整计算速度快,但当空间坐标有不同梯度时不够灵活。
(b)
n
σ
=
n
x
,
n
ω
=
0
n_{\sigma}=n_x,n_{\omega}=0
nσ=nx,nω=0,这种情况下,每一组分都有自己的偏差参数,其偏差分布是一个椭圆,如下图所示。这种方法中,计算复杂度随参数的增加而线性增长,但增加的自由度提供了很好的灵活性,也可以利用沿着坐标轴的不同梯度。其策略参数更新如下:
σ
i
j
′
(
t
)
=
σ
i
j
(
t
)
⋅
e
τ
′
⋅
N
(
0
,
1
)
+
τ
⋅
N
j
(
0
,
1
)
\displaystyle \sigma'_{ij}(t)=\sigma_{ij}(t)\cdot e^{\tau'\cdot N(0,1)+\tau\cdot N_j(0,1)}
σij′(t)=σij(t)⋅eτ′⋅N(0,1)+τ⋅Nj(0,1),其中
τ
′
=
1
2
n
x
,
τ
=
1
2
n
x
\displaystyle\tau'=\frac{1}{\sqrt{2n_x}},\tau=\frac{1}{\sqrt{2\sqrt{n_x}}}
τ′=2nx1,τ=2nx1。
(c)
n
σ
=
n
x
,
n
ω
=
n
x
(
n
x
−
1
)
/
2
n_{\sigma}=n_x,n_{\omega}=n_x(n_x-1)/2
nσ=nx,nω=nx(nx−1)/2,这种方法中,除了偏差,还使用了旋转角。其变异分布为一个对坐标轴进行旋转的椭圆变异分布,这种选择使得可以对搜索空间的轮廓进行一个更好的近似。偏差参数更新与(b)相同,旋转角更新规则如下:
ω
i
k
′
(
t
)
=
ω
i
k
(
t
)
+
γ
⋅
N
j
(
0
,
1
)
m
o
d
2
π
,
γ
≈
0.0873
\displaystyle\omega'_{ik}(t)=\omega_{ik}(t)+\gamma\cdot N_j(0,1)mod\,2\pi,\gamma\approx0.0873
ωik′(t)=ωik(t)+γ⋅Nj(0,1)mod2π,γ≈0.0873。附加旋转角提高了灵活性,但使得计算复杂度提升了 1/4。
(d) 1 < n σ < n x 1<n_{\sigma}<n_x 1<nσ<nx,这一方法允许使用不同程度的自由度,对于 j > n σ j>n_{\sigma} j>nσ的部分,偏差采用 n σ n_{\sigma} nσ。
自适应策略参数
强化学习可用于策略参数的自调整,如: σ i j ′ ( t ) = σ i j ( t ) ⋅ e Θ i ( t ) ⋅ ∣ τ ′ ⋅ N ( 0 , 1 ) + τ ⋅ N j ( 0 , 1 ) ∣ \displaystyle \sigma'_{ij}(t)=\sigma_{ij}(t)\cdot e^{\Theta_i(t)\cdot|\tau'\cdot N(0,1)+\tau\cdot N_j(0,1)|} σij′(t)=σij(t)⋅eΘi(t)⋅∣τ′⋅N(0,1)+τ⋅Nj(0,1)∣,其中 Θ i ( t ) \Theta_i(t) Θi(t)是过去 n Θ n_{\Theta} nΘ代中,个体 i 的时间报酬之和,即: Θ i ( t ) = 1 n Θ ∑ t ′ = 0 n Θ θ i ( t − t ′ ) \displaystyle\Theta_i(t)=\frac{1}{n_{\Theta}}\sum^{n_{\Theta}}_{t'=0}\theta_i(t-t') Θi(t)=nΘ1t′=0∑nΘθi(t−t′)。计算个体在每个时间步长上的汇报可使用以下方法:
(1) θ i j ( t ) = { 0.5 i f △ f ( x i ( t ) ) > 0 0 i f △ f ( x i ( t ) ) = 0 − 1 i f △ f ( x i ( t ) ) < 0 \theta_{ij}(t)=\left\{ \begin{aligned} 0.5 & & {if\,\,\triangle f(\mathbf x_i(t))>0}\\ 0 & & {if\,\,\triangle f(\mathbf x_i(t))=0}\\ -1 & & {if\,\,\triangle f(\mathbf x_i(t))<0}\\ \end{aligned} \right. θij(t)=⎩⎪⎨⎪⎧0.50−1if△f(xi(t))>0if△f(xi(t))=0if△f(xi(t))<0, 其中 △ f ( x i ( t ) ) = f ( x i ( t ) ) − f ( x i ( t − 1 ) ) \triangle f(\mathbf x_i(t))=f(\mathbf x_i(t))-f(\mathbf x_i(t-1)) △f(xi(t))=f(xi(t))−f(xi(t−1)),该方法对适应度的恶化的惩罚是很严厉的。
(2) θ i j ( t ) = s i g n { f ( x i ( t ) ) − f ( x i ( t − △ t ) ) } = { 1 i f f ( x i ( t ) ) − f ( x i ( t − △ t ) ) > 0 0 i f f ( x i ( t ) ) − f ( x i ( t − △ t ) ) = 0 − 1 i f f ( x i ( t ) ) − f ( x i ( t − △ t ) ) < 0 \theta_{ij}(t)=sign\{f(\mathbf x_i(t))-f(\mathbf x_i(t-\triangle t))\}=\left\{ \begin{aligned} 1 & & {if\,\,f(\mathbf x_i(t))-f(\mathbf x_i(t-\triangle t))>0}\\ 0 & & {if\,\,f(\mathbf x_i(t))-f(\mathbf x_i(t-\triangle t))=0}\\ -1 & & {if\,\,f(\mathbf x_i(t))-f(\mathbf x_i(t-\triangle t))<0}\\ \end{aligned} \right. θij(t)=sign{f(xi(t))−f(xi(t−△t))}=⎩⎪⎨⎪⎧10−1iff(xi(t))−f(xi(t−△t))>0iff(xi(t))−f(xi(t−△t))=0iff(xi(t))−f(xi(t−△t))<0
(3) θ i j ( t ) = f ( x i ( t ) ) − f ( x i ( t − △ t ) ) , 0 < △ t < t \theta_{ij}(t)=f(\mathbf x_i(t))-f(\mathbf x_i(t-\triangle t)),0<\triangle t<t θij(t)=f(xi(t))−f(xi(t−△t)),0<△t<t,这一方法是基于适应度函数对表现型形状的量化。当前代个体提升越大,酬赏越大;表现越差,惩罚越大;
(4) θ i j ( t ) = ∣ ∣ x i ( t ) − x i ( t − △ t ) ∣ ∣ s i g n { f ( x i ( t ) ) − f ( x i ( t − △ t ) ) } \theta_{ij}(t)=||\mathbf x_i(t)-\mathbf x_i(t-\triangle t)||sign\{f(\mathbf x_i(t))-f(\mathbf x_i(t-\triangle t))\} θij(t)=∣∣xi(t)−xi(t−△t)∣∣sign{f(xi(t))−f(xi(t−△t))},该方法的酬赏(惩罚)与表现型空间的步长成比例。
此外,还有其他方法,这里不一一列举。
交叉与重组
交叉
ES中,交叉对所有的变量值进行操作,记
(
μ
/
ρ
,
+
,
λ
)
(\mu/\rho,+,\lambda)
(μ/ρ,+,λ)为对父代的
ρ
\rho
ρ 个个体进行交叉,通常使用以下两种方法中的一种:
(1)局部交叉(
ρ
=
2
\rho=2
ρ=2 ):从随机选择的两个父本中的变量重组生成新个体;
(2)全局交叉(
2
<
ρ
<
μ
2<\rho<\mu
2<ρ<μ ):将整个种群的所有个体作为新个体组成成分的潜在来源。
ρ
\rho
ρ越大,产生子代的多样性就越大,大的
ρ
\rho
ρ值能够有效提高ES的探索能力。
重组
基于局部交叉和全局交叉,重组有以下两种方式:
离散重组:直接利用父代的某些参数值构建子代,即子代的某个参数值与某个父代的参数值相同。对于表现型或策略参数向量的每个组份,都是从父代中随机选择的。该方式记为
(
μ
/
ρ
D
,
+
,
λ
)
(\mu/\rho_D,+,\lambda)
(μ/ρD,+,λ)。
调和重组:该方法子代的形状参数是父代不同个体不同权重的性状参数之和,即子代的某个参数值是其父代两个对应参数值之间的某个点,即 x i n e w = x A , i + C ⋅ ( x B , i − x A , i ) x^{new}_i=x_{A,i}+C\cdot(x_{B,i}-x_{A,i}) xinew=xA,i+C⋅(xB,i−xA,i),其中A和B代表两个父本,i是是其第 i 个参数,C 是常数。该方式记为 ( μ / ρ I , + , λ ) (\mu/\rho_I,+,\lambda) (μ/ρI,+,λ)。
实际上,对策略参数采用离散重组的局部形式和调和重组的局部形式往往可以获得最佳结果。ES中,主要有五种主要的重组方式:
(1)无重组:若父代为
χ
i
(
t
)
\chi_i(t)
χi(t),则子代与父代相同,即
χ
~
l
(
t
)
=
χ
i
(
t
)
\tilde \chi_l(t)=\chi_i(t)
χ~l(t)=χi(t);
(2)局部离散重组(两个父代): χ ~ l ( t ) = { χ i 1 j ( t ) , i f U j ( 0 , 1 ) ≤ 0.5 χ i 2 j ( t ) o t h e r w i s e \tilde \chi_l(t)=\left\{ \begin{aligned} \chi_{i_1j}(t), & & {if\,\,U_j(0,1)\le0.5}\\ \chi_{i_2j}(t) & & otherwise\\ \end{aligned} \right. χ~l(t)={χi1j(t),χi2j(t)ifUj(0,1)≤0.5otherwise,
子代 χ ~ l ( t ) = ( x l ~ ( t ) , σ l ~ ( t ) , ω l ~ ( t ) ) \tilde \chi_l(t)=(\tilde{\mathbf x_l}(t),\tilde{\sigma_l}(t),\tilde{\omega_l}(t)) χ~l(t)=(xl~(t),σl~(t),ωl~(t)) 从所有父代 { χ i 1 ( t ) = ( x i 1 ( t ) , σ i 1 ( t ) , ω i 1 ( t ) ) , χ i 2 ( t ) = ( x i 2 ( t ) , σ i 2 ( t ) , ω i 2 ( t ) ) \chi_{i_1}(t)=(\mathbf x_{i_1}(t),\sigma_{i_1}(t),\omega_{i_1}(t)),\chi_{i_2}(t)=(\mathbf x_{i_2}(t),\sigma_{i_2}(t),\omega_{i_2}(t)) χi1(t)=(xi1(t),σi1(t),ωi1(t)),χi2(t)=(xi2(t),σi2(t),ωi2(t))} 中继承;
(3)局部调和重组(两个父代):
x ~ l j = r ⋅ x i 1 j ( t ) + ( 1 − r ) ⋅ x i 2 j ( t ) , ∀ j = 1 , ⋯ , n x ; \tilde x_{lj}=r\cdot x_{i_1j}(t)+(1-r)\cdot x_{i_2j}(t),\;\forall j=1,\cdots,n_x; x~lj=r⋅xi1j(t)+(1−r)⋅xi2j(t),∀j=1,⋯,nx;
σ ~ l j = r ⋅ σ i 1 j ( t ) + ( 1 − r ) ⋅ σ i 2 j ( t ) , ∀ j = 1 , ⋯ , n x ; \tilde \sigma_{lj}=r\cdot \sigma_{i_1j}(t)+(1-r)\cdot \sigma_{i_2j}(t),\;\forall j=1,\cdots,n_x; σ~lj=r⋅σi1j(t)+(1−r)⋅σi2j(t),∀j=1,⋯,nx;
ω ~ l k = [ r ⋅ ω i 1 k ( t ) + ( 1 − r ) ⋅ ω i 2 k ( t ) ] m o d 2 π , ∀ k = 1 , ⋯ , n x ( n x − 1 ) ; \tilde \omega_{lk}=[r\cdot \omega_{i_1k}(t)+(1-r)\cdot \omega_{i_2k}(t)]\,mod\,2\pi,\;\forall k=1,\cdots,n_x(n_x-1); ω~lk=[r⋅ωi1k(t)+(1−r)⋅ωi2k(t)]mod2π,∀k=1,⋯,nx(nx−1);
(4)全局离散重组(多个父代): χ ~ l j ( t ) = { χ i 1 j ( t ) , i f U j ( 0 , 1 ) ≤ 0.5 χ r j j ( t ) o t h e r w i s e \tilde \chi_{lj}(t)=\left\{ \begin{aligned} \chi_{i_1j}(t), & & {if\,\,U_j(0,1)\le0.5}\\ \chi_{r_jj}(t) & & otherwise\\ \end{aligned} \right. χ~lj(t)={χi1j(t),χrjj(t)ifUj(0,1)≤0.5otherwise,其中 r j ∼ Ω l r_j\sim\Omega_l rj∼Ωl, Ω l \Omega_l Ωl是所选的用具交叉的 ρ \rho ρ 个父本的集合索引。
(5)全局调和重组(多个父代):
可选方法有:a.所有父代的平均值产生子代
χ
~
l
(
t
)
=
(
1
ρ
∑
i
=
1
ρ
x
i
(
t
)
,
1
ρ
∑
i
=
1
ρ
σ
i
(
t
)
,
1
ρ
∑
i
=
1
ρ
ω
i
(
t
)
)
\displaystyle \tilde \chi_l(t)=(\frac{1}{\rho}\sum^{\rho}_{i=1}\mathbf x_{i}(t),\frac{1}{\rho}\sum^{\rho}_{i=1}\sigma_{i}(t),\frac{1}{\rho}\sum^{\rho}_{i=1}\omega_{i}(t))
χ~l(t)=(ρ1i=1∑ρxi(t),ρ1i=1∑ρσi(t),ρ1i=1∑ρωi(t));
b.最优个和其他个体的组合: x ~ l ( t ) = r y ~ ( t ) + ( 1 − r ) 1 ρ ∑ i ∈ Ω l ρ x i ( t ) \displaystyle \tilde x_l(t)=r\tilde{\mathbf y}(t)+(1-r)\frac{1}{\rho}\sum^{\rho}_{i\in\Omega_l}\mathbf x_{i}(t) x~l(t)=ry~(t)+(1−r)ρ1i∈Ωl∑ρxi(t),其中 y ~ ( t ) \tilde{\mathbf y}(t) y~(t)是当前代的最优个体。这一策略确保了子代分布在最优个体周边。
选择
自然界中,个体能否生存并非依赖于个体适应度值的排序,而是环境和个体的遭遇;因此,其适应度值的测定是有一定误差的,而有可能的提升也可能丢失。这表明,选择是依赖于概率的,因此,不能将很多最好的个体传给下一代。从模拟退火算法可知,有时一步倒退在长远来看是很有意义的,即自然进化产生了次优个体,因为最终的提升很可能是通过不那么明显的途径进行的。
ES同其他进化计算方法的不同之处也在于选择,ES中产生的后代通常很多,在此基础上进行选择。大多是使用的是 ( μ , λ ) (\mu,\lambda) (μ,λ)方法或 ( μ + , λ ) (\mu^+,\lambda) (μ+,λ)方法。有关选择方法,可以参考遗传算法GA中的描述。 ( μ + , λ ) (\mu^+,\lambda) (μ+,λ)方法可被扩展为 ( μ , κ , λ ) (\mu,\kappa,\lambda) (μ,κ,λ),其中 κ \kappa κ 指个体的最大寿命(可以存活几代),一旦个体超过了寿命,则不能被选择到下一代。 ( μ , λ ) (\mu,\lambda) (μ,λ)等价于 ( μ , 1 , λ ) (\mu,1,\lambda) (μ,1,λ)。
变异
由交叉重组产生子代 χ ~ l ( t ) \tilde \chi_{l}(t) χ~l(t),进行变异成为 χ ~ l ′ ( t ) \tilde \chi'_{l}(t) χ~l′(t),其表示如下: x l ′ ( t ) = x ~ l ( t ) + △ x l ( t ) \mathbf x'_l(t)=\tilde x_l(t)+\triangle\mathbf x_l(t) xl′(t)=x~l(t)+△xl(t)。 n σ n_{\sigma} nσ表示使用的参数偏差的个数,突变有以下几种:
(1)只考虑策略参数偏差的变异,则每个后代的变异如下:
△
x
l
j
(
t
)
=
{
σ
l
(
t
)
⋅
N
j
(
0
,
1
)
,
∀
j
=
1
,
⋯
,
n
x
.
i
f
n
σ
=
1
σ
l
j
(
t
)
⋅
N
j
(
0
,
1
)
,
∀
j
=
1
,
⋯
,
n
x
.
i
f
n
σ
=
n
x
{
σ
l
j
(
t
)
⋅
N
j
(
0
,
1
)
,
∀
j
=
1
,
⋯
,
n
σ
.
σ
l
n
σ
(
t
)
⋅
N
j
(
0
,
1
)
,
∀
j
=
n
σ
+
1
,
⋯
,
n
x
.
i
f
1
<
n
σ
<
n
x
\displaystyle \triangle x_{lj}(t)=\left\{ \begin{aligned} \sigma_l(t)\cdot N_j(0,1),\;\forall j=1,\cdots,n_x. & & {if\,\,n_{\sigma}=1}\\ \sigma_{lj}(t)\cdot N_j(0,1),\;\forall j=1,\cdots,n_x. & & {if\,\,n_{\sigma}=n_x}\\ \left\{ \begin{aligned} \sigma_{lj}(t)\cdot N_j(0,1),\;\forall j=1,\cdots,n_{\sigma}. & & \\ \sigma_{ln_{\sigma}}(t)\cdot N_j(0,1),\;\forall j=n_{\sigma}+1,\cdots,n_x. & & \end{aligned} \right. & & if\;\;1<n_{\sigma}<n_x\\ \end{aligned} \right.
△xlj(t)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧σl(t)⋅Nj(0,1),∀j=1,⋯,nx.σlj(t)⋅Nj(0,1),∀j=1,⋯,nx.{σlj(t)⋅Nj(0,1),∀j=1,⋯,nσ.σlnσ(t)⋅Nj(0,1),∀j=nσ+1,⋯,nx.ifnσ=1ifnσ=nxif1<nσ<nx
(2)考虑偏差和旋转角,则 △ x l ( t ) = T ( ω l ~ ( t ) ) S ( σ l ~ ( t ) ) N ( 0 , 1 ) \triangle\mathbf x_l(t)=\mathbf T(\tilde{\omega_l}(t))\mathbf S(\tilde{\sigma_l}(t))\mathbf N(0,1) △xl(t)=T(ωl~(t))S(σl~(t))N(0,1);
其中, T ( ω l ~ ( t ) ) = ∏ a = 1 n x − 1 ∏ b = a + 1 n x R a b ( ω ~ l ( t ) ) \displaystyle T(\tilde{\omega_l}(t))=\prod^{n_x-1}_{a=1}\prod^{n_x}_{b=a+1}\mathbf R_{ab}(\tilde{\omega}_l(t)) T(ωl~(t))=a=1∏nx−1b=a+1∏nxRab(ω~l(t))是正交旋转矩阵,是 n x ( n x − 1 ) / 2 n_x(n_x-1)/2 nx(nx−1)/2个旋转矩阵的积;
每个旋转矩阵 R a b ( ω i ) \mathbf R_{ab}(\omega_i) Rab(ωi) 是一个 r a a = c o s ( ω l k ) , r a b = − r b a = − s i n ( ω l k ) , f o r k = 1 , ⋯ , n x ( n x − 1 ) / 2 r_{aa}=cos(\omega_{lk}),r_{ab}=-r_{ba}=-sin(\omega_{lk}),for\;k=1,\cdots,n_x(n_x-1)/2 raa=cos(ωlk),rab=−rba=−sin(ωlk),fork=1,⋯,nx(nx−1)/2的单位矩阵,其中 k = 1 ⇔ ( i = 1 , j = 2 ) , k = 2 ⇔ ( i = 1 , j = 3 ) k=1\Leftrightarrow(i=1,j=2),k=2\Leftrightarrow(i=1,j=3) k=1⇔(i=1,j=2),k=2⇔(i=1,j=3);
而 S ( σ l ~ ( t ) ) = d i a g ( σ ~ l 1 ( t ) , σ ~ l 2 ( t ) , ⋯ , σ ~ l n x ( t ) ) \mathbf S(\tilde{\sigma_l}(t))=diag(\tilde\sigma_{l1}(t),\tilde\sigma_{l2}(t),\cdots,\tilde\sigma_{ln_x}(t)) S(σl~(t))=diag(σ~l1(t),σ~l2(t),⋯,σ~lnx(t))是代表偏差的对角阵。
(3)定向突变(Directed Mutation),其表现在优先给予特定的坐标方向。定向变异的结果是一个对称变异概率分布,如下图所示, x 2 x_2 x2方向的步骤大于 x 1 x_1 x1的步长,是偏好方向,每个表现型组份是独立变异的,因此使用一个一维的对称概率密度函数就可以进行表达,其形式可以为: f D ( x ) = { 2 π σ ( 1 + 1 + c ) ⋅ e − x 2 σ i f x < 0 2 π σ ( 1 + 1 + c ) ⋅ e − x 2 σ ( 1 + c ) i f x ≥ 0 \displaystyle f_D(x)=\left\{ \begin{aligned} \frac{2}{\sqrt{\pi\sigma}(1+\sqrt{1+c})}\cdot e^{-\frac{x^2}{\sigma}} & & {if\,\,x<0}\\ \frac{2}{\sqrt{\pi\sigma}(1+\sqrt{1+c})}\cdot e^{-\frac{x^2}{\sigma (1+c)}} & & {if\,\,x\ge0}\\ \end{aligned} \right. fD(x)=⎩⎪⎪⎨⎪⎪⎧πσ(1+1+c)2⋅e−σx2πσ(1+1+c)2⋅e−σ(1+c)x2ifx<0ifx≥0,其中, c > 0 c>0 c>0是一个正向值。
直接变异方法虽然只使用策略参数的偏差,但对每一个
σ
j
\sigma_j
σj都有相应的方向值
c
j
c_j
cj,对给定的
2
n
x
2n_x
2nx个策略参数,
c
和
σ
c和\sigma
c和σ都是自适应的。因此,他的计算相较于
n
x
(
n
x
−
1
)
/
2
n_x(n_x-1)/2
nx(nx−1)/2个旋转向量的运算是更有效的,同时也提供了比只使用偏差更多的倾向于搜索方向的信息。若
D
(
c
,
σ
)
D(c,\sigma)
D(c,σ)代表对称分布,那么则有
△
x
i
j
(
t
)
=
D
j
(
c
i
j
(
t
)
,
σ
i
j
(
t
)
)
\triangle x_{ij}(t)=D_j(c_{ij}(t),\sigma_{ij}(t))
△xij(t)=Dj(cij(t),σij(t))。
更多推荐
所有评论(0)