一种矢量高斯学习的粒子群优化方法与流程

文档序号:12272413阅读:458来源:国知局
一种矢量高斯学习的粒子群优化方法与流程

本发明涉及一种矢量高斯学习的粒子群优化方法,属于群体智能优化技术领域。



背景技术:

粒子群优化算法(Particle Swarm Optimization,PSO)是在鱼群和鸟群等群体捕食行为的启发下,由Kennedy和Eberhart提出的一种群体智能优化技术。因其结构简单、参数设置少、实现容易等特点,提出后就受到学者的关注,并在电力系统保护、无线传感器网络覆盖、多目标问题求解、图像处理等优化领域广泛应用,但PSO算法存在的早熟收敛和局部寻优能力差等缺点,限制了PSO的实际应用。

高斯学习策略(Gaussian Learning,GL)是近年来计算智能领域内出现的一种新技术,该策略的主要特征是在个体上增加一个服从高斯分布的随机扰动项,生成个体的高斯解,同时计算并评估其高斯解,从中选择较优的解作为下一代个体,扩大搜索区域的范围,增强算法的全局勘探能力,目前已运用于粒子群优化算法、和声搜索算法、人工蜂群算法和细菌觅食优化算法,并取得较好应用。但在进行高斯学习时,粒子的所有维度都进行高斯学习,学习的针对性不强,另外,由于都采用一种学习策略,粒子性质易于趋同,群体多样性减少,学习效果不佳。



技术实现要素:

发明目的:针对现有技术中存在的问题,本发明提供一种矢量高斯学习的粒子群优化方法(Particle Swarm Optimization based on Vector Gaussian Learning,VGL-PSO)。方法采用矢量高斯学习策略生成精英粒子的矢量高斯解,该策略不是对所有粒子,而是仅对精英粒子进行高斯学习,同时在学习过程中,粒子学习的维度空间逐渐变化,该策略学习的针对性更强、群体的多样性易于保持。方法在进化过程中,通过阈值判断当前算法的进化状态,若算法陷入“早熟”状态,自适应地调整惯性权重和采用矢量高斯学习策略对算法进行进化,避免种群最优位置陷入局部最优而致使整个群体出现搜索停滞,增强算法的局部开采能力。相比其他改进方法,VGL-PSO算法思路简单,实现容易,仿真实验结果表明:VGL-PSO算法逃离局部最优的能力强,收敛速度快。

技术方案:一种矢量高斯学习的粒子群优化方法,包括如下内容:

矢量高斯学习策略

定义1高斯解(Gaussian Solution,GS),在M维搜索空间中的一个点(可视为可行解)Xi=(xi1,xi2,…,xiM),其对应的高斯解可定义如下:

其中,为第i个个体第j维经高斯学习后的新位置,xij为第i个个体第j维的原有位置,Gauss_random(μ,σ2)为高斯随机数函数,μ和σ2分别为高斯随机函数的均值和方差。

定义2矢量高斯解(Vector Gaussian Solution,VGS),在M维搜索空间中的精英粒子gBest,其对应的矢量高斯解gBest*,可定义如下:

num=Int((1.0-i*1.0/iterNum)*M)+1 (4)

m=rand()%M (5)

其中,M为粒子总维度数;i和iterNum分别表示当前迭代次数和最大迭代次数;num为进行矢量高斯学习的维度空间大小,随着迭代次数的增加,学习的维度空间越来越小,直至变成1维;Int()是取整函数;m(0≤m<M-1)为一随机整数,表示选择的是M维中的第m维,且同一次更新选择的所有num个维度均不同;Gauss_random(μ,σ2)为高斯随机数函数;gBestm为精英粒子第m维的位置信息。

在矢量高斯学习策略中,为平衡粒子的全局探测能力与局部开发能力,需对矢量高斯学习的方差进行动态调整,进化前期σ2较大,粒子的搜索空间大,算法的全局搜索能力强;随着进化的深入,σ2越来越小,粒子的搜索空间变小,算法的局部开发能力强。其方差调整策略定义如下:

