1. 引言
优化在计算机科学、运筹学以及其他学科中起着重要的作用,试图在在合理的范围限制内为优化问题找到一个最佳解决方案。随着科学技术的发展与工业社会的进步,优化问题越来越展现出高维、不连续等特征,传统优化方法并不适用于解决此类优化问题。不同于传统搜索,进化算法(EA)作为优化算法的一个重要分支,通过选择、变异和繁殖来模拟个体的进化过程。包括遗传算法(GA)、记忆算法、微分进化(DE)以及其他在内的一些EAs近年来受到了广泛的关注 [1] [2] 。其中,粒子群优化算法(PSO)的搜索性能相当,甚至优于GAs等其他EA,具有更快和更稳定的收敛率。由于容易理解、快速收敛和基于种群的特点,PSO受到了研究者的高度关注。目前,PSO算法已广泛应用于神经网络,模糊系统控制,图像处理等许多现实的领域 [3] - [8] 。
粒子群优化(PSO)是一种基于种群的EA,由Kennedy和Eberhart于1995年首次提出 [9] [10] 。开发这种方法的动机是基于对简化的动物社会行为的模拟,如鱼群、鸟群等。粒子群算法从搜索空间中的个体粒子的初始化开始,在每一个时间步中,通过个体最优位置和全局最优位置来调整自身的位置和速度从而找到全局最佳解决方案 [9] [11] [12] 。但PSO存在的问题是对于多模态和高维任务的应用,当单个粒子的最优位置等于全局最优位置时,粒子容易陷入到局部极值点中 [13] 。PSO算法虽然提供了全局搜索的可能,但是并不能保证收敛到全局最优点上。因此,许多改进的PSO变体在最近几年被开发出来,以克服这个缺陷,其实验结果与原始PSO算法相比有了较大的改善。例如,调整惯性权重系数和加速度系数,添加扰动项,时变策略,时延策略,以及基于进化因子和马尔可夫跳的自适应切换,都通过实验验证了有助于粒子在空间进行更彻底的探索和开发 [8] [14] - [22] 。切换PSO (SPSO)的速度更新方程具有马尔可夫切换参数,并且在其基础上通过添加时滞和突变概率矩阵的新切换PSO算法,也在动态优化问题上展现出各自的性能 [23] [24] [25] [26] 。
虽然SPSO算法在改进过程中省略了逐代计算加速度系数的步骤,但是在多模态函数上求解全局最优值时仍然存在收敛速度较慢,容易陷入局部最优值的问题。为了进一步提高SPSO的搜索性能,自然希望惯性权重系数也能够识别或利用进化状态信息,从而增强种群的多样性。马尔可夫链可以依据概率分布,在不同状态间切换或维持原有状态,能够提高粒子全局搜索和局部搜索能力,有效降低由于参数设置不合理而导致的风险。因此,如何合理给出合适的突变策略并设置参数的最佳值是我们需要认真考虑的核心问题。
我们的目的是希望能够在SPSO算法的基础上,开发一种新的PSO算法,以缓解过早收敛问题并降低计算复杂度。本文提出了一种改进的带马尔可夫跳的PSO算法,称为MJPSO。文章的创新性主要体现在,改进了SPSO中加速度系数由马尔可夫链控制,而惯性权重系数线线性递减的迭代策略,通过评估进化因子划分进化状态,基于一个齐次马尔科夫链,根据进化状态自适应地调整模型的惯性权重参数和加速度系数。因此,粒子能够快速移动到更有潜力的区域,极大地提高搜索效率和加快搜索进程。同时,惯性权重参数和加速度系数不必在每一次迭代中重复计算,从而在一定程度上了降低计算成本。最后,通过对比实验的验证,与一些现有的PSO流行变体相比,MJPSO算法在收敛精度、速度和稳定性上有一定的优势。
本文的其余部分组成如下。传统PSO和基于PSO的一些变体算法在第二节中给出。提出的带马尔可夫跳的MJPSO算法在第三节中给出。第四节与现有各种PSO算法的收敛性能比较。最后,第五节总结这篇文章,并给出未来展望。
2. 粒子群优化算法
2.1. 传统PSO
PSO的基本概念是源于鸟类觅食的研究 [9] ,与其他进化算法类似,PSO算法也是通过种群中个体间的协作与竞争,实现复杂空间最优解的搜索。PSO算法就是模拟一群鸟寻找食物的过程,每只鸟就是PSO中的粒子,也就是需要求解问题的可能解,这些鸟在寻找食物的过程中,不停的改变自己在空中的飞行位置和速度。PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。
在D维空间中,初始设置为种群数量为N的随机粒子。以其中的第i个粒子为例,假设在第k次迭代时,其速度和位置分别为
和
,之后每个粒子通过两个最优位置来更新自己的速和位置,即自己的历史最优位置
和全部粒子的历史全局最优位置
。则基本的PSO算法可以描述如下:
(1)
这里,
是惯性权重以控制粒子在搜索空间中的探索,
和
是加速度参数,分别称为认知和社会系数。
和
是分布在
区间的均匀随机数。为了防止粒子冲出搜索空间并取得较好的效果,粒子位置限制在
范围内,速度限制在
范围内。
2.2. PSO的一些变体算法
标准PSO由于其概念的简单性和实现的效率性,被广泛应用以解决实际问题。同时,许多研究人员致力于开发各种变体以提高搜索性能。
一种常见的策略是引入惯性权重 [14] [15] ,以实现局部搜索和全局搜索之间的适当平衡。此外在 [17] 中提出了具有线性递减惯性权重
的PSO变体(PSO-LDIW),展示了惯性权重值较大有利于实现全局搜索,惯性权重值较小更有助于局部搜索微调。惯性权重
的更新公式定义如下:
(2)
这里,
和
分别是惯性权重的初值和终值,
是当前迭代次数,
是最大迭代次数。通常初值设置为
,终值设置为
。
另一方面,加速度系数作为PSO算法中的重要参数,通常取值为2.0。同样,时变策略也可同样应用在加速度系数中,一种具有线性时变加速度系数的PSO (PSO-TVAC)在 [16] 中被引入,其中认知系数
随时间线性递减,社会系数
随时间线性增加。加速度系数
和
的更新公式如下:
(3)
这里,
和
是加速度系数
和
的初始值;
和
分别是加速系数
和
的终值。通常,
,
,
,
。此外,收缩因子被引入到PSO中以提高搜索性能 [11] ,在PSO-CK算法中,建议使用
和
。另外,RPSO算法 [18] 利用强度可调的高斯白噪声为加速度系数添加随机扰动,以增强种群的多样性。
此外,还有一类学者研究设计不同类型的拓扑以改进PSO的搜索性能。最近,在 [19] 中引入了一种自适应PSO算法,采用进化因子,并在每一代中定义探索、开发、收敛和跳出四种进化状态,通过模糊分类的方法来自动控制惯性权重
和加速度系数
、
。除此之外,基于马尔科夫链控制进化状态,从而实现加速度系数自动控制的SPSO算法在 [21] 中提出,以提高优化器的搜索能力。SDPSO算法 [24] 在SPSO算法的基础上为局部和全局最优粒子添加延迟信息,提高粒子的搜索效率和收敛速度。然而,这些PSO的变体算法仍然存在过早收敛问题。而且计算每次迭代的系数,导致较高的计算成本。因此,为了能进一步提高优化器搜索性能的同时降低计算复杂度,在理论和实践上开发一种新的方法是重要的。
3. 一种新的带马尔科夫跳的PSO算法
在本节中介绍了一种新型的马尔可夫跳PSO算法(MJPSO)来平衡粒子的局部搜索和全局搜索,从而能够优化搜索性能,缓解过早收敛的问题。在速度更新方程中,惯性权重参数
和加速度系数
、
均可由马尔可夫跳跃参数自适应的控制。
3.1. 进化因子
基于每个进化状态,粒子的种群分布是一个非常重要的研究方向。由进化因子描述的种群分布特性在 [19] 中被引入。由进化因子定义种群的收敛、探索、开发、和跳出4种状态。首先,群中各粒子之间的平均距离计算如下:
(4)
这里,S和D分别是种群规模和维度。因此进化因子可按文献 [19] 定义如下:
(5)
这里,
代表
中的全局最优粒子,
和
分别代表了
中的最大值和最小值。进化因子
描述了全局最优粒子到其他粒子的平均距离。
3.2. 更新策略
在 [21] 中,进化因子由一个马尔可夫链控制,基于马尔科夫链,加速度系数可以自适应调整。但是,这种改进方法的缺点是,惯性权重系数需要在每一次迭代中重新计算,使得计算成本较高。同时,在多模态函数上求解全局最优值时仍然存在收敛速度较慢,容易陷入局部最优值的问题。
接下来,我们引入新的带马尔可夫跳跃参数的PSO的更新方程来克服上述缺点并进一步提高粒子的全局搜索能力。在速度更新方程中,马尔可夫跳跃参数可以自适应的控制惯性权重参数
和加速度系数
、
,该策略可以有效地防止粒子群算法的过早收敛。马尔可夫跳跃参数满足以下假设。
假设:代表第k时刻粒子状态的跳跃参数
是离散时间齐次马氏链,在有限状态空间
中。概率转移矩阵
按如下公式给出:
(6)
这里,
是从i到j的转移概率且满足
。
所提出的MJPSO算法的速度和位置更新方程由下式给出:
(7)
这里,
,
和
是依赖于马氏链的惯性权重系数和加速度系数。进化状态的详细定义如下:
(8)
(9)
因此,在每一次迭代中,马尔科夫过程都可以根据概率转移矩阵
更新状态。需要说明的是,
的值对于收敛速度和精度来说是重要的 [21] 。在本文中,
的值在迭代过程中设置为定值0.9。所提出的MJPSO的流程图如图1所示。马尔可夫跳跃过程见算法1。

