最近复写一个DE[1](差分进化算法)参数的自适应策略的变体L-SHADE[2](CEC冠军算法)的matlab版本,发现其提出的自适应策略对DE改进效果明显,于是把其前身JADE[3]整合到一起做个笔记(公式太多,就直接用文章里的截图了)。
简单记录差分进化算法的进化机制:初始化——变异——交叉——选择,其中关键参数为变异步骤的变异系数F与交叉步骤的交叉概率CR,经典DE算法中变异系数F设定为固定值0.5,而交叉概率CR则随机从[0,1]中产生。
https://github.com/P-N-Suganthan/CODES 大家可以直接从Suganthan的网址下载。
JADE
JADE的改进为如下几个方面:
**1.提出新的变异策略:**DE/current-to-best/1, 公式如下
其中,Xbest,g为随机选择一个种群中适应度排序前p*Np(Np为种群规模)的个体,p为给定比例(文中设定P为[5%,25%])。Xr1,g为种群中随机选择的个体,Xr2,g为当前种群与外部存档集合中随机选择的个体,外部存档A储存每代进化中变异交叉失败的个体,其规模固定为NP,超出规模则随机删减其中个体。
2.自适应的参数调整策略
JADE针对变异系数F与交叉概率CR的自适应策略如下:
首先初始化两个参数的Mu
每一代进化中,参数更新方式如下
其中randn为状态分布,randc则为柯西分布。我认为这里选择柯西分布原因如下:大家知道,对比正态分布,柯西分布的尾部更为平滑,即选取到分布两侧值的概率更大,所以文章提到柯西分布使得变异系数F更为多样,可以避免算法早熟收敛。
每一代进化中,Mu的更新方式如下
其中,SF,SCR为成功参数集合,即本代交叉变异有效的个体对应的参数F,CR构成的集合。c为给定的值(文章给定1/c=[5,20])。meanA为标准的算数均值,meanL为 Lehmer mean,其作用是传递更大的F,以提高收敛速率,计算公式如下:
个人理解其自适应参数策略如下: 将成功进化的个体对应的参数记录下来,并依据这些参数选取对应的均值,依照均值构建概率分布并在其中选择下一代参数。这样逐渐的随着迭代参数会自适应调节,且不会使得参数过于一致从而失去了多样性。
LSHADE
对比上述的JADE,LSHADE采用相同的变异策略DE/current-to-best/1,而其主要改进为参数的自适应调节策略:
1.基于历史记忆的参数策略
初始化历史集 MCR(1:H)=0.5,MF(1:H)=0.5
其中,H为给定值(文章给定H=100)。
参数的更新
其中,ri为[1,H]间的随机整数,┴为自定义终止值,即当Mcr满足该终止值后,CR置零,强制每代中仅一个维度进行交叉以提高收敛速率。
历史集的更新
文章给出的伪码如下:
其中SF,SCR仍为成功参数集合。即每一次迭代更新历史集中的一个位置的值,超出位置H则从位置1进行新一轮更新。更新过程中,若成功参数集为空,则该位置学习上一位置的值。否则采用meanWL进行计算,其公式如下:
其中f()为对应适应度值,该公式即通过适应度变化幅度确定权重在原本的Lehmer mean中考虑了权重的影响。
值得注意的是,从历史更新伪代码中可见,当某一代Scr均小于零以后,MCR的值设为终止值,同时CR强制置零。而由于上一代MCR终止,会使得之后所有的MCR终止。这个策略可能是认为所有Scr均小于零意味着注重于局部开采的个体更有益于当前的搜索,于是不再对CR进行更新从而强制所有的个体开始专注开采。
2.群体规模的自适应
LSHADE定义了群体规模的自适应方法
其中Ninit为初始种群规模,Nmin为最终种群规模(文章给定为4)MAX_NEF为最大适应度评价次数,NEF为当前适应度评价次数。同时每代中多出的个体将依适应度删去较差的。
这种设计可能是为了在后期将算法专注于开采,由于将不必要的个体删除,使得同样适应度评价次数下保留的个体可以多次进化以挖掘最优解。
参考文献
[1] R. Storn and K. Price, “Differential Evolution - A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces,” J. Global Optimiz., vol. 11, no. 4, pp. 341–359, 1997.
[2] Tanabe R, Fukunaga AS. Improving the search performance of SHADE using linear population size reduction. In: IEEE Congress on Evolutionary Computation (CEC), Beijing, China: IEEE Press, 2014.
[3] J. Zhang and A. C. Sanderson, “JADE: Adaptive Differential Evolution With Optional External Archive,” IEEE Tran. Evol. Comput., vol. 13, no. 5, pp. 945–958, 2009.