一种基于广义粒子群算法的参数优化及估计方法与流程

文档序号:15853341发布日期:2018-11-07 10:31阅读:430来源:国知局
一种基于广义粒子群算法的参数优化及估计方法与流程

本发明属于机器学习领域进行参数优化及估计的方法,具体涉及一种基于广义粒子群算法的参数优化及估计方法。

背景技术

粒子群算法(particleswarmoptimization,pso)是一种利用群体智能及信息共享来实现优化解搜索的生物算法,该算法的优点包括:全局并行启发式、结构简单进而便于理解、易于编程求解且不依靠函数梯度信息、实数编码且参数较少等。粒子群算法不仅在连续优化问题而且在离散优化问题中都展现出良好的性能,所以被大量应用于解决约束优化、多目标优化、动态优化等问题,成为群智能优化领域研究的热点。

粒子群算法的建模思想是仿生鸟群捕食行为的简化社会模型,1995年由学者kenndy和eberhart等人首次提出,粒子群算法和其它生物进化算法类似,需要在问题解空间中随机初始化一组解,该组解即为算法所定义的粒子,包括了粒子位置和粒子速度两个部分。粒子群算法利用惯性速度、个体极值和全局极值的线性组合对粒子速度和粒子位置进行更新,驱使粒子在解空间中向优解方向不断迭代更新前进搜索。对比遗传算法,粒子群算法省略了交叉算子及变异算子,粒子在解空间中跟随群体最优和个体历代最优的粒子方向施行优解搜索。

粒子群算法的研究主要包括三个方面:一个是粒子学习策略的研究。通过改进学习策略,可以增强粒子间的信息交流,增加种群粒子的多样性和粒子更新途径,进而实现对算法的全局搜索最优解的性能的提升。粒子群研究的第二个方面是理论研究,包括完善算法的搜索性能,讨分析粒子群算法的法的收敛性,分析算法的时间空间复杂度等。三是粒子群算法应用领域的研究。粒子群算法最初为eberhart提出并用于神经网络的训练,随后扩展到神经网络权重的估计和优化,进而被应用于模糊控制优化、模式识别、音视频分析、图像处理和数据挖掘等方面。另外粒子群算法也从最初的单目标优化扩展为多目标优化和约束优化问题等。



技术实现要素:

本发明为了克服现有技术存在的不足之处,提升粒子群算法参数优化估计的能力,提出一种广义粒子群算法(generalpso,gpso),通过修改标准pso算法的速度更新公式,在当前粒子更新速度认知部分中引入了其余粒子的个体极值信息,增强了粒子间的信息交流与共享,以提升优化性能。

为了实现上述发明目的,本发明采用如下技术方案:

一种基于广义粒子群算法的参数优化及估计方法,包括如下步骤:

步骤1:随机生成一组初始化粒子,取粒子数量为n,初始化包括粒子位置和速度的初始化;

步骤2:根据待优化问题定义适应度函数,由适应度函数计算每个粒子的适应值;

步骤3:对每个粒子i,比较该粒子的当前适应值和个体极值适应值,如果当前粒子适应值更好,则将其更新为粒子i的最好位置pi,best(λ)

步骤4:比较粒子i的适应值与全局极值位置,如果当前粒子i的适应值更好,则更替粒子i为全局极值gbest(t)(λ)

步骤5:对于每个待更新粒子i,由广义粒子群算法所定义的位置及速度更新函数,产生n个新的备选更新粒子,即得到这n个新粒子所对应的速度vi,j(λ+1)和位置xi,j(λ+1),同时计算这些粒子的适应值f(xi,j(λ+1));

步骤6:对于每个粒子i和生成的n个备选更替的粒子,以适应值f(xi,j(λ+1))最优化为标准确定最佳更替粒子的速度vi(λ+1)和位置xi(λ+1)

进一步,所述步骤1具体按如下步骤进行:

步骤1-1:假定在一个d维的优解搜索空间中,一个群体一般由n个粒子构成,n为群体中粒子个数也称为群体规模,其中第i个粒子的坐标位置可以用一个d维的向量表示,即为xi=(xi1,xi2,l,xid),i=1,2,l,d;第i个粒子的“飞行”速度和位置值类似,同样也是由一个d维的向量构成,记为vi=(vi1,vi2,l,vid),i=1,2,l,d;