Figure 1. Flowchart of MJPSO algorithm
图1. MJPSO算法的流程图
4. 收敛性实验
4.1. 参数设置
在 [19] 中,用
定义了四种集合
,
,
和
分别代表收敛、探索、开发、和跳出4种状态。因此在仿真中,我们以
为例,令
,
,
,
分别代表这4种状态。所提出的MJPSO算法的加速度参数的初始值
和
设为1.75,惯性权重
设为0.75,并且他们可以根据进化状态自动调整他们的值。另外,我们注意到,一个较大的
更倾向于在跳出和探索状态中进行全局搜索,而一个较小的
更倾向于局部微调 [24] 。因此我们引入其控制策略如下:
1) 在跳出状态,当前的全局最优粒子更倾向于飞向更好的最优粒子,而逃离局部最优,因此我们分配给
一个较大的值2.1,而分配给
一个较小的值1.8,
。
2) 在探索状态,粒子尽可能多地探索更多的最优解。因此我们分配给
一个较大的值2.1,而分配给
一个较小的值1.8,并令
。
3) 在开发状态,例子期望尽可能地利用其历史最佳位置和当前迭代的全局最佳位置来增强开发本区域。因此我们设置
为1.9,
为1.7,并令
。
4) 在收敛状态,粒子期望尽可能快的收敛到最优。因此我们设置
为1.75,
为1.75,并令
。
设置参数
,我们有概率转移矩阵如下:
(10)
4.2. 实验设置
为了测试提出的MJPSO算法的性能,(11)~(18)和表1给出了一些著名的基准函数,所有函数都在20个维度上进行测试。
,
,
描述单峰优化问题。
和
通常被用来检测PSOs算法的收敛速度。
很难优化,其全局最小值位于香蕉形状的抛物山谷中。然而,尽管该山谷很容易找到,但很难收敛到最小值。因此
可以被视为一个多模态问题以用来检测算法收敛到全域最小值的能力。
在每个阶跃间会产生大量局部极值,具有较高的寻优难度。
是较难优化的多模态问题,以用来检测算法跳出局部最小值的能力。需要说明的是,所有的函数描述最小化问题且存在全局最小值。
Sphere:
, (11)
Schwefel’s Problem 1.2:
(12)
Rosenbrock:
(13)
Schwefel’s Problem 2.21:
(14)
Step:
(15)
Ackley:
(16)
(17)
(18)
我们通过实验来比较包含所建议的MJPSO算法在内的7种PSO算法在8种测试函数上的表现。表2给出6种现有的PSO算法的详细信息。所提出的MJPSO算法的参数在第VI节的参数设置小节中给出。所有PSO算法的种群规模设置为20,最大迭代测次数为10,000。此外,为了消除随机误差,奖对每个算法进行独立重复试验20次。所有实验均在同一台机器上进行,测试环境如表3。
4.3. 仿真结果和讨论
我们取平均值、标准差(Std.Dev.)和最优值作为测试结果,具体测试结果详细见表4 (其中黑体加粗的表示对应项的最好结果)。图2~9描述了在8个基准函数上各算法的收敛平均解和迭代过程的比较。

