引言
差分进化算法(Differential Evolution,简称DE)是一种全局优化算法,由Storn和Price于1995年首次提出。它主要用于求解实数优化问题,属于演化算法的一种。DE算法以其结构简单、容易实现、收敛快速和鲁棒性强等特点,在多个领域得到了广泛应用。
算法流程
-
初始化种群:确定差分进化算法控制参数,如种群大小NP、缩放因子F与杂交概率CR,并随机产生初始种群。
-
变异:从种群中随机选取两个个体的差向量作为第三个个体的随机变化源,将差向量加权后按照一定的规则与第三个个体求和而产生变异个体。
-
交叉:变异个体与某个预先决定的目标个体进行参数混合,生成试验个体。
-
选择:比较试验个体和当前个体的适应度,选择适应度更好的个体作为下一代种群的成员。
-
迭代:通过反复迭代上述过程,直至满足终止条件(如达到最大迭代次数或适应度达到预定阈值),最终得到问题的近似最优解。
本期介绍了几款优秀的DE变体:SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin。
SaDE(Self-adaptive Differential Evolution)
SaDE算法是一种改进的差分进化(DE)算法,其核心特点在于能够自适应地调整算法的控制参数,以适应不同阶段的优化需求。这种算法不需要预先指定学习策略和两个控制参数F(缩放因子)与CR(交叉概率),而是在进化过程中根据学习经验逐渐自我适应这些参数。
A. K. Qin and P. N. Suganthan, "Self-adaptive differential evolution algorithm for numerical optimization," 2005 IEEE Congress on Evolutionary Computation, Edinburgh, UK, 2005, pp. 1785-1791 Vol. 2, doi: 10.1109/CEC.2005.1554904. https://ieeexplore.ieee.org/document/1554904
JADE(Adaptive Differential Evolution with Optional External Archive)
JADE算法能够自动调整控制参数,如缩放因子(F)和交叉概率(CR),以适应优化问题的特性,从而提高算法的鲁棒性。
JADE算法引入了“DE/current-to-pbest”变异策略,这是对经典“DE/current-to-best”策略的扩展。在“DE/current-to-pbest”中,不仅考虑当前个体和最好个体之间的差异,还可能包含历史最优个体的信息,这样可以增加种群的多样性,避免过早收敛,同时也能改善算法的收敛性能。
JADE算法引入了可选的外部归档机制,用于存储历史最优解。这些历史数据可以提供优化过程中的进步方向信息,帮助算法跳出局部最优,提高全局搜索能力。
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. https://ieeexplore.ieee.org/document/5208221
SHADE(Success-history based Adaptive Differential Evolution)
SHADE算法是一种基于差分进化(DE)算法的自适应优化算法,由Tanabe和Fukunaga于2013年提出。SHADE算法在JADE的基础上进行了改进,主要通过引入成功历史记忆机制来优化控制参数,从而提高算法的收敛性和搜索能力。
R. Tanabe and A. Fukunaga, "Success-history based parameter adaptation for Differential Evolution," 2013 IEEE Congress on Evolutionary Computation, Cancun, Mexico, 2013, pp. 71-78, doi: 10.1109/CEC.2013.6557555. https://ieeexplore.ieee.org/document/6557555
LSHADE(Linear-SHADE)
LSHADE(Linear-SHADE)优化算法是一种基于差分进化(DE)算法的优化算法,其核心特点在于引入了线性种群规模缩减(Linear Population Size Reduction, LPSR)机制。
R. Tanabe and A. S. Fukunaga, "Improving the search performance of SHADE using linear population size reduction," 2014 IEEE Congress on Evolutionary Computation (CEC), Beijing, China, 2014, pp. 1658-1665, doi: 10.1109/CEC.2014.6900380
LSHADE_SPACMA
LSHADE_SPACMA优化算法是一种结合了LSHADE(Large Population Size Reduction SHADE)和CMA-ES(Covariance Matrix Adaptation Evolution Strategy)的混合优化算法
A. W. Mohamed, A. A. Hadi, A. M. Fattouh and K. M. Jambi, "LSHADE with semi-parameter adaptation hybrid with CMA-ES for solving CEC 2017 benchmark problems," 2017 IEEE Congress on Evolutionary Computation (CEC), Donostia, Spain, 2017, pp. 145-152, doi: 10.1109/CEC.2017.7969307.
LSHADE_EpSin
-
LSHADE_EpSin算法通过引入一种新的正弦参数自适应框架来改善L-SHADE算法的性能。这种框架能够自动调整差分进化算法中的缩放因子(F)的值。
-
该算法采用了两种正弦公式的混合:非自适应正弦递减调整和基于历史的自适应正弦递增调整。这种正弦集成方法的目标是在已找到的最佳解的利用和未访问区域的探索之间找到有效的平衡。
-
在后期代数中,LSHADE_EpSin还使用了基于高斯步行的局部搜索方法,以增强其利用能力
N. H. Awad, M. Z. Ali, P. N. Suganthan and R. G. Reynolds, "An ensemble sinusoidal parameter adaptation incorporated with L-SHADE for solving CEC2014 benchmark problems," 2016 IEEE Congress on Evolutionary Computation (CEC), Vancouver, BC, Canada, 2016, pp. 2958-2965, doi: 10.1109/CEC.2016.7744163.
03. 对比验证
在经典23个函数进行验证。
参考文献
几款性能优秀的差分进化算法DE-附Matlab免费代码
Matlab代码下载
微信搜索并关注-优化算法侠(英文名:Swarm-Opti),或扫描下方二维码关注,以算法名字搜索历史文章即可下载。
👇👇👇
DE合集.zip
点击链接跳转:
375种群优化算法免费下载-matlab
https://mp.weixin.qq.com/s/AsFTBmaZ8UOgES9TQuL0Kg?token=1339859150&lang=zh_CN
求解cec测试函数-matlab
cec2017测试函数使用教程及matlab代码免费下载
cec2018测试函使用教程及matlab代码免费下载
cec2019测试函使用教程及matlab代码免费下载
cec2020测试函使用教程及matlab代码免费下载
cec2021测试函使用教程及matlab代码免费下载
cec2022测试函使用教程及matlab代码免费下载
绘制cec2017/018/2019/2020/2021/2022函数的三维图像教程,SO EASY!
215种群智能优化算法python库
Amazing!Python版215种群智能优化算法https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486669&idx=1&sn=6b439e55b37b6482b8d3831ca85f1d55&chksm=c12be0c8f65c69de71ad51d3b736b871ff52f8646e90624f95dd32b024dfaad369d654aaf8fc#rd
解决12工程设计优化问题-matlab
略微出手,工程设计问题(12)(附Matlab代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247485052&idx=1&sn=80e5573c1c005ee5640e44935044ee35&chksm=c12bea79f65c636fc73758b4f4893502bd89cbd1c5d15d7db15e8b5c94eeae40450439d44944&token=681266555&lang=zh_CN#rd
求解11种cec测试函数-python
【选择自由,免费下载】215种优化算法求解11种cec测试函数-python代码https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486669&idx=2&sn=eea8fb04dc507ab9119e2c97c03ca2f6&chksm=c12be0c8f65c69decd6c8109f6b997986bf58725fdbbd7ab03752cb6f61aacdb5a2dc7fec762#rd
解决30种工程设计优化问题-python
【一码解决】215种优化算法求解30个现实世界的工程设计优化问题,让你的论文增色10倍(附Python代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486669&idx=3&sn=ea6d26ae7cb651e5c368f4c73ade228e&chksm=c12be0c8f65c69de739af72d9793838f59ab77bfee36bc2c204f96e2a9e5c6d87dfbbbae698e#rd
仅需一行,可改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)
用于改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)21种混沌映射方法-混沌初始化,适用于所有优化算法https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486215&idx=2&sn=58f1a69175b0d6431a4c7cdfa114b84d&chksm=c12be702f65c6e14e6bd1ddc33b9cec74991d93303c325853049b7e4afd09039b13083fa79c5&token=25423484&lang=zh_CN#rd
【有经典,有最新】24种信号分解方法(附matlab代码)
沙场大点兵:24种信号分解方法(附matlab代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486001&idx=1&sn=a87c24cb401017a78a90bd1b1439fcb0&chksm=c12be634f65c6f22368b7229a59ac5ef330b89d710c826dbfd1a1c34a02b1dd7e909c7f40d79&token=25423484&lang=zh_CN#rd
【分类新范式】27种一维数据转换成二维图像的方法-matlab代码
沙场大点兵:27种一维数据转换成二维图像的方法-matlab代码https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486260&idx=1&sn=81b1970cb89364c0289ccdfb403e5388&chksm=c12be731f65c6e273a85456326b503b7f35d9f035405050932ff1926e0b1bfa8076b1bc2d1f2&token=25423484&lang=zh_CN#rd