2.2 组合差分进化算法及其改进

2.2.1 组合差分进化算法

鉴于向量产生策略和控制参数对DE算法的性能具有重要影响,且各有优势,Wang等[4]提出了一种新的自适应DE算法——CoDE算法,该算法组合了几种向量产生策略和特定的控制参数用于产生新的向量。CoDE算法中包含3种向量产生策略和3组控制参数。采用的3种向量产生策略分别如下[4]

016-1
016-1

3组控制参数分别为:[F=1.0, Cr=0.1],[F=1.0, Cr=0.9],[F=0.8, Cr=0.2]。其中,F表示缩放因子,Cr表示交叉概率。

上述策略和参数设置经常用于许多版本的DE算法中,并且它们的有效性已经被大量的研究所证实。CoDE从控制参数集中随机选择一组参数,然后根据该组参数利用新向量产生策略候选池中的每个策略产生新的向量,再从新的3个向量中选择最好的个体。这种思想如图2-1所示。有关CoDE的更详细的信息见文献[4]。

016-1

图2-1 CoDE算法新向量产生方式

从图2-1可以看出,CoDE采用的是一种利用简单的组合思想来实现自动搜索的方法。利用3种新向量产生策略和控制参数的优势,以期达到更好的效果。除了向量产生策略和控制参数以外,CoDE的其他操作与传统的DE算法没有什么差别。

2.2.2 改进的算法

(1)改变生成策略法

尽管CoDE算法在连续优化领域已经显示出优异的优化性能,但从文献[4]的研究结果可以看出,文献[5]提出JADE的性能仅次于提出的CoDE算法,特别是对于5个单模函数,除了其中1个单模函数与CoDE算法相当外,其他4个均优于CoDE算法。JADE的优异性能主要在于采用了一种贪婪的变异操作——“current-to-best/1”,该操作通过引入当前群体最优解的信息,加速了种群的快速收敛。而CoDE算法在求解单模函数时却显得有些力不从心。在CoDE算法新向量产生策略候选池的3种变异策略中,并没有利用当前最优解的信息,因此,考虑从向量产生策略方面进行改进,以期得到好的结果。本章对CoDE算法的新个体产生策略集进行调整,将“current-to-best/1”操作引入进来。因“current-to-best/1”与CoDE算法原始个体产生策略集中的“current-to-rand/1”在形式上具有极大的相似性,因此,这里采用替换方式,即将CoDE算法中个体产生策略集中的“current-to-rand/1”替换成“current-to-best/1”,其他保持不变,并将修改版的CoDE算法命名为MCoDE算法。MCoDE算法新向量产生方式如图2-2所示。

016-1

图2-2 MCoDE算法新向量产生方式

(2)扩展控制参数法

CoDE算法中控制参数采用随机方式来选择3组特定的参数。文献[4]已对控制参数的选择问题进行了研究,对采用自适应参数选择方法和固定参数设置两种情况下算法的性能进行了检验,结果显示这两种参数选择方法都不能明显改善CoDE算法的性能,并且这两种方法的性能不超过采用随机方式的CoDE算法。不同于从参数选择方面进行改进,本章提出了一种增加控制参数的方式,以检查增加控制参数的方式的改进效果。根据EPSDE[3]算法中有关缩放因子F和交叉概率Cr两个参数的设置范围:F在区间[0.4,0.9]进行选择,步长为0.1,Cr在区间[0.1,0.9]进行选择,步长为0.1。为了探讨扩大参数选择范围对CoDE算法优化性能的影响,本章在原有CoDE算法控制参数库的基础上,增加了另外3组参数:[F=0.7, Cr=0.3],[F=0.6, Cr=0.4]和[F=0.5, Cr=0.5]。将这种采用扩展参数方法的CoDE算法称为MCoDE-P。MCoDE-P算法新向量产生方式如图2-3所示。

016-1

图2-3 MCoDE-P算法新向量产生方式

从以上描述可以看出,除向量产生策略和控制参数选择方法不同外,CoDE、MCoDE和MCoDE-P 3种组合差分进化算法采用的整体结构都是一样的。在这里仅以MCoDE算法为例,介绍主要的实现步骤,具体如下。

步骤1:初始化控制参数库和终止条件,设置种群大小(通常等于决策变量的个数),随机产生初始化种群。

步骤2:对初始种群进行评估,并记录最好个体的信息,设置进化代数G=0。

步骤3:对于每个个体,随机从控制参数集中选择一组控制参数,调用第2.2.2节中介绍的“rand/1/bin”“rand/2/bin”和“current-to-best/1”3种新向量产生策略产生3个新的向量。

步骤4:计算3个新向量的目标函数值,将最优个体作为尝试向量016-1

步骤5:比较目标向量016-1和新产生的向量016-1的目标函数值,若016-1优于016-1,则用016-1替换016-1加入下一代种群中。

步骤6:判断是否种群中所有的个体都执行完,若未执行完,则转步骤3继续执行,否则,执行步骤7。

步骤7:找出下一代种群中的最好个体,更新最好个体信息,G=G+1。

步骤8:判断是否满足终止条件,若满足,则输出最好个体信息及对应的目标函数值,执行完成,否则,转步骤3继续执行。

CoDE算法流程如图2-4所示。

从图2-4可以看出,上述标准的组合差分进化算法除了在向量产生策略和控制参数两个方面有所不同外,与标准的差分进化算法并没有太大的区别,仍然采用标准的差分进化算法的计算框架。CoDE算法保留了差分进化结构简单、开放和天然并行性等优点,这些为进一步研究组合差分进化的扩展提供了便利。

016-1

图2-4 CoDE算法的流程