设在某一次迭代过程中,矢量高斯学习策略选择的维度空间大小为num(1≤num≤M),选择的维度数值分别是j1,j2,…,jnum,其中1≤j1且jnum≤M,则

σ2=gBestmin*r3 (8)

其中:min()函数为最小值选取函数,r3为[0,0.5]之间的随机数,gBestjnum表示精英粒子第jnum维的位置。

同时,我们还根据算法所处的进化状态对算法的惯性权重w作了相应改进:若算法陷入“早熟”状态,我们将w设置为随算法迭代次数的增加而减小;反之,我们将w设置为固定值。公式如下:

其中,w为惯性权重;tag为种群最优位置连续未更新的次数;limit为判断算法陷入“早熟”状态的阈值。

VGL-PSO算法的具体步骤如下:

1)初始化所有粒子,设置相关参数,如:c1,c2,w,tag,limit等。

2)计算和评价粒子适应值。

3)判断种群当前的进化状态,若tag≤limit,则视为正常状态,转入步骤4),否则视为“早熟”状态,转入步骤5)。

4)采用固定的惯性权重,利用式(1)和(2)对粒子速度和位置进行更新,同时更新粒子最优位置和全局最优位置信息;判断全局最优位置是否有更新,如有更新,设置tag=0,否则tag++;转入步骤6)。

5)利用式(4)、(5)、(6)、(7)和(8)对精英粒子进行矢量高斯学习;同时采用式(9)的线性下降惯性权重和式(1)和(2)对粒子进行更新,同时更新粒子最优位置和全局最优位置信息;判断全局最优位置是否有更新,如有更新,设置tag=0,否则tag++;转入步骤6)。

6)检验是否满足终止条件,若满足,则停止迭代,输出全局最优位置gBest及其对应的适应值,否则转到3)。

附图说明

图1为测试函数在不同limit下的变化曲线,(a)为单峰函数,(b)为多峰函数;

图2为单峰函数的进化曲线,(a)为f1函数进化曲线,(b)为f2函数进化曲线,(c)为f3函数进化曲线,(d)为f4函数进化曲线;

图3为多峰函数的进化曲线,(a)为f5函数进化曲线,(b)为f6函数进化曲线,(c)为f7函数进化曲线,(d)为f8函数进化曲线。

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

粒子群优化算法是一种模拟生物群体觅食行为,通过个体之间彼此协作找寻最优解的计算技术。设总数为N的粒子群体在一个M维的搜索空间中飞行,第i(i=1,2,...,N)个粒子的速度和位置分别为:Vi=[vi1,vi2,...,viM]T,Xi=[xi1,xi2,...,xiM]T。对于第k次迭代,粒子i的位置和速度按照下式进行更新:

其中:m=1,2,...,M;w为惯性权重;c1和c2为学习因子;r1和r2为[0,1]之间的随机数。为第k-1次迭代中找到的种群最优位置,为第i个粒子第k-1次迭代时找到的粒子个体历史最优位置。

矢量高斯学习的粒子群优化方法(VGL-PSO),包括如下内容:

矢量高斯学习策略

定义1高斯解(Gaussian Solution,GS),在M维搜索空间中的一个点(可视为可行解)Xi=(xi1,xi2,…,xiM),其对应的高斯解可定义如下:

其中,为第i个个体第j维经高斯学习后的新位置,xij为第i个个体第j维的原有位置,Gauss_random(μ,σ2)为高斯随机数函数,μ和σ2分别为高斯随机函数的均值和方差。