第i个粒子的个体极值即为第i个粒子中历代所搜索到的最优位置,记为pi,best=(pi1,pi2,l,pid),i=1,2,l,n;粒子的全体历代所搜索到的最优位置被定义为全局极值,记为gbest=(g1,g2,l,gd);

通过在搜索空间对解的搜索,以实现对解的估计和适应度函数f(x)的最大化;一般根据实际优化问题定义适应度函数,若实际优化问题为最小化目标函数g(x),则定义适应度函数f(x)为式(1),若实际优化问题为最大化目标函数g(x),则定义适应度函数f(x)为式(2),使得适应度函数为向量变量x的最大化优化函数;

f(x)=-g(x)(1);

f(x)=g(x)(2);

步骤1-2:定义迭代次数为λ,最大迭代次数为λmax,初始化λ=0;在粒子取值范围[min,max]内随机生成一组初始化粒子,粒子数量为n,初始化d维粒子的位置xi(0)和速度xi(0)

进一步,所述步骤2具体为:将每个粒子位置xi(0)代入适应度函数中,计算每个粒子的适应度值f(xi(0))。

进一步,所述步骤3具体为:对每个粒子i,比较该粒子的当前适应值f(xi(λ))和个体极值适应值gbest(λ-1),如果当前粒子适应值更好,则将其更新为粒子i的最好位置pi,best(λ),即有pi,best(λ)=xi(λ);若λ=0,则pi,best(λ)=xi(0)

进一步,所述步骤4具体为:比较粒子i的适应值f(xi(λ))与全局极值位置gbest(λ-1),如果当前粒子i的适应值更好,则将其更替为全局极值gbest(λ),即有gbest(λ)=xi(λ);若λ=0,则

进一步,所述步骤5具体为:对于每个待更新粒子i,由公式(3)、(4)产生n个新的备选更新粒子,即得到这n个新粒子所对应的速度vi,j(λ+1)和位置xi,j(λ+1),同时计算这些粒子的适应值f(xi,j(λ+1));

vi,j(λ+1)=wvi(λ)+c1r1(pj,best(λ)-xi(λ))+c2r2(gbest(λ)-xi(λ))(3)

i=1,2,l,n,j=1,2,l,n

xi,j(λ+1)=xi(λ)+vi,j(λ+1)(4)

i=1,2,l,n,j=1,2,l,n

在式(3)、(4)中c1,c2为加速因子,取为正的常数;r1,r2为[0,1]之间的随机数,w称为惯性因子。

进一步,所述步骤6具体按如下步骤进行:

步骤6-1:对于每个粒子i和n个备选更替的粒子,由式(5)、(6)、(7)确定最佳更替粒子的速度vi(λ+1)和位置xi(λ+1)

vi(λ+1)=vi,k(λ+1)(6)

xi(λ+1)=xi,k(λ+1)(7)

步骤6-2:判断||f(xi(λ+1))-f(xi(λ))||<ε或λ>λmax,若成立,则xi(λ+1)为迭代算法参数估计出的最优参数估计值,并令xi(λ+1)=xi代入式(1)或(2)中,进而实现对优化函数的最优计算,ε,λmax是事先给定的阈值;若不成立,转步骤4,直到条件满足为止。

与已有技术相比,本发明的有益效果体现在:

1.gpso算法对于pso算法的向下兼容性

将pso算法速度更新公式和gpso算法速度更新式(3)进行对比可以知道,当式(3)中的pj,best(λ)(j=1,2,…,n)取到pi,best(λ)时,gpso算法速度更新公式即为标准pso算法速度更新公式,标准pso算法被蕴藏和包含于gpso算法中。另外由式(5)、(6)及(7)可以确定,gpso算法所生成的粒子位置xi(λ+1)gpso,它所对应的适应值必然不低于pso算法粒子位置xi(λ+1)pso的适应值,即恒有式(8)成立:

f(xi(λ+1)gpso)≥f(xi(λ+1)pso)(8)

2.gpso算法对极值信息的充分利用

在pso算法速度更新公式中,第i个粒子认知部分只提取了的自是个体极值pi,best(λ),所获得的极值信息是有限的和不充分的。在gpso算法式(3)中,gpso算法的速度更新公式认知部分中的个体极值pi,best(λ)改为了pj,best(λ)(j=1,2,l,n),gpso算法不仅使用了粒子i的自身个体极值,同时还利用了其余粒子j(j=1,2,l,n,j≠i)的个体极值,等价于提升了各个粒子间个体极值信息的共享、交流和利用,扩展了算法的搜索途径和范围,有利于全局优解搜索的进一步改进和提升。

