您好,欢迎访问三七文档
ParticleSwarmOptimization(PSO)粒子群算法DepartmentofIndustrialEngineeringandManagement算法起源•粒子群算法源于复杂适应系统(ComplexAdaptiveSystem,CAS)。•CAS理论于1994年正式提出,CAS中的成员称为主体。比如研究鸟群系统,每个鸟在这个系统中就称为主体。主体有适应性,它能够与环境及其他的主体进行交流,并且根据交流的过程“学习”或“积累经验”改变自身结构与行为。整个系统的演变或进化包括:新层次的产生(小鸟的出生);分化和多样性的出现(鸟群中的鸟分成许多小的群);新的主题的出现(鸟寻找食物过程中,不断发现新的食物)。CAS系统中的主体具有4个基本特点•首先,主体是主动的、活动的。•主体与环境及其他主体是相互影响、相互作用的,这种影响是系统发展变化的主要动力。•环境的影响是宏观的,主体之间的影响是微观的,宏观与微观要有机结合。•最后,整个系统可能还要受一些随机因素的影响。简介•起源–生物社会学家对鸟群寻找食物行为的研究•原理–我们可以设想这样的一个场景,一群鸟再随机搜寻食物。这个区域里只有一块食物。所有的鸟都不知道食物再哪里,但他们知道目前距离食物还有多远,那么找到食物的最佳策略是什么?最简单的方法就是找寻距离食物最近的鸟之周围区域及根据自己本身飞行的经验判断食物的所在。鳥群的覓食行為FoodGlobalBestSolutionPastBestSolutionPSO算法•PSO算法就从这种生物种群行为特性中得到启发并用于求解优化问题。在PSO中,每个优化问题的潜在解都可以想象成d维搜索空间上的一个点,我们称之为“粒子”(Particle),所有的粒子都有一个被目标函数决定的适应值(FitnessValue),每个粒子还有一个速度决定他们飞翔的方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索。Reynolds对鸟群飞行的研究发现。鸟仅仅是追踪它有限数量的邻居但最终的整体结果是整个鸟群好像在一个中心的控制之下.即复杂的全局行为是由简单规则的相互作用引起的。特点•分布式搜寻•具记忆性•组件较少,容易实现•适合在连续性的范围内搜寻具体描述•PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO中的粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。大家也可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。这个过程我们转化为一个数学问题。寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。该函数的图形如下:y=1-cos(3*x)*exp(-x)•当x=0.9350-0.9450,达到最大值y=1.3706。为了得到该函数的最大值,我们在[0,4]之间随机的洒一些点,为了演示,我们放置两个点,并且计算这两个点的函数值,同时给这两个点设置在[0,4]之间的一个速度。下面这些点就会按照一定的公式更改自己的位置,到达新位置后,再计算这两个点的值,然后再按照一定的公式更新自己的位置。直到最后在y=1.3706这个点停止自己的更新。与粒子群算法对照•这两个点就是粒子群算法中的粒子。•该函数的最大值就是鸟群中的食物•计算两个点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的适应度函数。•更新自己位置的一定公式就是粒子群算法中的位置速度更新公式。第一次初始化第一次更新位置第二次更新位置第21次更新最后的结果(30次迭代)算法介绍•每个寻优的问题解都被想象成一只鸟,我们也称为“Particle”粒子。•所有的Particle都有一个fitnessfunction以判断目前的位置之好坏。•每一个Particle必须赋予记忆性,能记得所搜寻到最佳位置。•每一个Particle还有一个速度以决定飞行的距离与方向。算法流程1.Initial:将群族做初始化,以随机的方式求出每一Particle之初始位置与速度。2.Evaluation:依据fitnessfunction计算出其fitnessvalue以作为判断每一Particle之好坏。3.FinethePbest:找出每一Particle到目前为止的搜寻过程中最佳解,这个最佳解我们将之称为Pbest。4.FinetheGbest:找出所有Particle到目前为止所搜寻到的整体最佳解,此最佳解我们称之为Gbest。5.UpdatetheVelocity:依据式(1)与式(2)更新每一Particle之速度与位置。6.回到步骤2.继续执行,直到获得一个令人满意的结果或符合终止条件为止。1.Initial•将群族做初始化,以随机的方式求出每一Particle之初始位置与速度,这些随机的Particle限定在规定的范围内。2.速度更新函数•Vid:每一Particle在第d维之速度•i:Particle之编号•d:维度•w:InertiaWeight•c1、c2:学习常数•Rand():一介于0至1的随机数•Pid:每一Particle到目前为止,所出现的最佳位置•Pgd:所有Particle到目前为止,所出现的最佳位置•xid:每一Particle目前之所在(2)(1))(())(()21ididididgdididididVxxxpRandcxpRandcVwV3.更新位置•粒子群内的每一个粒子点更新如下公式•更新之后的点也必须限定在规定范围内(2)(1))(())(()21ididididgdididididVxxxpRandcxpRandcVwV4.记忆更新•在符合限制下,更新PidPgd•Pid←piIFf(pi)Pid•Pgd←piIFf(pi)Pgd•f(x)是一个目标函数受限于最大化5.终止条件•重复步骤2到4直到达到中止条件•最后会得到Pgd而f(Pgd)就是解的结果参数设定•c1、c2:学习常数一般设定为c1=c2=2不过在文献中也有其它的取值,一般设定c1=c2值介于0~4之间•粒子数:一般取20~40个,大部分的问题用10~20个粒子就能取的不错的结果。•Vmax:最大速度,决定粒子再一个循环中最大的移动距离•例如:•问题fitnessfunction:f(x)=x12+x22+x32•其中限制式为-10=x1,x2,x3=10•则Vmax的大小就是10-(-10)=20粒子群算法分类•标准粒子群算法的变形•在这个分支中,主要是对标准粒子群算法的惯性因子、收敛因子(约束因子)、“认知”部分的c1,“社会”部分的c2进行变化与调节,希望获得好的效果。•惯性因子的原始版本是保持不变的,后来有人提出随着算法迭代的进行,惯性因子需要逐渐减小的思想。算法开始阶段,大的惯性因子可以是算法不容易陷入局部最优,到算法的后期,小的惯性因子可以使收敛速度加快,使收敛更加平稳,不至于出现振荡现象。•动态的减小惯性因子w,的确可以使算法更加稳定,效果比较好。但是递减惯性因子采用什么样的方法呢?人们首先想到的是线型递减,这种策略的确很好,但是是不是最优的呢?于是有人对递减的策略作了研究,研究结果指出:线型函数的递减优于凸函数的递减策略,但是凹函数的递减策略又优于线型的递减。•对于收敛因子,经过证明如果收敛因子取0.729,可以确保算法的收敛,但是不能保证算法收敛到全局最优。对于社会与认知的系数c2,c1也有人提出:c1先大后小,而c2先小后大的思想,因为在算法运行初期,每个鸟要有大的自己的认知部分而又比较小的社会部分,这个与我们自己一群人找东西的情形比较接近,因为在我们找东西的初期,我们基本依靠自己的知识取寻找,而后来,我们积累的经验越来越丰富,于是大家开始逐渐达成共识(社会知识),这样我们就开始依靠社会知识来寻找东西了。•2007年希腊的两位学者提出将收敛速度比较快的全局版本的粒子群算法与不容易陷入局部最优的局部版本的粒子群算法相结合的办法,利用的公式是•v=n*v(全局版本)+(1-n)*v(局部版本)速度更新公式,v代表速度•w(k+1)=w(k)+v位置更新公式•该算法在文献中讨论了系数n取各种不同情况的情况,并且运行来了20000次来分析各种系数的结果。(2)粒子群算法的混合•这个分支主要是将粒子群算法与各种算法相混合,有人将它与模拟退火算法相混合,有些人将它与单纯形方法相混合。但是最多的是将它与遗传算法的混合。根据遗传算法的三种不同算子可以生成3中不同的混合算法。•粒子群算法与选择算子的结合,这里相混合的思想是:在原来的粒子群算法中,我们选择粒子群群体的最优值作为pg,但是相结合的版本是根据所有粒子的适应度的大小给每个粒子赋予一个被选中的概率,然后依据概率对这些粒子进行选择,被选中的粒子作为pg,其它的情况都不变。这样的算法可以在算法运行过程中保持粒子群的多样性,但是致命的缺点是收敛速度缓慢。•粒子群算法与杂交算子的结合,结合的思想与遗传算法的基本一样,在算法运行过程中根据适应度的大小,粒子之间可以两两杂交,比如用一个很简单的公式:•w(新)=n×w1+(1-n)×w2;•w1与w2就是这个新粒子的父辈粒子。这种算法可以在算法的运行过程中引入新的粒子,但是算法一旦陷入局部最优,那么粒子群算法将很难摆脱局部最优。•粒子群算法与变异算子的结合,结合的思想:测试所有粒子与当前最优的距离,当距离小于一定的数值的时候,可以拿出所有粒子的一个百分比(如10%)的粒子进行随机初始化,让这些粒子重新寻找最优值。(3)二进制粒子群算法•最初的PSO是从解决连续优化问题发展起来的.Eberhart等又提出了PSO的离散二进制版.用来解决工程实际中的组合优化问题。他们在提出的模型中将粒子的每一维及粒子本身的历史最优、全局最优限制为1或0,而速度不作这种限制。用速度更新位置时,设定一个阈值,当速度高于该阈值时,粒子的位置取1,否则取0。二进制PSO与遗传算法在形式上很相似,但实验结果显示,在大多数测试函数中,二进制PSO比遗传算法速度快,尤其在问题的维数增加时(4)协同粒子群算法•协同PSO,该方法将粒子的D维分到D个粒子群中,每个粒子群优化一维向量,评价适应度时将这些分量合并为一个完整的向量。例如第i个粒子群,除第i个分量外,其他D-1个分量都设为最优值,不断用第i个粒子群中的粒子替换第i个分量,直到得到第i维的最优值,其他维相同。为将有联系的分量划分在一个群,可将D维向量分配到m个粒子群优化,则前Dmodm个粒子群的维数是D/m的向上取整。后m-(Dmodm)个粒子群的维数是D/m的向下取整。协同PSO在某些问题上有更快的收敛速度,但该算法容易被欺骗。结论•简单的概念•容易实做•运算效能佳•未来可发展:–模糊粒子群–平行粒子群–排程方面的应用–模糊类神经的训练国内目前已有的文献•演化式模糊系统及其硬件的实现•混合阶层式遗传算法与粒子群优算法之数据分群技术•应用粒子最佳算法于发电机组维修排程之研究•利用PSO算法探讨高速铣削最佳化•Nelder-Mead搜寻法处理无限制式及随机最佳化问题之研究•质群算法(PSO)于多组解方程最佳化问题之研究•以粒子群最佳化为基础之计算机游戏角色设计之研究•供货商产能有限及价格折扣下多产品多供货商最佳化采购决策•一个智能型指纹辨识系统的设计方法论资料来源:全国硕博士网
本文标题:3 粒子群算法
链接地址:https://www.777doc.com/doc-3637880 .html