文章主题:DE简介及其matlab代码
适用人群:正在学习优化算法的同学
推荐阅读时间:2mins
1. DE简介
差分进化算法:是一种模拟生物进化的随机模型,通过反复迭代,使得那些适应环境的个体被保存了下来。
其主要步骤包括变异、交叉、选择三种操作,但又与遗传算法(GA)有所不同。
其基本思想是:
Step1: 从某一随机产生的初始群体开始;
Step2:利用从种群中随机选取的两个个体的差向量作为第三个个体的随机变化源,将差向量加权后按照一定的规则与第三个个体求和而产生变异个体,该操作称为变异;
Step3:然后,变异个体与某个预先决定的目标个体进行参数混合,生成试验个体,这一过程称之为交叉;
Step4:如果试验个体的适应度值优于目标个体的适应度值,则在下一代中试验个体取代目标个体,否则目标个体仍保存下来,该操作称为选择;
Step5:在每一代的进化过程中,每一个体矢量作为目标个体一次,算法通过不断地迭代计算,保留优良个体,淘汰劣质个体,引导搜索过程向全局最优解逼近。
标准差分进化的缺点是每代可能且最多改进1个个体,因此种群规模设置较小,且差分进化极易受参数(交叉概率CR,缩放因子F,种群规模NP)的影响。
2. 相关文献
CSDN,知网,万方到处都是DE的介绍啦,这里还是给出DE的原始英文文献,1995年的文献了,排版上可能看着不太舒服,但倒也好理解,文献中也给出了不少的测试函数,唯一需要注意一点是文中没有给出伪代码/流程图,理解起来稍稍需要自己梳理一下(网上各种版本的流程图也很多了)
名称:Differential Evolution-A simple and efficient adaptive scheme for global optimization over continuous spaces
(老样子,文献链接和代码链接是一样的~)
3. 代码获取
以Sphere function为例给出其DE算法的代码。
呈上代码链接:
https://github.com/EavanLi/standard_DE
最后的结果跑出来也放在下面??了~~