1.算法简介
差分进化(Differential Evolution)算法简称DE,其算法原理简单,代码容易实现,且控制参数少,鲁棒性好。
该算法的基本思想是:从一个随机产生的初始种群开始,通过把种群中任意两个个体的向量差与第三个个体求和来产生新个体一(变异,参数F),然后将新个体一与对应的当代个体进行基因选择生成新个体二(交叉,参数CR),之后将新个体二与当代种群中相应的个体相比较,如果新个体的适应度优于当前个体的适应度,则在下一代中就用新个体取代旧个体,否则仍保存旧个体(选择)。通过不断地进化,保留优良个体,淘汰劣质个体,引导搜索向最优解逼近。
差分进化通过选择部分保证了下一代个体的适应度大于等于当代个体,这是一个贪心策略,这一策略使得在迭代解一代更比一代强,收敛速度相对较快,同时变异交叉操作又能保证很好的解的搜索能力。总之,差分算法是一个综合能力很强的算法。
2.算法流程
2.1 变异
随机找三个互不一样的当代个体(最好与当代个体编号也不一样),然后让两个想减乘以一个缩放系数之后再加上另一个个体就可以了。F是缩放系数,是用户需要自行确定的参数之一。
比如要生成个体i,那就找三个互不相同且与i不同的三个个体,然后按照公式计算的到新种群中的个体i,需要注意的是新生成的个体可能有的基因点位在边界之外,需要调整。
2.2 交叉