附图说明

图1是基于sphere函数测试的pso、gpso全局极值变化情况;

图2是基于rastigrin函数测试的pso、gpso全局极值变化情况;

图3是基于griewank函数测试的pso、gpso全局极值变化情况。

具体实施方式

下面结合附图对本发明作进一步详细说明。

本发明一种基于广义粒子群算法(gpso算法)的参数优化及估计方法,修改了标准粒子群算法的速度更新公式,在当前粒子更新速度的认知部分引入了其余粒子的个体极值信息,当前粒子得到n(粒子群规模)个更新速度和n个对应的更新位置值,以适应度函数值为评价标准,选择使得函数值最大的粒子作为更新粒子。gpso算法增强了粒子间的信息交流和共享,且对粒子群算法具有向下兼容性,能够从理论上保障gpso算法较pso算法具有更强的优解索搜性能。

本发明的方法按如下步骤进行:

步骤1:假定在一个d维的优解搜索空间中,一个群体一般由n个粒子构成,n为群体中粒子个数也称为群体规模,其中第i个粒子的坐标位置可以用一个d维的向量表示,即为xi=(xi1,xi2,l,xid),i=1,2,l,d。第i个粒子的“飞行”速度和位置值类似,同样也是由一个d维的向量构成,记为vi=(vi1,vi2,l,vid),i=1,2,l,d。

第i个粒子的个体极值即为第i个粒子中历代所搜索到的最优位置,记为pi,best=(pi1,pi2,l,pid),i=1,2,l,n。粒子的全体历代所搜索到的最优位置被定义为全局极值,记为gbest=(g1,g2,l,gd)

通过在搜索空间对解的搜索,以实现对解的估计和适应度函数f(x)的最大化。一般根据实际优化问题定义适应度函数,若实际优化问题为最小化目标函数g(x),则定义适应度函数f(x)为式(1),若实际优化问题为最大化目标函数g(x),则定义适应度函数f(x)为式(2),使得适应度函数为向量变量x的最大化优化函数。

f(x)=-g(x)(1)

f(x)=g(x)(2)

步骤2:定义迭代次数为λ,最大迭代次数为λmax,初始化λ=0。在粒子取值范围[min,max]内随机生成一组初始化粒子,粒子数量为n,初始化d维粒子的位置xi(0)和速度xi(0)

步骤3:将每个粒子位置xi(0)代入适应度函数中,计算每个粒子的适应度值f(xi(0))。

步骤4:对每个粒子i,比较该粒子的当前适应值f(xi(λ))和个体极值适应值gbest(λ-1),如果当前粒子适应值更好,则将其更新为粒子i的最好位置pi,best(λ),即有pi,best(λ)=xi(λ)。若λ=0,则pi,best(λ)=xi(0)

步骤5比较粒子i的适应值f(xi(λ))与全局极值位置gbest-1),如果当前粒子i的适应值更好,则将其更替为全局极值gbest(λ),即有gbest(λ)=xi(λ)。若λ=0,则

步骤6:对于每个待更新粒子i,由公式(3)、(4)产生n个新的备选更新粒子,即得到这n个新粒子所对应的速度vi,j(λ+1)和位置xi,j(λ+1),同时计算这些粒子的适应值f(xi,j(λ+1))。

vi,j(λ+1)=wvi(λ)+c1r1(pj,best(λ)-xi(λ))+c2r2(gbest(λ)-xi(λ))(3)

i=1,2,l,n,j=1,2,l,n

xi,j(λ+1)=xi(λ)+vi,j(λ+1)(4)

i=1,2,l,n,j=1,2,l,n

在式(3)、(4)中c1,c2为加速因子,取为正的常数;r1,r2为[0,1]之间的随机数,w称为惯性因子。

步骤7:对于每个粒子i和n个备选更替的粒子,由式(5)、(6)、(7)确定最佳更替粒子的速度vi(λ+1)和位置xi(λ+1)

vi(λ+1)=vi,k(λ+1)(6)

xi(λ+1)=xi,k(λ+1)(7)

