MO-CMA-ES

今天要介绍的文献是《Covariance Matrix Adaptation for Multi-objective Optimization》。该文献提出了MO-CMA-ES算法,该算法是CMA-ES在多目标优化问题上的扩展。

1. (1+ λ \lambda λ)-CMA-ES

所谓(1+ λ \lambda λ) 是指该算法的父代个体数量为1,所产生的子代个体数量为 λ \lambda λ,使用’+'选择算子(一种精英策略,将父代和子代合在一起选择出最好的个体进入下一代)。算法伪码如下
MO-CMA-ES_第1张图片
MO-CMA-ES_第2张图片
算法流程很简单。每个个体都用一个五元组 a a a来表示,即 a = [ x , p ‾  succ  , σ , p c , C ] a=\left[\boldsymbol{x}, \overline{p}_{\text { succ }}, \sigma, \boldsymbol{p}_{c}, \boldsymbol{C}\right] a=[x,p succ ,σ,pc,C],其中 x \boldsymbol{x} x表示决策变量; p ˉ s u c c ∈ [ 0 , 1 ] \bar{p}_{\mathrm{succ}}\in[0,1] pˉsucc[0,1]为平均成功率; σ \sigma σ表示全局步长; p c \boldsymbol{p}_{c} pc为进化路径; C \boldsymbol{C} C为协方差。首先初始化种群 a p a r e n t ( 0 ) = [ x , p ˉ s u c c t a r g e t , σ 0 , 0 , I ] a^{(0)}_{parent}=[\mathrm{x},\bar{p}_\mathrm{succ}^\mathrm{target},\sigma_0,\boldsymbol{0},\boldsymbol{I}] aparent(0)=[x,pˉsucctarget,σ0,0,I](种群大小为1),参数的建议值如表1所示。接下来对多元正态分布 N ( x  parent  ( g ) , σ ( g ) 2 C ( g ) ) \mathcal{N}\left(x_{\text { parent }}^{(g)}, \sigma^{(g)^{2}} C^{(g)}\right) N(x parent (g),σ(g)2C(g))进行采样,得到 λ \lambda λ个子代个体的决策变量 x k ( g + 1 ) \boldsymbol{x}_{k}^{(g+1)} xk(g+1)。然后分别更新步长和协方差矩阵,重复以上操作,直到满足终止条件。更新步长与更新协方差矩阵这两个步骤的伪码如下。
MO-CMA-ES_第3张图片
该步骤的输入参数有两个:(1)父代个体;(2)成功率 p s u c c = λ s u c c ( g + 1 ) / λ p_{\mathrm{succ}}=\lambda_{\mathrm{succ}}^{(g+1)} / \lambda psucc=λsucc(g+1)/λ,其中
λ s u c c ( g + 1 ) = ∣ { i = 1 , … , λ ∣ f ( x i ( g + 1 ) ) ≤ f ( x p a r e n t ( g ) ) } ∣ \lambda_{\mathrm{succ}}^{(g+1)}=\left|\left\{i=1, \ldots, \lambda | f\left(\boldsymbol{x}_{i}^{(g+1)}\right) \leq f\left(\boldsymbol{x}_{\mathrm{parent}}^{(g)}\right)\right\}\right| λsucc(g+1)={i=1,,λf(xi(g+1))f(xparent(g))},即 p s u c c p_{\mathrm{succ}} psucc表示所生成的个体中比父代好的个体的比例。, c p ( 0 < c p ≤ 1 ) c_p(0<c_p\leq1) cp(0<cp1)为学习率, d d d为阻尼系数。ES中的一个原则是当成功率较大时应该增大步长 σ \sigma σ,反之当成功率较小时应减小步长。这个原则通过exp函数的参数体现,即当 p ˉ s u c c > p s u c c t a r g e t \bar{p}_{\mathrm{succ}} > p^{\mathrm{target}}_{\mathrm{succ}} pˉsucc>psucctarget时, σ \sigma σ会增大,反之当 p ˉ s u c c < p s u c c t a r g e t \bar{p}_{\mathrm{succ}} < p^{\mathrm{target}}_{\mathrm{succ}} pˉsucc<psucctarget时, σ \sigma σ会减小,而当 p ˉ s u c c = p s u c c t a r g e t \bar{p}_{\mathrm{succ}} = p^{\mathrm{target}}_{\mathrm{succ}} pˉsucc=psucctarget时, σ \sigma σ保持不变。当 p s u c c t a r g e t < 0.5 p^{\mathrm{target}}_{\mathrm{succ}}<0.5 psucctarget<0.5时,exp函数的参数值介于 − 1 / d -1/d 1/d 1 / d 1/d 1/d之间。因此阻尼系数 d d d控制了步长的变化率。MO-CMA-ES_第4张图片
Algorithm 1中的 f ( x 1 : λ ( g + 1 ) ) f(\boldsymbol{x}_{1 : \lambda}^{(g+1)}) f(x1:λ(g+1))表示所产生的 λ \lambda λ个子代个体中最好的一个个体。也就是说,当子代个体中最好的个体比父代还要好时,就用这个个体作为下一代的父代个体,并更新协方差矩阵。同样,对于更新协方差矩阵这一步骤也有两个输入参数(1)更新后的父代个体 a a a;(2)父代个体的变化量 x s t e p = ( x  parent  ( g + 1 ) − x  parent  ( g ) ) / σ  parent  ( g ) x_{step}=(\boldsymbol{x}_{\text { parent }}^{(g+1)}-\boldsymbol{x}_{\text { parent }}^{(g)})/\sigma_{\text { parent }}^{(g)} xstep=(x parent (g+1)x parent (g))/σ parent (g)。进化路径 p c \boldsymbol{p}_c pc依赖于 p ˉ s u c c \bar{p}_{\mathrm{succ}} pˉsucc的值,当 p ˉ s u c c > p t h r e s h \bar{p}_{\mathrm{succ}}>p_\mathrm{thresh} pˉsucc>pthresh( p t h r e s h < 0.5 p_\mathrm{thresh}<0.5 pthresh<0.5)时,进化路径的更新停止。这可以防止当步长过小时, C \boldsymbol{C} C的坐标轴过快增长。

2. MO-CMA-ES

基于 (1+ λ \lambda λ)-CMA-ES,该文又提出了针对多目标优化问题的MO-CMA-ES算法。该算法采用了NSGA-II中的非支配排序,并将拥挤度或HV值作为额外的选择标准。在 λ M O × \lambda_{\mathrm{MO}}\times λMO× (1+ λ \lambda λ)-MO-CMA-ES算法中,将维持 λ M O \lambda_{\mathrm{MO}} λMO个(1+ λ \lambda λ)-CMA-ES中的种群。取 λ = 1 \lambda=1 λ=1 λ M O × \lambda_{\mathrm{MO}}\times λMO×(1+1)-CMA-ES算法伪码如下:
MO-CMA-ES_第5张图片
测试该算法时,感觉其的效果并不是很好。在处理带Box-constraint的问题时,MO-CMA总会产生大量可行域外的解,导致搜索效率很低。不过由于其具有旋转不变性,在旋转问题上的效果还是好过使用SBX+PM的EA。

此仅为本人阅读论文时的笔记,若有理解有误的地方还请批评指正。

你可能感兴趣的:(EA)