
2.4 差分进化算法的参数分析及设置
进化算法中控制参数数目及其设置的复杂性是衡量算法优劣的标准之一,要使算法获得理想的求解结果,参数的选择至关重要。DE算法的控制参数相对较少,只有种群规模NP、缩放因子F和交叉概率因子CR。研究表明DE算法中的参数设置对算法的全局寻优能力、收敛速度和稳定性等都有较大影响,因此算法参数选择的理论性研究和实验分析论证是非常必要的,只有充分了解算法参数与算法性能之间的联系,才能够更好地设置参数取值,最大限度发挥算法的全局优化能力[3-17]。
1.种群规模NP
一般来说,种群规模应该适中,既不能太大,也不能太小。如果种群规模太小,则会使种群很快失去多样性,陷入局部最优值。如果种群规模太大,虽然算法的搜索能力增强,种群多样性增强,但会导致大量的个体适应度评估运算,减慢收敛速度。大量实验研究表明,NP大小推荐选取问题空间决策变量维数的5~10倍,即NP在维数5n到10n之间,但不能少于4,否则无法完成变异操作[16]。此外,对于单峰函数优化以及较简单的多峰优化问题中,种群规模可设置小一些,而在严重的多峰优化问题中,种群规模应取值较大,如50n。
2.缩放因子F
缩放因子F决定了变异操作中差分矢量对基向量的扰动程度,是控制种群多样性和收敛性的重要参数,一般在[0, 2]之间取值。当F取值较大时,加到基点向量上的随机扰动幅度较大,种群多样性下降缓慢,增加了从局部极值点逃脱的可能性。但若F取值过大,尤其是当扰动大于两个个体成员间的距离时,收敛会很困难,导致收敛速度明显减慢。相反当F取值较小时,群体差异度减小,容易降低种群多样性,使算法陷入局部极值点而早熟收敛[18]。因此缩放因子F的选取应该针对具体优化问题的特点,经验表明F的取值需在0~1之间,一般初始值建议为0.5。寻优过程中如发生早熟收敛,建议通过加大F和NP的值来避免。
3.交叉概率因子CR
交叉概率因子CR控制交叉操作生成的试验个体中变异个体所占分量的比例,即试验个体中哪些分量由变异向量贡献,哪些分量由目标向量贡献。CR一般取值在[0, 1]之间,当CR较小时,试验个体中变异个体所占的比例较小,而父代目标个体所占比例较大,有利于保持种群的多样性和全局搜索;当CR较大时,试验个体中变异个体所占的比例较大,有利于局部搜索和加速收敛速度[19]。
DE 算法中以上3个参数对算法收敛速度的影响都是很显著的,尤其是变异因子F和种群规模NP。在变异因子F和交叉因子CR对算法性能的影响上,F的作用更为显著,因此建议首先调整F。算法寻优过程中如发生早熟收敛,建议通过加大变异因子F和种群规模NP的值来避免早熟。而在需要快速收敛的场合,可以适当减小变异因子F和种群规模NP的值,并加大交叉因子CR的值。
在传统的DE算法中,3个控制参数在整个进化过程中保持不变,这种做法虽然简单,但也存在许多弊端。首先,固定的参数值不能适应不同最优化问题的需要,影响求解效果,因此每遇到一种新的优化问题,都需要经过多次实验才能确定较合适的控制参数取值。其次,对于同一优化问题,进化初期和进化后期对种群多样性和收敛速度的需求是不一样的,通常在初期需要更高的多样性而后期要求更快的收敛速度,但固定不变的参数值显然不能满足需求。针对这些问题,研究者提出了许多参数随进化过程动态变化或自适应更新的改进算法,在有些改进算法中,甚至不需要设置初始控制参数。如Liu和Lampinen提出了一种模糊逻辑自适应差分进化(FADE)算法,采用模糊逻辑控制器生成控制参数的取值。J.Brest将参数加入个体编码中,为每个个体设定独立的控制参数,并在进化过程中以一定的规则自动调整,使算法获得了更好的效果。Qin和Suganthan提出的SaDE算法利用算法进化过程中的自身学习积累的经验使控制参数实现自动调整。