种群最优位置(即精英粒子所在位置)是其它粒子的引领者和学习榜样,其自身没有榜样可以学习。因此,若精英粒子陷入局部最优,算法将进入“早熟”状态;另外,粒子群优化算法在进化过程中,是对粒子的整个速度和位置进行学习,这样做的优点是:处理方便、实现容易,缺点是:在学习过程中,将其他粒子的优点和缺点都学习到,学习的针对性不强,学习效果不佳。为此,在定义矢量高斯学习策略时,为平衡全局探测能力与局部开发能力,精英粒子高斯学习的维度空间大小随着进化线性递减。在进化前期选取较大的维度空间进行学习,增强算法的探索能力,提高精英粒子搜索全局最优位置的概率;随着迭代的深入,算法需要较小的探索能力和较大的开发能力,特别是在进化后期,可能是因为某一维或者某几维陷入局部最优,后期选取较小的维度空间进行学习,其它维度上的信息仍然保持不变,这样能够最大限度保留精英粒子的优势信息,帮助算法逃离局部最优,提高解的精度。

定义2矢量高斯解(Vector Gaussian Solution,VGS),在M维搜索空间中的精英粒子gBest,其对应的矢量高斯解gBest*,可定义如下:

num=Int((1.0-i*1.0/iterNum)*M)+1 (4)

m=rand()%M (5)

其中,M为粒子总维度数;i和iterNum分别表示当前迭代次数和最大迭代次数;num为进行矢量高斯学习的维度空间大小,随着迭代次数的增加,学习的维度空间越来越小,直至变成1维;Int()是取整函数;m(0≤m<M-1)为一随机整数,表示选择的是M维中的第m维,且同一次更新选择的所有num个维度均不同;Gauss_random(μ,σ2)为高斯随机数函数;gBestm为精英粒子第m维的位置信息。

在矢量高斯学习策略中,为平衡粒子的全局探测能力与局部开发能力,需对矢量高斯学习的方差进行动态调整,进化前期σ2较大,粒子的搜索空间大,算法的全局搜索能力强;随着进化的深入,σ2越来越小,粒子的搜索空间变小,算法的局部开发能力强。其方差调整策略定义如下:

设在某一次迭代过程中,矢量高斯学习策略选择的维度空间大小为num(1≤num≤M),选择的维度数值分别是j1,j2,…,jnum,其中1≤j1且jnum≤M,则

σ2=gBestmin*r3 (8)

其中:min()函数为最小值选取函数,r3为[0,0.5]之间的随机数,gBestjnum表示精英粒子第jnum维的位置。

同时,我们还根据算法所处的进化状态对算法的惯性权重w作了相应改进:若算法陷入“早熟”状态,我们将w设置为随算法迭代次数的增加而减小;反之,我们将w设置为固定值。公式如下:

其中,w为惯性权重;tag为种群最优位置连续未更新的次数;limit为判断算法陷入“早熟”状态的阈值。

VGL-PSO算法的具体步骤如下:

1)初始化所有粒子,设置相关参数,如:c1,c2,w,tag,limit等。

2)计算和评价粒子适应值。

3)判断种群当前的进化状态,若tag≤limit,则视为正常状态,转入步骤4),否则视为“早熟”状态,转入步骤5)。

4)采用固定的惯性权重,利用式(1)和(2)对粒子速度和位置进行更新,同时更新粒子最优位置和全局最优位置信息;判断全局最优位置是否有更新,如有更新,设置tag=0,否则tag++;转入步骤6)。

5)利用式(4)、(5)、(6)、(7)和(8)对精英粒子进行矢量高斯学习;同时采用式(9)的线性下降惯性权重和式(1)和(2)对粒子进行更新,同时更新粒子最优位置和全局最优位置信息;判断全局最优位置是否有更新,如有更新,设置tag=0,否则tag++;转入步骤6)。

6)检验是否满足终止条件,若满足,则停止迭代,输出全局最优位置gBest及其对应的适应值,否则转到3)。

仿真实验

基准测试函数