Table 4. Comparisons of search results among six PSOs on five benchmark functions
表4. 六种PSOs在五个基准函数上的搜索结果的比较

Figure 2. Performance of seven PSOs for 20-dimensional f1(x)
图2. 在20维f1(x)函数上7种PSOs的表现

Figure 3. Performance of seven PSOs for 20-dimensional f2(x)
图3. 在20维f2(x)函数上7种PSOs的表现

Figure 4. Performance of seven PSOs for 20-dimensional f3(x)
图4. 在20维f3(x)函数上7种PSOs的表现

Figure 5. Performance of seven PSOs for 20-dimensional f4(x)
图5. 在20维f4(x)函数上7种PSOs的表现

Figure 6. Performance of seven PSOs for 20-dimensional f5(x)
图6. 在20维f5(x)函数上7种PSOs的表现

Figure 7. Performance of seven PSOs for 20-dimensional f6(x)
图7. 在20维f6(x)函数上7种PSOs的表现

Figure 8. Performance of seven PSOs for 20-dimensional f7(x)
图8. 在20维f7(x)函数上7种PSOs的表现

Figure 9. Performance of seven PSOs for 20-dimensional f8(x)
图9. 在20维f8(x)函数上7种PSOs的表现
正如表4和图2~9所示,所提出的MJPSO算法优于其他六种流行的PSO算法。特别是PSOs算法的在每一个基准函数上的最佳结果均以黑体标出。可以发现,MJPSO算法均可以提供一个最优解。球体函数和schwefel函数用来检验算法的收敛速率。从表4和图2、图3、图5中可以看出,对于
和
,PSO-CK算法和SPSO算法分别具有较差的平均全局最优值,收敛情况较差;对于
,PSO-TVAC算法和RPSO算法出现了较大的偏差值,且PSO-TVAC算法,RPSO算法,SPSO算法,SDPSO算法的平均全局最优值表现较差。而在六种测试函数上,所提出的MJPSO算法明显表现得更好。
被视为单模态优化问题,除了验证本地搜索能力外,还用来验证全局搜索能力。从表4和图4中可以看出,很明显所提出的MJPSO算法优于其他六种算法,尤其PSO-TVAC算法出现了较明显的偏差值。从表4和图6~9中可以看出,所提出的MJPSO算法能够实现在复杂函数上的全局优化。对于
和
,SPSO算法不仅具有较差的平均全局最优值,还出现了较大的偏差值。PSO-CK算法在
上表现也较差。总体来说,无论是处理单峰函数问题还是处理多峰函数问题时,所提出的MJPSO算法的性能都优于其他算法,并且所提出的MJPSO算法的局部搜索和全局搜索能力较强。因此,能够帮助PSO搜索到最佳位置并保持高收敛速度,避免局部最优并找到全局最优位置。
对于8个基准函数,我们分别剔除上文提到的表现较差的算法。图10~17更加详细展示了在20次独立实验中,各算法在各基准函数上的全局最优收敛值的分散情况。箱型图显示数据到四分位点的分布,突出显示平均值和离群值。箱形具有可垂直延长的名为“须线”的线条。这些线条指示超出四分位点上限和下限的变化程度,处于这些线条或须线之外的任何点都被视为离群值。当箱形图很短时,就意味着很多数据点是相似的,因为很多值是在一个很小的范围内分布;当箱形图较高时,就意味着大部分的数据点之间的差异很大,因为这些值分布的很广。
通过图10~17的展示,我们可以发现与其余各PSOs算法相比,MJPSO算法在8个基准函数上的全局收敛值数据更为集中,且拥有较低的数据变异性。实验结果表明,基于摆脱局部最优的强性能和令人满意的收敛表现,所提出的MJPSO算法在与六种流行的PSO算法的比较中,取得了优异的成绩。

