3.3 基于差分进化算法退水预报模型参数优选
最近,一种由Rainer Storn和Kenneth Price提出进化算法——差分进化算法(Differential Evolution Algorithm,DE),正在被各国学者广泛关注。它是一种简单又十分有效的基于群体的参数随机优化算法,包括变异(Mutation)、交叉(Crossover)和选择(Selection),其优点是原理简单,易于理解和实现。与传统进化算法不同,差分进化算法利用随机选择的不同个体生成的比例差分矢量对当前的种群个体进行扰动,全局搜索能力较强,且具有较好的收敛速率。Vestertron等人将差分进化算法(DE)与粒子群优化算法(PSO)和其他进化算法用34个广泛应用的基准问题进行了比较,计算机计算模拟的结果表明,差分进化算法的性能优于粒子群优化算法、遗传算法、蚁群算法等进化算法。差分进化算法已成为一种求解非线性、多极值和高维的复杂函数的一种有效和鲁棒的方法,而且比较适合于解决复杂的优化问题。
DE在优化迭代过程中,采用NP个D维向量xi,G(i=1,2,…,NP)作为每一代G的一个种群,在搜索空间进行并行直接搜索,其中NP为种群规模,D为决策变量个数。差分进化算法的基本思想是从某一随机产生的初始群体开始,将种群中任意两个个体的差分向量加权后按一定的规则加到第三个个体上从而产生新个体,然后将新个体与某个预先确定的个体相比较,如果新生成的个体的目标函数值比种群中预先确定的一个个体的目标函数值小,则在下一代中用新生成个体替代原种群与之相比较的旧个体,否则旧个体保存到下一代,这样通过不断地迭代计算,保留优良个体,淘汰旧个体,使迭代搜索过程向最优目标值逼近。其基本操作包括变异(Mutation)、交叉(Crossover)和选择(Selection)三种,其进化策略可被描述如下。
1.变异操作
差分进化最基本的变异成分是父代群体目标向量与个体的差分矢量,每个矢量对包括父代群体中两个不同的个体(xr1,G, xr2,G)。差分矢量定义为:
式中:r1、r2表示种群中不同个体的索引号。
对于每一个目标矢量vi,G,进行如下变异操作:
式中,r1、r2、r3∈{1,2,…,NP},且r1、r2、r3与当前目标的下标i不同,种群规模NP≥4。F∈[0,2],体现差分矢量的放大与缩小,称为缩放因子。
2.交叉操作
为了提高种群潜在的多样性,试验矢量个体ui,G+1由目标矢量个体xi,G与变异矢量个体xi,G+1进行交叉操作生成。为保证个体xi,G的进化,通过随机选择,使得ui,G+1至少有一个由xi,G+1贡献,利用交叉概率因子CR决定ui,G+1中哪个由xi,G+1贡献,哪个由xi,G贡献。交叉操作方程为:
式中:randb(j)为[0,1]范围内的随机数;j表示第j个变量;CR∈[0,1]为常数,与交叉概率有关,其大小预先确定;rnbr(i)∈1,2,…,D为随机出现的变量索引。
3.选择操作
为了保持后代种群规模不变,差分进化算法采用“贪婪”的选择策略,经过变异与交叉操作后产生的试验矢量个体ui,G+1与目标矢量个体xi,G进行竞争,只有当试验矢量个体ui,G+1的目标值较目标矢量个体xi,G更优时才能取代相应的目标个体而进入下一代;否则,直接将xi,G作为子代。