粒子群优化算法聚类分析与训练BP神经网络智能优化算法:最优化问题是指在一定的约束条件下,决定某个或某些可控制的因素应有的合理取值,使所选定的目标达到最优的问题。人们借鉴自然现象,提出了模拟退火法(SA)、遗传算法(GA)、神经网络法(NN);人们通过学习生物的生活规律,提出了蚁群算法(ACO)、粒子群优化算法(PSO)。人们将这些模仿自然现象及生物体的各种原理和机理的方法,称为智能优化算法。粒子群优化算法粒子群算法的起源粒子群优化算法(ParticleSwarmOptimization,PSO),是一种启发式群智能进化计算技术,由KennedyandEberhart于1995年提出,来源于对鸟群捕食的行为的研究,是一种基于迭代的优化工具。JamesKennedyreceivedthePh.D.degreefromtheUniversityofNorthCarolina,ChapelHill,in1992.HeiswiththeU.S.DepartmentofLabor,Washington,DC.HeisaSocialPsychologistwhohasbeenworkingwiththeparticleswarmalgorithmsince1994.Hehaspublisheddozensofarticlesandchaptersonparticleswarmsandrelatedtopics,incomputerscienceandsocialsciencejournalsandproceedings.HeisacoauthorofSwarmIntelligence(SanMateo,CA:MorganKaufmann,2001),withR.C.EberhartandY.Shi,nowinitsthirdprinting.RussellC.Eberhart(M’88–SM’89–F’01)receivedthePh.D.degreeinelectricalengineeringfromKansasStateUniversity,Manhattan.HeistheChairandProfessorofElectricalandComputerEngineering,PurdueSchoolofEngineeringandTechnology,IndianaUniversity–PurdueUniversityIndianapolis(IUPUI),Indianapolis,IN.HeiscoeditorofNeuralNetworkPCTools(1990),coauthorofComputationalIntelligencePCTools(1996),coauthorofSwarmIntelligence(2001),ComputationalIntelligence:ConceptstoImplementations(2004).Hehaspublishedover120technicalpapers.Dr.EberhartwasawardedtheIEEEThirdMilleniumMedal.In2002,hebecameaFellowoftheAmericanInstituteforMedicalandBiologicalEngineering.近年PSO方面文献的数量22412161849106100020406080100120199519961997199819992000200120022003粒子群算法的主要应用(一)函数优化(二)神经网络训练(三)工程领域应用(四)PSO算法还在生物工程、电磁学、数据挖掘等很多领域都取得了较好的效果。一.粒子群算法的原理原始粒子群优化算法标准粒子群优化算法原始粒子群优化算法Pbest:个体极值(粒子自身所找到的当前最优解)Gbest:全局极值(整个群体当前找到的最优解)设D维搜索空间中,有M个粒子,其中第i个的位置是Xi=(xi1,xi2,...xiD),速度为Vi=(vi1,vi2,...,viD),i=1,2,…,M。搜索到的历史最优位置为Pi=(pi1,pi2,...,piD),整个粒子群体搜索到的最优位置为Pg=(pg1,pg2,...,pgD)。Knenedy和Eberhrtn最早提出的PSO算法的位置和速度公式的方程如下:(1-1)(1-2)其中i=1,2,…,M;d=1,2,…,D;r1和r2是两个相互独立的随机数,服从[0,1]上的均匀分布1122(1)()(())(())ididididgdidVtVtcrpxtcrpxt(1)()(1)idididXtxtVt标准粒子群优化算法带惯性权重的标准粒子群算法ShiY.H和Eberhart[在记忆部分引入惯性权重ω,于是公式(2-1)可以修改成为如下公式:(1-3)带收敛因子的标准粒子群算法Clerc建议采用收缩因来子保证PSO算法收敛,于是公式(2-1)修改成如下公式:(1-4)其中,为收缩因子,。从数学上分析,惯性权值ω和收缩因子这两个参数是等价的。12,4cc1122(1)()(())(())ididididgdidVtVtcrpxtcrpxt1122(1)[()(())(())]ididididgdidVtVtcrpxtcrpxt22|24|原始PSO算法与标准PSO算法向量图比较图1原始PSO图2标准PSO二.粒子群算法的实现原始PSO算法流程算法流程图原始PSO算法流程步骤l:初始化所有粒子(种群规模为Size,粒子在D维空间中搜索),对每个粒子随机给定初始位置和初始速度;每个粒子的只设为其初始位置Pi,Pi中的最好值设为Pbest;步骤2:根据式(2-1)和(2-2)更新每个粒子的速度和位置;对每个粒子进行速度越限检查确保粒子速度在[-Vmax,Vmax]之间;对每个粒子进行位置越限检查,确保粒子位置在[-Xmax,Xmax]之间;步骤3:根据目标函数,计算出每个粒子的适应值;步骤4:对每个粒子,将步骤3中计算出的适应值与其经历过的个体最佳Pbest的适应值进行比较,如果优于Pbest,则将其作为当前的最好位置;将其适应值与群体最佳gbest的适应值进行比较,如果优于gbest,则用该粒子适应值Pi,取代原群体最优适应值gbest;步骤5:根据式(2-1)和(2-2)更新每个粒子的速度和位置;步骤6:检查终止条件(达到给定的迭代次数或者满足了足够好的适应值等),若满足,终止迭代,输出相关结果;否则返回步骤2算法流程图:否是是是否是否初始化粒子以及粒子速度粒子适应度检测粒子速度更新粒子位置更新Present优于Pbest?Present=PbestPresent优于Gbest?Present=Gbest算法收敛准则满足?输出Gbest三.粒子群算法的参数分析群体规模m惯性权重ω最大速度迭代次数runmaxv算法的参数分析群体规模m群体规模相当于数值遗传算法中的population。对于一般的优化问题而言,粒子群算法对群体的大小的设定并不十分敏感,一般可以取值为10~40,对较难或特定类别的问题可以取到100~200。与数值遗传算法相比,粒子群算法中个体的数据结构虽然复杂一些,但它要求同时使用的个体数也相应地少很多。所以在对复杂问题的优化方面,粒子群算法对计算机内存的耗用要相对少一些。算法的参数分析惯性权重ω速度计算公式的三个分量中,惯性速度分量vintertia与适应度的关系较小,由于初始的速度是一个随机量。因此,vinertia主要代表的是速度中随机的部分。为了保证迭代过程最后收敛,速度计算公式中惯性速度分量vinertia的权重将逐渐减弱,因此其惯量因子ω将随着迭代的过程单调下降。在整个迭代过程中,ω的取值为0到1之间的实数。具体采用哪一种方法来减小速度惯量因子可以有很多方法,一般情况可以用线性递减公式来对惯量因子进行计算。ω的作用是保持运动惯性,使其有扩展搜索空间的趋势,有能力探索新的区域。自适应粒子群优化算法,则是自适应调节ω。算法的参数分析最大速度最大速度决定当前位置与最好位置之间的区域的分辨率(或精度)。如果太高,微粒可能会飞跃最优解;如果太小,则粒子不能在局部极小点之外进行足够的探索,会陷入到局部极值区域内。这种限制可以达到防止计算溢出、决定问题空间搜索的速度的目的。maxv算法的参数分析迭代次数run由于粒子群算法中的速度计算公式受到惯量因子的影响,而惯量因子的变化规律又与最大迭代次数run有关。因此,在粒子群算法中,最大迭代次数是在迭代开始之前必须确定的参数之一。最大迭代次数不仅影响速度计算公式中的惯性因子,而且还是整个迭代过程的中止条件。这一点上,粒子群算法和数值遗传算法采用适应度阀值作为中止条件不同。对于不同的优化问题,最大迭代次数run可以有不同的取值。对于一般的简单优化问题而言,最大迭代次数一般取值为10000左右。四.算法测试函数PSO算法常用的测试函数:Griewank、Rastrigrin、Sphere、Schwefel、Ackly和Rosen-brock等。常用测试函数函数名表达式维数Griewank30Rastrigrin30Sphere30Schwefel10Ackly30Rosen-brock302111()cos14000innxiiifxxi21()[10cos(2)10]niiifxXx21()niifxX61()sin(||)niiifxXx21111()20exp[0.2][cos(2)]20nniinniifxXespxe122211()(100()(1))niiiifxxxx常用测试函数五.与BP神经网络的结合人工神经网络是由人工神经元互连而成的网络,它从微观结构和功能上实现对人脑的抽象和简化,具有许多优点。对神经网络的权值系数的确定,传统上采用反向传播算法(BP算法)。BP网络是一种多层前向反馈神经网络,BP算法是由两部分组成:信息的正向传递与误差的反向传播。在反向传播算法中,对权值的训练采用的是爬山法(即:δ算法)。这种方法在诸多领域取得了巨大的成功,但是它有可能陷入局部最小值,不能保证收敛到全局极小点。另外,反向传播算法训练次数多,收敛速度慢,使学习结果不能令人满意。基于以上问题的解决,PSO与BP的结合有很重要的意义。应用实例实验数据选择:来源于某年10月1-5号的电价,该数据集包括96组数据,每组数据记录了5个不同的数据。实验一:应用PSO算法,对该组数据进行聚类分析,其参数设置如下,学习因子C1=2,、C2=1.8,惯性权重w随迭代次数线性地由0.9减小到0.4,最大迭代次数取为200次,粒子个数N=40。类别数K=4.实验二:应用PSO训练BP神经网络,并对样本数据其进行评估预测。选用BP网络层结构。参数设置:学习因子C1=2,、C2=1.8,惯性权重w随迭代次数线性地由0.9减小到0.4,最大迭代次数取为200次,粒子个数N=40,类别数K=4,网络层节点数定义为3个。结论:为了解决基于PSO算法易陷入局部极小值,且在BP网络训练中不能及时根据误差的变化情况调整训练策略,导致训练效果很难继续提高,甚至出现“停滞”现象的问题,本文提出了一种PSO算法与BP算法结合,该算法能够根据寻优过程的实现,从而达到更好的效果。谢谢^_^