申明!!本篇文章中所有的非代码性叙述和数学公式均摘录自差分进化算法(DE)详述
差分进化算法(Differential Evolution Algorithm,DE)是基于群体智能理论的优化算法,它是通过群体内个体间的合作与竞争而产生的智能优化算法,字面意思即可看出它有别于遗传算法的自由组合自然选择,它更侧重的是个体与个体和个体与自身间的关系,包括合作与竞争。
其主要步骤为:种群初始化,变异,交叉,适应度函数选择。
为实现差分进化算法全过程,本文主要目标为:求解[-3,3]区间内, y = 2 x 2 + 3 x − 1 y=2x^2+3x-1 y=2x2+3x−1最小值所对应的x值。
1.初始化
- D为自变量维度,文章中D=1;
- NP种群规模总数即个体总数,文章中NP=100;
- 迭代次数100000;(由于种群中一次仅变异一个个体,所以迭代次数要多一些,可以设置种群中有若干个体均变异来降低迭代次数)
- 交叉概率0.1
- 确定自变量维度j的上下限,由于文章仅一个维度,因此j=1,上下限维度为-3,3;
- 初始化种群:每个个体总服从上下限之间的均匀分布加标准正态分布的随机偏差。
X i j , 0 = r a n f [ 0 , 1 ] ∗ ( X j ( U ) − X j ( L ) ) + X j ( L ) X_{ij,0}=ranf[0,1]*({X_{j}}^{(U)}-{X_{j}}^{(L)})+{X_{j}}^{(L)} Xij,0=ranf[0,1]∗(Xj(U)−Xj