基于MATLAB的粒子群优化算法及其应用
第20卷 第10期
文章编号:1006-9348(2003)10-0068-03
计 算 机 仿 真
2003年10月
基于MATLAB的粒子群优化算法及其应用
侯志荣,吕振肃
(兰州大学信息科学与工程学院,甘肃兰州730000)
摘要:该文探讨了粒子群优化算法及其改进,并提出了算法的离线性能评估准则和在线性能评估准则。在此基础上重点研究了MATLAB环境中粒子群优化算法的仿真方法,主要包括数据结构设计、参数编码以及进化信息跟踪等关键内容。最后,对典型的多峰函数优化试验表明:作者开发的粒子群优化算法结构简单,运行快,是一个通用有效的优化工具。关键词:粒子群优化;性能评估;仿真中图分类号:TP311 文献标识码:B
1 算法思想
粒子群优化算法(ParticleSwarmOptimization,PSO)是由E2
berhart博士与Kennedy博士发明的一种新的全局优化进化算
粒子每一维的最大速率限被限制为vMax,粒子每一维的坐标也被限制在允许范围之内。图1描述了粒子群优化算法的框架。
粒子群优化算法没有交叉与变异运算,所以算法结构简单,运行速度快。但是,基本粒子群优化算法在解空间内搜索时,有时会出现粒子在全局最优解附近“振荡”的现象,为了避免这个问题,我们可以作如下改进[2]:随着叠代进行,速度更新公式中的加权因子w由最大加权因子wMax线性减小到最小加权因子wMin。即:
w=wmax-iter法。该算法源于对鸟类捕食行为的模拟[1]。
粒子群优化算法首先初始化一群随机粒子,然后通过叠代找到最优解。在每一次叠代中,粒子通过跟踪两个“极值”来更新自己。一个是粒子本身所找到的最优解,即个体极值
pBest。另一个是整个种群目前找到的最优解,称之为全局极
值gBest。
粒子在找到上述两个极值后,就根据下面两个公式来更新自己的速度与位置[1]:
V=w3V+c13rand()3(pBest-Present)+
c23rand()3(gBest-Present)
(1)(2)
itermax
(3)
其中iter为当前叠代数,而itermax是总的叠代次数。
Present=Present+V 其中,V是粒子的速度,Present是粒子的当前位置,pBest与gBest见前面定义。rand()是
(0,1)之间的随机数,c1
2 算法性能评估准则
目前,对于粒子群优化算法的性能评估,还没有成熟的方法。考虑到粒子群优化算法与遗传算法具有诸多相似之处。本文拟将DeJong提出的两个用于定量分析遗传算法的测度引入粒子群优化算法。其中在线性能(on-lineperfor2
mance)测试动态特性,而离线性能(off-lineperformance)则测
和c2被称作学习因子。通常,c1=c2=2。w是加权系数,取值在0.1到0.9之间。
粒子通过不断学习更新,最终飞至解空间中最优解所在的位置,搜索过程结束。最后输出的gBest就是全局最优解。在更新过程中,
基金项目:甘肃省自然科学基金(ZS011-A25-016-G)收稿日期:2003-01-24
图1 粒子群优化算法框架图
收敛特性[3]。
211 在线性能评估准则
定义1 设Xe(s)为环境e下策略s的在线性能,fe(t)为时刻t或第t代中相应于环境e的目标函数或平均适应度函数,则Xe(s)可以表示为:
Xe(s)=
T
t=1
∑f
T
e(t)(4)
上式表明,如果在线性能用平均适应度表示,则通过简单计算从第一代到当前代的各代平均适应度值对世代数的平均值即可获得在线性能。式(4)中fe(t)为各代的平均适应度。
212 离线性能评估准则
定义2 设Xe3(s)为环境e下策略s的离线性能,则有:
—6
8—
1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
Xe(s)=
3
T
t=1
∑f3(t)
e
T
(5)
end
end
314 粒子位置更新
其中,fe3(t)=best{fe(1),fe(2),fe(3),…,fe(t)}。式(5)表明,离线性能是特定时刻最佳性能的累积平均。
粒子群中,在算法运行的每一代,粒子都根据式(2)更新自己的位置,需要注意的是,粒子位置更新后,各维坐标都不能超越取值区间。下面给出粒子位置更新的程序伪码。
fordimIndex=1:dimSize
3 基于MATLAB的仿真
311 参数编码
在MATLAB环境中,种群中粒子及其速度我们都采用实数编码。粒子参数编码格式如图2所示。其中,dimSize表示参数维度。粒子群编码格式参见图3,其中popSize表示种群大小。
X1,X2,X3,…,XdimSize
V1,V2,V3,…,VdimSize
F(X)
pos=x(dimIndex)+x(dimsize+dimIndex); ifpos>粒子该维最大取值 pos=粒子该维最大取值; elseifpos
x(dimIndex)=pos;
end315 主程序
粒子位置各维的表示 粒子速度各维的表示 适应度
图2 粒子编码格式
X11,X12,X13,…,X1dimSize,V11,V12,V13,…,V1dimSize,F(X1
)在MATLAB环境中,粒子群优化算法主程序运行后,将返回最优解,以及最优解对应的适应度。另外,考虑到算法性能评价的需要,还应该返回各代跟踪信息。跟踪信息采用图4所示编码结构。下面给出主程序的实现伪码:
1, Xe(s)
TraceInfo=
2, Xe(s)
T=
1,T=2,
POP=
X21,X22,X23,…,X2dimSize,V21,V22,V23,…,V2dimSize,F(X2)
……
XpopSize1,XpopSizedimSize,VpopSize1,…,XpopSizedimSize,F(XpopSize图3 粒子群编码格式
Xe3(s) Xe3(s)
3
(s)Xe
T=1T=2
312 粒子群初始化
……
iterMax,Xe(s)
T=iterMax,
T=iterMax
在MATLAB中初始化种群就是要产生一个随机矩阵,矩阵元素满足图3所示编码要求,下面给出其种群初始化伪码。其中,x表示粒子,objectFun为适应度函数。
fordimIndex=1:dimSize
图4 世代跟踪信息编码格式
x(dimIndex)=粒子取值区间内的随机值;
x(dimSize+dimIndex)=速度取值区间内的随机值; x(23dimSize+1)=objectFun(x(1:dimSize));
end
313 粒子速度更新
PSO算法主程序:foriter=1:iterMax
forpopIndex=1:popSize 评价各粒子的适应度; if粒子适应度>objectFun(pBest) pBest=粒子当前位置; end
if粒子适应度>objectFun(gBest) gBest=粒子当前位置; end
粒子速度更新;粒子位置更新,并计算粒子适应值;
end
在这里,粒子速度更新算法基于式(1)与式(3)。在
MATLAB中,粒子速度更新伪码如下:
fordimIndex=1:dimSize
w=最大加权因子-(最大加权因子-最小加权因子)
3当前世代数/总世代数; subtract1=pBest-x(1:dimSize); subtract2=gBest-x(1:dimSize);
tempV=w3x(dimSize+dimIndex)+23subtract1+23
subtract2;
计算TraceInfor(iter);
end
iftempV>vMax
x(dimSize+dimIndex)=vMax; elseiftempV
x(dimSize+dimIndex)=-vMax; else
x(dimSize+dimIndex)=tempV;
4 应用实例
基于上述思路在MATLAB中开发了PSO工具箱。用该
x∈(0,
(x-0.16)2+0.1
1)的最大值,取得了满意的结果。算法运行20次,全都收敛
算法求解六峰驼背函数f(x)=10+
—69
1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
—
到全局最优解0.1274936979,函数最大值为19.
[1**********]279。图5是六峰驼背函数在区间(0,1)上的特性
曲线,图6与图7分别是本文算法求解f(x)得到的离线性能曲线与在线性能曲线。进化代数为100
。
图7 PSO求解f(x)的在线性能曲线
图5
六峰驼背函数特性曲线
参考文献:
[1] JKennedy,RCEberhart.ParticleSwarmOptimization.IEEEInterna2
tionalConferenceonNeuralNetworks,Perth,Australia,1995.[2] YShi,RCEberhart.AModifiedSwarmOptimizer.IEEEInternation2
alConferenceofEvolutionaryComputation,Anchorage,Alaska,1998.[3] 陈国良,王煦法,庄镇权等.遗传算法及其应用[M].北京:人民
邮电出版社,1996.
[4] 王凌.智能优化算法及其应用[M].北京:清华大学出版社,
2001.
图6 PSO求解f(x)的离线性能曲线
[作者简介]
5 小结
本文开发了基于MATLAB的粒子群优化算法工具箱,并将其应用到典型的函数优化问题中,取得了较好效果。使用者只要给出新的适应度函数,未知参数集以及参数维度,就可以直接利用该工具箱求解,因此具有很强的通用性
。
侯志荣(1978-),男(汉族),四川省营山县人,硕士
研究生,研究方向为智能优化算法、数字信号处理、
Internet技术;
吕振肃(1946-),男(汉族),山西省沁水县人,兰州
大学信息科学与工程学院教授,研究方向为数字信
号处理、智能控制、计算机网络技术。
ParticleSwarmOptimizationwithApplicationBasedonMATLAB
HOUZhi-rong,LUZhen-su
(schoolofinformationscienceandengineering,lanzhouuniversity,LanzhouGansu730000,China)
ABSTRACT:Thispaperdiscussedtheparticleswarmoptimization(PSO)anditsimprovement.TheonlineperformanceandofflineperformanceevaluationofPSOisalsoprovided.Then,wefocuedonthestudyofdatastructuredesign,parametersformationandevolutionaryinformationtracebyMATLAB.Finally,theexperimentalresultsshowthatthisalgorithmwhichdevelopedbyusisanuniversalandeffectiveoptimizationtoolwithsimplestructureandlittlerunningtime.
KEYWORDS:Particleswarmoptimization(PSO);Performanceevaluation;Simulation
(上接第67页)
ResearchofSimulinkS-FunctioninVectorControlSystemSimulation
WEIZi-liang,ZHANGQing-fan
(schoolofcontrolscienceandengineering,ShandongUniversity,JinanShandong250061,china)
ABSTRACT:Asimulationmodelforinductionmotorisnewlydeveloped.ItsmathematicsmodelisrenewedintheformofstatefunctionandachievedbyS-function.Thesimulationresultsconfirmthevalidityofthemodel.Themodelcanbeconvenientlyusedinvectorcontrolsys2tem.
KEYWORDS:Model;Simulation;Vectorcontrolsystem
—7
0—
1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.