步骤8:判断||f(xi(λ+1))-f(xi(λ))||<ε或λ>λmax,若成立,则xi(λ+1)为迭代算法参数估计出的最优参数估计值,并令xi(λ+1)=xi代入式(1)或(2)中,进而实现对优化函数的最优计算,ε,λmax是事先给定的阈值。若不成立,转步骤4,直到条件满足为止。

实施例1:

在本实施例中,利用仿真实验验证所提出的gpso算法的寻优有效性,表1中的测试函数被选择用于gpso算法和pso算法作的对比测试。

表1标准测试函数集

表1中的标准测试函数相关性质如表2所示。

表2标准测试函数集性质

广义粒子群算法(gpso)是按如下步骤进行:

步骤1:假定在一个d维的优解搜索空间中,一个群体一般由n个粒子构成,n为群体中粒子个数也称为群体规模,其中第i个粒子的坐标位置可以用一个d维的向量表示,即为xi=(xi1,xi2,l,xid),i=1,2,l,d。第i个粒子的“飞行”速度和位置值类似,同样也是由一个d维的向量构成,记为vi=(vi1,vi2,l,vid),i=1,2,l,d。

第i个粒子的个体极值即为第i个粒子中历代所搜索到的最优位置,记为pi,best=(pi1,pi2,l,pid),i=1,2,l,n。粒子的全体历代所搜索到的最优位置被定义为全局极值,记为gbest=(g1,g2,l,gd)

通过在搜索空间对解的搜索,以实现对解的估计和适应度函数f(x)的最大化。一般根据实际优化问题定义适应度函数,若实际优化问题为最小化目标函数g(x),则定义适应度函数f(x)为式(1),若实际优化问题为最大化目标函数g(x),则定义适应度函数f(x)为式(2),使得适应度函数为向量变量x的最大化优化函数。

f(x)=-g(x)(1)

f(x)=g(x)(2)

基于标准测试函数的参数优化估计对比测试说明如下。

参数设置及实验说明为:

取函数初始范围的上限为两算法的速度上限vmax。粒子维数m为10,粒子的种群规模n为20,算法最大迭代次数为2000。pso算法和gpso算法有着相同的初始参数设置,惯性权重w采用线形递减策略,学习因子c1和c2都取为2。算法测试计算机的cpu配置为1.80ghz,内存容量为5.00gb。为了求最大值,取了所有测试函数值的相反数。

对于测试函数sphere,pso单次测试搜索到的全局极值为-0.0134,计算耗时为19.8530秒,gpso单次测试搜索到的全局极值为-0.0000,算法运算耗时为179.2840秒。图1显示了每次迭代的全局极值变化情况。

另外对于测试函数sphere,基于pso、gpso算法作十次测试,计算全局极值的平均。pso算法平均极值为-0.0172,平均耗时为16.2658;gpso算法的平均极值为-1.3629×10-221,平均耗时为190.5200。

对于测试函数rastigrin,pso单次测试搜索到的全局极值为-32.3280,耗时为19.1800秒,gpso单次测试搜索到的全局极值为-10.9445,算法总计耗时为162.6880秒。将每次迭代的全局极值变化情况用图2表现出来。

另外对于测试函数rastigrin,基于pso、gpso算法作十次测试,计算全局极值的平均。pso算法平均极值为-27.1280,平均耗时为13.8834;gpso算法的平均极值为-5.2733,平均耗时为159.1083。

对于测试函数griewank,pso单次测试搜索到的全局极值为-0.1357,耗时为17.1410秒,gpso单次测试搜索到的全局极值为-0.1180,耗时为183.3950秒。图3表现了算法迭代的全局极值演化情况。

另外对于测试函数griewank,基于pso、gpso算法作十次测试,计算全局极值的平均,平均耗时为15.0055。计算得到pso算法的平均极值为-0.1153,gpso算法的平均极值是-0.0857,十次平均算法耗时为155.6672。

步骤2:定义迭代次数为λ,最大迭代次数为λmax,初始化λ=0。在粒子取值范围[min,max]内随机生成一组初始化粒子,粒子数量为n,初始化d维粒子的位置xi(0)和速度xi(0)

步骤3:将每个粒子位置xi(0)代入适应度函数中,计算每个粒子的适应度值f(xi(0))。

步骤4:对每个粒子i,比较该粒子的当前适应值f(xi(λ))和个体极值适应值gbest(λ-1),如果当前粒子适应值更好,则将其更新为粒子i的最好位置pi,best(λ),即有pi,best(λ)=xi(λ)。若λ=0,则pi,best(λ)=xi(0)