为了验证VGL-PSO算法的性能,用8个经典测试函数来测试VGL-PSO算法。其中f1~f4是单模态函数,在给定搜索范围内只有一个极值点,主要检验算法的收敛速度和寻优精度,f5~f8是多模态函数,在给定搜索范围内有多个局部极值点,主要考察算法的全局搜索能力和逃离局部最优能力。

1)Sphere函数(取值范围:[-100,100]D,理论最优值:0):

2)Schwefel’s P2.22函数(取值范围:[-10,10]D,理论最优值:0):

3)Quadric函数(取值范围:[-100,100]D,理论最优值:0):

4)Quadric Noise函数(取值范围:[-1.28,1.28]D,理论最优值:0):

5)Rastrigin函数(取值范围:[-5.12,5.12]D,理论最优值:0):

6)Noncontinuous Rastrigin函数(取值范围:[-5.12,5.12]D,理论最优值:0):

7)Ackley函数(取值范围:[-32,32]D,理论最优值:0):

8)Generalized Penalized函数(取值范围:[-50,50]D,理论最优值:0):

算法进化状态的判断

VGL-PSO算法通过阈值limit判断算法当前所处的进化状态,并根据当前状态自适应调整惯性权重取值和选择不同的学习策略,因此,阈值limit大小的选取对算法的性能有重要影响。若limit设置过大,则粒子不能及时跳出局部最优,耗费了算法的评估次数;若limit设置过小,粒子被强制认为陷入局部最优,影响粒子自身的学习。因此,对于limit值的设置,我们应该慎之又慎,为研究limit取值对函数性能的影响,本文在limit取不同值时,分别计算8个经典复杂测试函数的平均最优适应值。在粒子规模为20,粒子维度30的条件下,测试函数的平均最优适应值在不同limit下的变化曲线如图3所示.

观察图1(a)可知,针对单峰函数,在limit取不同值的情况下,除Quadric Noise函数变化不明显外,其它3个函数的平均最优适应值随limit的变化存在明显差异,当limit取值在[50,150]区间时,它们平均最优适应值的对数随limit的增大而增大,算法收敛精度逐渐下降;当limit取值大于150时,函数的曲线几乎没有改变,算法收敛精度没有明显变化。从图1(b)可看出,针对多峰函数在limit取不同值时,其中只有2个函数对limit的变化较敏感,当limit取值在区间[50,100]时,函数的平均最优适应值无明显变化;但随着limit取值的增大,函数的平均最优适应值精度逐渐减小;当limit>150时,函数的变化曲线趋于平缓,算法收敛精度没有明显变化。综上所述,为了平衡单峰和多峰函数的性能,将limit的值设为50是一个比较理想的选择。

仿真实验

为了验证VGL-PSO算法的性能,选取FIPS[1]、HPSO-TVAC[2]、DMS-PSO[3]、CLPSO[4]、APSO[5]和GDPSO[6]等6个经典粒子群优化算法进行对比实验。VGL-PSO算法的种群规模N=20,评估次数200000,学习因子c1=c2=2.0,算法进化状态limit=50,其它算法的参数设置参见相关文献。

[1]Mendes R,Kennedy J,Neves J.The fully informed particle swarm:Simpler,maybe better[J].IEEE Transaction on Evolutionary Computation,2004,8(3):204–210.

[2]Rathaweera A,Halgamuge S,Watson H.Self-organizing hierarchical particle swarm optimizer with time-varying acceleration coefficients[J].IEEE Transaction on Evolutionary Computation,2004,8(3):240-255.

[3]Liang J J,Suganthan P N.Dynamic multi-swarm particle swarm optimizer[J].Proceedings of IEEE Swarm Intelligence Symposium,2005,8(10):124–129.

[4]Liang J J,Qin A K,Suganthan P N,et al.Comprehensive learning particle swarm optimizer for global optimization of multi-modal function[J].IEEE Transaction on Evolutionary Computation,2006,10(3):281-295.

