2。1 种群初始化
由于差分进化算法也是一种特殊的遗传算法,所以在种群被初始化之前,这每个参数的上限和下限必须指定。这些2D值可以被收集到两个D维初始化向量,和,它俩的下标L和U也就是下界和上界。一旦指定了初始化边界,一个随机数生成器将会在规定的范围内给每一个向量分配一个参数值。例如,在第i维向量的第j个参数的初始值(g=0)是:
是一个随机数,且在区间范围内均匀分布。下标j表示每个参数产生的一个新的随机值,即使一个变量是离散的或积分的,它应该被初始化为一个真正的值,因为DE算法内部把所有的变量作为浮点值处理而不管它们的类型。
2。2 变异操作
初始化种群完成后,DE算法通过变异操作和重组种群以产生新的具有NP规模试验向量的新种群。与遗传算法通过变异概率选择变异的个体不同,DE算法中,所有成员都有参与变异操作的机会。特别说明,差分突变随机选择三个不同的缩放的向量,下面的公式将说明如何结合三种不同的,随机选择的向量来创建一个新测试向量:
缩放比例因子F是一个正实数,用来调控种群人口的发展。虽然没有上限,但F有效的价值是很少大于1,当然也有研究者索性将F的值设定在区间(0,1)内。基向量指数r0可以以多种方式来确定的,但现在,它被假定为是一个随机选择的矢量指数,不同于目标矢量指数i。变异向量r1和r2彼此不等,并且它们也和基向量r0和测试向量不相等。因此,三个随机向量任意两个的差值被缩放比例因子F处理后在加在第三个向量上从而得到测试向量。
图2。1 标准差分进化算法变异操作示意图
2。3 交叉操作
标准DE算法的交叉操作在变异操作之后进行,普遍的交叉操作有两种:指数交叉和二项交叉。鉴于我们前面引入了随机数生成器,如果在继续讲指数交叉,我们需要重新设定变量和相关参数,所以我着重讲二项交叉。同变异操作一样,二项交叉也对每一个变量进行操作。它的具体执行操作如下:
交叉概率Cr∈[0,1],是一个用户定义的,主要用来控制从变异向量复制的参数值的一个分数。为了确定哪个源贡献了唯一给定的参数,所以要均匀比较交叉概率Cr和随机数,如果随机数是小于或等于交叉概率,那么试验参数就继承向量,否则,试验参数就等于目标向量。由于试验向量,其中D表示问题的维度,而则是随机生成的整数,它主要是为了确保试验向量能从变异向量中获得至少一个成分。来:自[优E尔L论W文W网www.youerw.com +QQ752018766-
图2。2 标准差分进化算法交叉操作示意图
2。4 选择操作
标准DE算法采用贪婪选择方式,如果试验向量比它的目标向量具有相同或更大的函数值,它将取代目标向量的下一代,否则,目标将保留在种群至少下一代的地方。通过对比各试验向量与目标向量的继承参数,可以看出,标准DE算法相较于其他进化算法,它对重组和选择能力上具有很大的向心力。
一旦得到了新的种群,这个过程中的突变,重组和选择将不断迭代直至最佳的位置,或预先满足终止条件,例如,世代数达到预先设定的最大值,。
总结来看,标准DE算法的通用性强,它的原理可以说非常的简单用代码很容易实现出来,在全局搜索方面,标准DE算法能够保存个体最优解(即全局最优解),同时在局部搜索上,标准DE算法也能有效分别个体局部最优解和种群全局最优解,但是同样是在搜索方面,标准DE算法的局部搜索能力较弱,搜索性能对参数具有一定的依赖性,并且,标准DE算法在一定时间内保障整体最优非常困难,其搜索耗时有待进一步优化。