步骤5比较粒子i的适应值f(xi(λ))与全局极值位置gbest-1),如果当前粒子i的适应值更好,则将其更替为全局极值gbest(λ),即有gbest(λ)=xi(λ)。若λ=0,则

步骤6:对于每个待更新粒子i,由公式(3)、(4)产生n个新的备选更新粒子,即得到这n个新粒子所对应的速度vi,j(λ+1)和位置xi,j(λ+1),同时计算这些粒子的适应值f(xi,j(λ+1))。

vi,j(λ+1)=wvi(λ)+c1r1(pj,best(λ)-xi(λ))+c2r2(gbest(λ)-xi(λ))(3)

i=1,2,l,n,j=1,2,l,n

xi,j(λ+1)=xi(λ)+vi,j(λ+1)(4)

i=1,2,l,n,j=1,2,l,n

在式(3)、(4)中c1,c2为加速因子,取为正的常数;r1,r2为[0,1]之间的随机数,w称为惯性因子。

步骤7:对于每个粒子i和n个备选更替的粒子,由式(5)、(6)、(7)确定最佳更替粒子的速度vi(λ+1)和位置xi(λ+1)

vi(λ+1)=vi,k(λ+1)(6)

xi(λ+1)=xi,k(λ+1)(7)

步骤8:判断||f(xi(λ+1))-f(xi(λ))||<ε或λ>λmax,若成立,则xi(λ+1)为迭代算法参数估计出的最优参数估计值,并令xi(λ+1)=xi代入式(1)或(2)中,进而实现对优化函数的最优计算,ε,λmax是事先给定的阈值。若不成立,转步骤4,直到条件满足为止。

根据三种测试函数测试的结果,不论是单次测试的全局极值,还是十次测试的平均全局极值,gpso算法的测试结果都比标准pso算法更靠近理论值,正如第四小节算法的性质分析一样,与pso算法相比,gpso算法能够更加充分的挖掘和利用各个粒子的个体极值信息,扩大了迭代搜索优解的路径和范围,另外gpso算法向下包容了pso算法,所以可以获得比pso算法更优的搜索结果。

在优解搜索耗时方面,由备选粒子速度及位置更新公式式(3)、(4)可知,对于单个粒子而言,gpso算法会产生n(粒子规模)个迭代粒子,然后依它们的适应值作优解选择,反之pso算法在每次迭代中只会产生一个迭代粒子,所以在理论上单个粒子的更新速度pso算法为gpso算法复n倍,从实验结果而言,不论是单次测试还是十次测试取平均,gpso算法耗时超过pso算法并大致为十倍左右,体现了两算法复杂度的差异性。

综上所述,本发明公开了一种基于广义粒子群算法的参数优化及估计方法,按如下步骤进行:1.随机生成一组初始化粒子,取粒子数量为n,初始化包括粒子位置和速度的初始化;2.根据待优化问题定义适应度函数,由适应度函数计算每个粒子的适应值;3.对每个粒子i,比较该粒子的当前适应值和个体极值适应值,如果当前粒子适应值更好,则将其更新为粒子i的最好位置pi,best(λ);4.比较粒子i的适应值与全局极值位置,如果当前粒子i的适应值更好,则更替粒子i为全局极值gbest(t)(λ);5.对于每个待更新粒子i,由广义粒子群算法所定义的位置及速度更新函数,产生n个新的备选更新粒子,即得到这n个新粒子所对应的速度vi,j(λ+1)和位置xi,j(λ+1),同时计算这些粒子的适应值f(xi,j(λ+1));6.对于每个粒子i和生成的n个备选更替的粒子,以适应值f(xi,j(λ+1))最优化为标准确定最佳更替粒子的速度vi(λ+1)和位置xi(λ+1)。本发明所提出的广义粒子群算法(gpso)修改了标准pso算法的速度更新公式,在当前粒子更新速度认知部分中引入了其余粒子的个体极值信息,使得当前粒子得到n(粒子群规模)个更新速度和n个对应的更新位置值,并选择最优适应值的粒子为迭代最终更新的粒子,类似pso算法更新gpso算法的全局极值和粒子的个体极值。gpso算法增强了粒子间的信息交流与共享,对pso算法具有向下兼容性,理论保证了gpso算法拥有比pso算法更优的搜索性能。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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