[5]Zhi-hui Zhan,Jun Zhang,Yun Li,et al.Adaptive Particle Swarm Optimization[J].IEEE Transactions on Systems,Man,and Cybernetics,2009,39(6):1362–1381.

[6]朱德刚,孙辉,赵嘉,等.基于高斯扰动的粒子群优化算法[J].计算机应用,2014,34(3):754-759.

表1给出了7种算法在30维时的寻优结果。表中Mean和Std.Dev分别表示在限定的评估次数下算法的平均最优适应值及标准差,标准差反映了算法的稳定性。为了消除算法的随机性的影响,算法独立运行了50次,以最终的平均值作为算法的最后寻优结果。

表1 7种优化算法30维实验对比结果

从表1数据对比结果可知,VGL-PSO算法与其它6种经典改进算法相比,不论是寻优精度,还是稳定性都有很大优势。在单模态函数f1、f2和f3上,VGL-PSO算法的收敛精度远远高于其他算法;在多模态函数上,VGL-PSO算法在f5、f6和f7上也有非常好表现,特别地,f5和f6函数是典型的非线性多模态函数,具有广泛的搜索空间,复杂多模态问题通常被认为是优化算法很难处理的,一般算法都很难搜索到最优位置,而VGL-PSO算法却能够很好地搜索到全局最优位置,虽然在f8函数上较GDPSO差,但通过后续的t检验可知,两者之间没有显著性差异。

t检验

为了判断VGL-PSO算法与其它6种算法的性能是否存在显著性差异,进行t检验。t检验的分位数为单侧0.05,自由度为30,t检验的临界值通过查表为1.697。当t>1.697时说明VGL-PSO优于其它算法,标记为“+”;当t<-1.697时说明VGL-PSO差于其它算法,标记为“-”;否则,说明VGL-PSO与其它算法无明显差异,标记为“=”。“w/t/l”表示VGL-PSO算法与所选算法相比在w个函数上优于该算法,t个函数上无明显差异,l个函数上差于该算法。表2给出了VGL-PSO算法与其它6种算法的t检验结果。

表2 VGL-PSO算法与其它6种算法的t检验结果

从表2中数据可知,VGL-PSO算法与经典的CLPSO算法在8个函数上的仿真实验相比,VGL-PSO在所有函数上都表现出绝对的优势;与HPSO-TVAC算法比较,除了在f7上无显著差异外,在其他7个函数上VGL-PSO也具有明显优势;与DMS-PSO算法在8个函数的仿真实验相比,除了在f1和f8上无显著差异外,在其他6个函数上,VGL-PSO算法有着很大的优势;与APSO算法比较,除了在f1、f6和f8上无显著差异外,在其他5个函数上,VGL-PSO算法依然具有很强的优势,同时,VGL-PSO与GDPSO算法相比,也在f3、f4和f6上有明显的优势。

算法收敛性能

为了更加直观的说明本文算法在进化过程中的收敛情况,比较VGL-PSO、GDPSO、APSO、CLPSO、DMS-PSO、HPSO-TVAC和FIPS等7种算法在8个测试函数上关于评估次数和适应值之间的关系。图2-图3是8个测试函数在30维上的进化曲线图,横轴为评估次数,纵轴为适应值的对数。

由图2-图3可知,本发明提出的VGL-PSO算法,通过采用矢量高斯学习策略,给种群最优位置的部分维度加上一个高斯随机数,能很好地增强算法逃离局部最优的能力和加速算法后期收敛速度。观察图2可知,VGL-PSO算法在处理单模态函数时,优势相当明显,其中f1、f2、f3三个函数的进化曲线几乎呈直线下降。从图3可知,VGL-PSO算法在处理复杂的多模态函数时,收敛速度也拥有非常大的优势,特别是f5和f6两个函数,在评估次数在2万次左右就可以寻找到最优位置,其它几种算法却很容易陷入局部最优,造成收敛速度变慢,甚至停滞不前。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1