
3.2 差分进化算法理论
3.2.1 差分进化算法原理
差分进化算法是一种随机的启发式搜索算法,简单易用,有较强的鲁棒性和全局寻优能力。它从数学角度看是一种随机搜索算法,从工程角度看是一种自适应的迭代寻优过程。除了具有较好的收敛性外,差分进化算法非常易于理解与执行,它只包含不多的几个控制参数,并且在整个迭代过程中,这些参数的值可以保持不变。
差分进化算法是一种自组织最小化方法,用户只需很少的输入。它的关键思想与传统进化方法不同:传统方法是用预先确定的概率分布函数决定向量扰动;而差分进化算法的自组织程序利用种群中两个随机选择的不同向量来干扰一个现有向量,种群中的每一个向量都要进行干扰。差分进化算法利用一个向量种群,其中种群向量的随机扰动可独立进行,因此是并行的。如果新向量对应函数值的代价比它们前辈的代价小,它们将取代前辈向量。
同其他进化算法一样,差分进化算法也是对候选解的种群进行操作,但其种群繁殖方案与其他进化算法不同:它通过把种群中两个成员之间的加权差向量加到第三个成员上来产生新的参数向量,该操作称为“变异”;然后将变异向量的参数与另外预先确定的目标向量参数按一定规则混合来产生试验向量,该操作称为“交叉”;最后,若试验向量的代价函数比目标向量的代价函数低,试验向量就在下一代中代替目标向量,该操作称为“选择”。种群中所有成员必须当作目标向量进行一次这样的操作,以便在下一代中出现相同个数竞争者。在进化过程中每一代的最佳参数向量都进行评价,以记录最小化过程。这样利用随机偏差扰动产生新个体的方式,可以获得一个收敛性非常好的结果,引导搜索过程向全局最优解逼近[6-7]。
3.2.2 差分进化算法的特点
差分进化算法从提出到现在,在短短二十几年内人们对其进行了广泛的研究并取得了成功的应用。该算法主要有如下特点:
(1)结构简单,容易使用。差分进化算法主要通过差分变异算子来进行遗传操作,由于该算子只涉及向量的加减运算,因此很容易实现;该算法采用概率转移规则,不需要确定性的规则。此外,差分进化算法的控制参数少,这些参数对算法性能的影响已经得到一定的研究,并得出了一些指导性的建议,因而可以方便使用人员根据问题选择较优的参数设置。
(2)性能优越。差分进化算法具有较好的可靠性、高效性和鲁棒性,对于大空间、非线性和不可求导的连续问题,其求解效率比其他进化方法好,而且很多学者还在对差分进化算法继续改良,以不断提高其性能。
(3)自适应性。差分进化算法的差分变异算子可以是固定常数,也可以具有变异步长和搜索方向自适应的能力,根据不同目标函数进行自动调整,从而提高搜索质量。
(4)并行性。差分进化算法具有内在的并行性,可协同搜索,具有利用个体局部信息和群体全局信息指导算法进一步搜索的能力。在同样精度要求下,差分进化算法具有更快的收敛速度。
(5)通用性。差分进化算法可直接对结构对象进行操作,不依赖于问题信息,不存在对目标函数的限定。算法操作十分简单,易于编程实现,尤其利于求解高维的函数优化问题。