Figure 10. Box diagram of six PSOs for 20-dimensional f1(x)
图10. 在20维f1(x)函数上6种PSOs的箱型图

Figure 11. Box diagram of three PSOs for 20-dimensional f2(x)
图11. 在20维f2(x)函数上3种PSOs的箱型图

Figure 12. Box diagram of seven PSOs for 20-dimensional f3(x)
图12. 在20维f3(x)函数上7种PSOs的箱型图

Figure 13. Box diagram of six PSOs for 20-dimensional f4(x)
图13. 在20维f4(x)函数上6种PSOs的箱型图

Figure 14. Box diagram of six PSOs for 20-dimensional f5(x)
图14. 在20维f5(x)函数上6种PSOs的箱型图

Figure 15. Box diagram of seven PSOs for 20-dimensional f6(x)
图15. 在20维f6(x)函数上7种PSOs的箱型图

Figure 16. Box diagram of seven PSOs for 20-dimensional f7(x)
图16. 在20维f7(x)函数上7种PSOs的箱型图

Figure 17. Box diagram of five PSOs for 20-dimensional f8(x)
图17. 在20维f8(x)函数上5种PSOs的箱型图
5. 结论
为了提高标准PSO方法的搜索能力,本文介绍了一种MJPSO算法。设计了一种新的变异策略来调整MJPSO算法中粒子的惯性权重参数和加速度系数。收敛性实验的结果表明,在八个典型基准函数上,所提出的MJPSO算法的性能优于六种流行的PSO算法。未来,我们的研究主题将集中在选择更复杂的动态策略以进一步有效跳出局部最优,以及对所提出的算法在理论上进行收敛性和稳定性的分析。
NOTES
*通讯作者。