本文内容来自公众号:KAU的云实验台
差分进化算法(Differential Evolution, DE)[1]作为进化算法中的一个重要分支,是R.Stom和K.Price于1995年提出,在1996年首届ICEC竞赛上就获得第三名的成绩,具有实现简单、理解容易收敛速度快等优点。但DE对控制参数(CR和F)依赖性强,同时其变异策略对算法收敛性能影响大,面对复杂函数存在陷入局部最优的问题。因此,众多DE变体被提出,DE算法已经发展成为进化计算领域中具有极强竞争力和生命力的优化算法之一。
本文要介绍的带有外部归档的自适应DE(JADE)是Zhang等[2]于2009年提出,是DE的一个重要变体,其基础上衍变出的著名变体SHADE,包括后来CEC2014竞赛冠军算法L-SHADE等CEC冠军算法都与JADE有关。
本文中,KAU将介绍JADE的原理,并给出其MATLAB和Python的实现。后续也将更新SHADE、L-SHADE等冠军算法的原理和实现,感兴趣可以关注哦~
00 目录
1 带有外部归档的自适应DE(JADE)原理
2 代码目录
3 算法性能
4 源码获取
01带有外部归档的自适应DE(JADE)原理
JADE较之DE主要的改进是实现了带有可选存档的变异策略“DE/current-to-pbest”,并以自适应方式控制参数F和CR。传统DE算法在KAU前面的文章介绍过,这里不再赘述,下面具体介绍JADE的策略。
1.1 DE/current-to-pbest/1
DE/current-to-pbest/1变异策略不仅仅只使用最佳个体的信息,它还使用了其他较好个体的信息,将这些个体之间的差值作为指导种群进化的方向。并且,这个算法还将被淘汰的个体也保存下来为算法所用。令集合A由那些被淘汰的个体组成的集合,P为当代种群组成的集合,那么DE/current-to-pbest/1变异策略可以用下式表达:
其中,Xpbestg表示从当前种群中适应度前p个个体中随机选择,Xi,g是第g次迭代的第i个个体,Xr1,g是从集合P中随机选择的个体,Xr2,g是从P∪A中随机选择的个体。
1.2 自适应参数调节机制
交叉概率CRi和放缩因子Fi又下式生成:
其中,randn()为正态分布函数,randc()为柯西分布函数,uCR和uF初始值为0.5,然后根据下式迭代更新:
其中,c∈(0,1),是控制因子; meanA(SCR)表示对集合SCR求均值;meanL(SF)表示对集合SF求Lehmer平均值。
1.3 JADE算法步骤
基于以上认识,在本节将阐述JADE算法流程。
步骤1:初始化交叉概率uCR和uF(即0.5)。设置最大迭代次数gmax和迭代器g=0。初始化集合SCR和SF,SCR用于存储成功变异的个体的交叉概率因子,SF用于存储成功进行变异的个体的缩放因子;
步骤2:随机生成初始种群P
步骤3:计算种群P的适应度,若达到最大迭代次数,则算法结束;
步骤4:按照式(2)生成服从正态分布的交叉概率CRi和服从柯西分布的缩放因子Fi。同时,若生成的Cri或Fi超过范围[0,1],则将其赋予边界值0或1。
步骤5:随机从当前种群中前p个最优个体中选择一个个体,记为Xpbestg。再随机选择两个个体Xr1,g和Xr2,g,且所选个体不重复。
步骤6:按照式(1)进行变异操作,再进行交叉和选择操作。
交叉操作:
其中,jrand为[1,dim]之间的随机整数;rand为(0,1)之间的随机数;Ujig为第g次迭代的第i个个体的第j维度。
选择操作:
即贪婪策略,保留适应度更好的个体。若Ui,g适应度更好,则Xi,g放入淘汰者集合A,并且交叉概率Cri和Fi将放入集合SCR和SF中。
步骤7:迭代器g=g+1,跳转到步骤3;
02 代码目录
前面讲解了JADE算法的步骤,下面给出其代码实现,代码包含Matlab、Python文件,并给出JADE算法源文献:
代码都经过作者重新注释,代码更清爽,可读性强,其中Readme给出了一些注意:
部分代码:
03 算法性能
采用CEC测试函数初步检验其寻优性能
04 源码获取
在公众号(KAU的云实验台)后台回复 JADE 即可
参考文献
[1] Storn R,Price K. Differential evolution: A simple and efficient adaptive schemeforglobal optimization over continuous spaces. Berkeley: InternationalComputer Science Institute (ICS),1995
[2] J. Zhang and A. C. Sanderson, “JADE: Adaptive Differential Evolution With Optional External Archive,” in IEEE Transactions on Evolutionary Computation, vol. 13, no. 5, pp. 945-958, Oct. 2009, doi: 10.1109/TEVC.2009.2014613.
另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。
如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。