《粒子群算法(基础精讲)ppt课件.pptx》由会员分享,可在线阅读,更多相关《粒子群算法(基础精讲)ppt课件.pptx(32页珍藏版)》请在三一办公上搜索。
1、粒子群算法,2015年12月9日,点击添加文本,点击添加文本,点击添加文本,点击添加文本,目录,一、集群智能(Swarm Intelligence),Swarm可被描述为一些相互作用相邻个体的集合体,蜂群、蚁群、鸟群都是Swarm的典型例子。鱼聚集成群可以有效地逃避捕食者,因为任何一只鱼发现异常都可带动整个鱼群逃避。蚂蚁成群则有利于寻找食物,因为任一只蚂蚁发现食物都可带领蚁群来共同搬运和进食。一只蜜蜂或蚂蚁的行为能力非常有限,它几乎不可能独立存在于自然世界中,而多个蜜蜂或蚂蚁形成的Swarm则具有非常强的生存能力,且这种能力不是通过多个个体之间能力简单叠加所获得的。社会性动物群体所拥有的这种特
2、性能帮助个体很好地适应环境,个体所能获得的信息远比它通过自身感觉器官所取得的多,其根本原因在于个体之间存在着信息交互能力。,生物社会学家E.O.Wilson指出:“至少从理论上,在搜索食物过程中群体中个体成员可以得益于所有其他成员的发现和先前的经历。当食物源不可预测地零星分布时,这种协作带来的优势是决定性的,远大于对食物的竞争带来的劣势。”,鱼群觅食模型,二、粒子群算法(PSO)简介,粒子群算法(particle swarm optimization,PSO)由Kennedy和Eberhart在1995年提出,该算法模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的,是一种基于S
3、warm Intelligence的优化方法。同遗传算法类似,也是一种基于群体叠代的,但并没有遗传算法用的交叉以及变异,而是粒子在解空间追随最优的粒子进行搜索。PSO的优势在于简单容易实现同时又有深刻的智能背景,既适合科学研究,又特别适合工程应用,并且没有许多参数需要调整。,Russ Eberhart,产生背景: 设想一个场景:一群鸟随机的分布在一个区域中,在这个区域里只有一块食物。所有的鸟都不知道食物在哪里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢?最简单有效的方法就是追寻自己视野中目前离食物最近的鸟。如果把食物当作最优点,而把鸟离食物的距离当作函数的适应度,那么
4、鸟寻觅食物的过程就可以当作一个函数寻优的过程。由此受到启发,经过简化提出了粒子群优化算法。,基本思想: 在PSO中,把一个优化问题看作是在空中觅食的鸟群,那么 “食物”就是优化问题的最优解,而在空中飞行的每一只觅食的 “鸟”就是PSO算法中在解空间中进行搜索的一个“粒子”(Particle)。“群”(Swarm)的概念来自于人工生命,满足人工生命的五个基本原则。因此PSO算法也可看作是对简化了的社会模型的模拟,这其中最重要的是社会群体中的信息共享机制,这是推动算法的主要机制。,粒子在搜索空间中以一定的速度飞行,这个速度根据它本身的飞行经验和同伴的飞行经验来动态调整。所有的粒子都有一个被目标函数
5、决定的适应值(fitness value),这个适应值用于评价粒子的“好坏”程度。 每个粒子知道自己到目前为止发现的最好位置(particle best,记为pbest)和当前的位置,pbest就是粒子本身找到的最优解,这个可以看作是粒子自己的飞行经验。 除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(global best,记为gbest),gbest是在pbest中的最好值,即是全局最优解,这个可以看作是整个群体的经验。,每个粒子使用下列信息改变自己的当前位置:,粒子群算法的基本思想: 用随机解初始化一群随机粒子,然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个
6、“极值”来更新自己: 一个是粒子本身所找到的最好解,即个体极值(pbest),另一个极值是整个粒子群中所有粒子在历代搜索过程中所达到的最优解(gbest)即全局极值。 找到这两个最好解后,接下来是PSO中最重要的“加速”过程,每个粒子不断地改变其在解空间中的速度,以尽可能地朝pbest和gbest所指向的区域“飞”去。,三、粒子群优化算法的一般数学模型,假设在一个N维空间进行搜索,粒子i的信息可用两个N维向量来表示:第i个粒子的位置可表示为 ;速度为 ; 在找到两个最优解后,粒子即可根据下式来更新自己的速度和位置:,:是粒子i在第k次迭代中第d维的速度; :是粒子i在第k次迭代中第d维的当前位
7、置;,i=1,2,3,M:种群大小。c1和c2:学习因子(或称加速系数),合适的c1和c2既可加快收敛又不易陷入局部最优。rand1和rand2:是介于0,1之间的随机数。 :是粒子i在第d维的个体极值点的位置; :是整个粒子群在第d维的全局极值点的位置。,最大速度vmax:决定了问题空间搜索的力度,粒子的每一维速度vid都会被限制在-vdmax,+vdmax 之间,粒子每一维的位置xid变化范围为-xdmax,+xdmax ,迭代中若位置和速度超过边界范围则取边界值。,参数意义:(1)粒子的长度N:问题解空间的维数。(2)粒子种群大小M:粒子种群大小的选择视具体问题而定,但是一般设置粒子数为
8、20-50。对于大部分的问题10个粒子已经可以取得很好的结果,不过对于比较难的问题或者特定类型的问题,粒子的数量可以取到100或200。另外,粒子数目越多,算法搜索的空间范围就越大,也就更容易发现全局最优解。当然,算法运行的时间也较长。(3)加速常数c1和 c2:分别调节向Pbest和Gbest方向飞行的最大步长,决定粒子个体经验和群体经验对粒子运行轨迹的影响,反映粒子群之间的信息交流。,如果c1=0,则粒子只有群体经验,它的收敛速度较快,但容易 陷入局部最优; 如果c2 = 0,则粒子没有群体共享信息,一个规模为M的群体等价于运行了M个各行其是的粒子,得到解的几率非常小,因此一般设置c1 =
9、 c2 。这样,个体经验和群体经验就有了相同重要的影响力,使得最后的最优解更精确。 改变这些常数会改变系统的“张力”,较低的c1 和 c2值使得粒子徘徊在远离目标的区域,较高的c1 和 c2值产生陡峭的运动或越过目标区域。 Shi和Eberhart建议,为了平衡随机因素的作用,一般情况下设置c1 c2,大部分算法都采用这个建议。,(4)粒子的最大速度vmax :粒子的速度在空间中的每一维上都有一个最大速度限制值vdmax ,用来对粒子的速度进行钳制,使速度控制在范围vdmax,vdmax 内,这决定问题空间搜索的力度,该值一般由用户自己设定。vmax是一个非常重要的参数,如果该值太大,则粒子们
10、也许会飞过优秀区域;另一方面如果该值太小,则粒子们可能无法对局部最优区域以外的区域进行充分的探测。实际上,它们可能会陷入局部最优,而无法移动足够远的距离跳出局部最优达到空间中更佳的位置。(5) rand1和rand2是介于0,1之间的随机数,增加了粒子飞行的随机性。(6)迭代终止条件:一般设为最大迭代次数Tmax、计算精度或最优解的最大停滞步数t。,算法流程:,四、PSO的各种改进算法,PSO收敛速度快,特别是在算法的早期,但也存在着精度较低,易发散等缺点。 若加速系数、最大速度等参数太大,粒子群可能错过最优解,算法不收敛; 而在收敛的情况下,由于所有的粒子都向最优解的方向飞去,所以粒子趋向同
11、一化(失去了多样性),使得后期收敛速度明显变慢,同时算法收敛到一定精度时,无法继续优化,所能达到的精度也不高。 因此很多学者都致力于提高PSO算法的性能。,如果没有公式(1)的第一部分,PSO的搜索过程是一个通过迭代搜索空间逐渐收缩的过程,展现出一种局部搜索(exploitation)能力;反之,如果增加了第一部分,粒子就有能力扩展搜索空间,展现出一种全局搜索(exploration)的能力。在搜索过程中,全局搜索能力与局部搜索能力的平衡对于算法的成功起着至关重要的作用。 引入一个惯性权重到公式(1), 是与前一次速度有关的一个比例因子,较大的可以加强PSO的全局探测能力,而较小的能加强局部搜
12、索能力,也就是这个执行了全局搜索和局部搜索之间的平衡角色。惯性权重法是由Shi等提出的,其速度更新公式为:,惯性权重法(Inertia Weight):,为非负数,称为惯性因子,惯性权重,是控制速度的权重,(1)线性调整的策略:允许的最大速度vmax实际上作为一个约束,控制PSO能够具有的最大全局搜索能力。如果vmax较小,那么最大的全局搜索能力将被限制,不论惯性权重的大小,PSO只支持局部搜索;如果设置vmax较大,那么PSO通过选择 ,有一个可供很多选择的搜索能力范围。由此可以看出,允许的最大速度间接地影响全局搜索能力,而惯性权重直接影响全局搜索能力,所以希望找到一个非常好的惯性权重来达到
13、全局搜索和局部搜索之间的平衡。 类似于人的“原动力”,如果原动力比较大,当达到某个目标的时候,会继续向前实现更高的目标:如果原动力较小, 到达某个目标就停滞。,Shi和Eberhart提出了一种随着算法迭代次数的增加惯性权重线性下降的方法。惯性权重的计算公式如下:,max和min分别表示权重的最大及最小值,kn为当前迭代次数,kmax表示最大迭代次数。 文献试验了将设置为从0.9到0.4的线性下降,使得PSO在开始时探索较大的区域,较快地定位最优解的大致位置,随着逐渐减小,粒子速度减慢,开始精细的局部搜索。该方法使PSO更好地控制exploration和exploitation能力,加快了收敛
14、速度,提高了算法的性能,称之为权重线性下降的粒子群算法,简记为LDW(Linearly Decreasing Inertia Weight)。,(2)模糊调整的策略 模糊权重是使用模糊系统来动态调节惯性权重。下面的文献给出了一种模糊权重的设置方式,PSO搜索过程是一个非线性的复杂过程,让线性下降的方法并不能正确反映真实的搜索过程。因而,Shi等提出用模糊推理机来动态地调整惯性权重的技术。 即构造一个2输入、1输出的模糊推理机来动态地修改惯性因子。模糊推理机的两个输入分别是当前值,以及规范化后的当前最好性能评价值(The Normalized Current Best Performance E
15、valuation,NCBPE);而输出是的增量。 CBPE (The Current Best Performance Evaluation,CBPE) 是PSO迄今为止发现的最好候选解的性能测度。由于不同的 优化问题有不同的性能评价值范围,所以为了让该模糊系统 有广泛的适用性,通常使用标准化的CBPE (NCBPE)。,惯性权重线性下降算法(LDW)是为了提高算法的收敛性能,平衡收敛的全局性和收敛速度,在多峰函数上效果显著; 但两种算法在高维复杂问题寻优时仍然存在早熟收敛、收敛精度比较低的缺点。,五、PSO的优缺点,PSO算法是一种启发式的优化计算方法,优点:(1)采用实数编码,易于描述,
16、易于理解(2)对优化问题定义的连续性无特殊要求(3)只有非常少的参数需要调整(4)算法实现简单,速度快(5)相对于其他演化算法,只需要较小的演化群体(6)算法易于收敛(7)无集中控制约束,不会因个体的故障影响整个问题的求解,确保了系统具备很强的鲁棒性。,PSO的缺点: (1)对于有多个局部极值点的函数,容易陷入到局部极值点中,得不到正确的结果。 (2)由于缺乏精密搜索方法的配合,PSO方法往往不能得到精确的结果。 (3)PSO方法提供了全局搜索的可能,但并不能严格证明它在全局最优点上的收敛性。,六、PSO的matlab实现,计算如下二元函数的最小值:(其中自变量x、y的范围均为-50, 50)
17、,(1)编写待优化函数程序,function z=test_func(in) nn=size(in); %输入的是矩阵 ,即算法中随机产生一组x和y ,按 x(nn, 1), y(nn, 1)排列 x=in(:,1); y=in(:,2); nx=nn(1); for i=1:nx temp = 0.5*(x(i)-3)2+0.2*(y(i)-5)2-0.1; z(i,:) = temp; end,clearclcx_range=-50,50; %参数x变化范围y_range=-50,50; %参数y变化范围range = x_range;y_range; %参数变化范围(组成矩阵)Max_V
18、 = 0.2*(range(:,2)-range(:,1); %最大速度取变化范围的10%20%n=2;%待优化函数的维数,此例子中仅x、y两个自变量,故为2pso_Trelea_vectorized(test_func,n,Max_V,range) %调用PSO核心模块,(2)编写调用函数,注:参数的每步迭代最大允许值,即Max_V,一般取变化范围的10%20%, 越小,收敛的分辨率越高,即不容易跳过最优值,但收敛慢;越大, 收敛速度快,但可能跳出全局最优值。因此用户需要小心。,按如上说明的编写好matlab文件test_func.m和test_main.m后,直接执行test_main.m,收敛后的结果为:ans = 3.0000 %收敛时对应的x值 5.0000 %收敛时对应的y值 -0.1000 %收敛时对应的z值(最优值)其中最后一个(即-0.1)为收敛时的最优值,而前面两个(3.0000和5.0000为对应于最优值的自变量x和y的取值。,Thank you!,