差分进化算法(Differential Evolution Algorithm,DE)介绍
前言
差分进化算法(Differential Evolution Algorithm,DE)由Storn和Price于1995年提出,最早用来解决切比雪夫多项式问题。
DE 采用实数编码方式, 其算法原理与遗传算法十分相似, 进化流程与遗传算法相同: 变异、交叉和选择。DE 算法中的选择策略通常为锦标赛选择,而交叉操作方式与遗传算法也大体相同,但在变异操作方面使用差分策略, 即利用种群中个体间的差分向量对个体进行扰动,实现个体变异。DE 的变异方式,有效利用群体分布特性, 提高算法的搜索能力,避免遗传算法中变异方式的不足。
差分进化算法
初始化种群
变异操作
下图为变异操作中式子(2.11)在空间的示意图。
交叉操作
选择操作
算法流程
- 初始化种群,算法参数;
- 变异操作;
- 交叉操作;
- 选择操作;
- 判断是否满足终止条件(最大迭代代数or最大函数评价次数等),若满足则输出结果,否则继续返回步骤 2 进行循环。
C语言伪代码
参考文献
[1] 杨启文, 蔡亮, 薛云灿. 差分进化算法综述[J]. 模式识别与人工智能, 2008, 21(4): 506-513.
[2] Price K V. Differential evolution[M]. Handbook of Optimization. Springer, Berlin, Heidelberg, 2013: 187-214.
[3] 待续,因为有部分截图内容无法找到原著作,大家如果发现了请告知,谢谢。