网站大量收购独家精品文档,联系QQ:2885784924

粒子群-Matlab程序代码.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

粒子群优化算法(panicleswarmoptimization,PSO)是kennedy和Eberhart在研究鸟类和鱼类的群体行为根底上于1995年提出的一种群智能算法,其思想米源予人工生命和演化计算理论,模仿鸟群飞行觅食行为,通过鸟集体协作使群体到达最优。

1.粒子群算法的原理

PSO中,每个优化问题的解看作搜索空间中的一只鸟(即粒子),所有的粒子都有一个被优化的函数决定的适应值,并且有一个速度决定它们飞翔的方向和速率,粒子们追随当前的最优粒子在解空间中搜索。算法首先初始化一群随机粒子,然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”即个体极值和全局极值来更新自己的速度与位置。在D维目标搜索空间中,由种群数为m的粒子组成粒子群,其中第f个粒子在第d维的位置为Xid,其飞行速度为Vid,该粒子当前搜索到的最优位置为Pid(goodvalue)和整个粒子群当前的最优位置Pgd(bestvalue)。

每维的速度与位置更新公式如下

W为惯性权重,C1和C2为学习因子,rand〔〕——[0,1]范围内变化的随机数。

2.参数介绍与设置

〔1〕w

w是保持粒子运动惯性的参数,能使种群扩展搜索空间,获得较好的求解效果。较大的w有利于群体在更大的范围内进行搜索。而较小的w能够保证群体收敛到最优位置,所以w的选择及在迭代中的变化对搜索能力和跳出局优能力具有重要影响。一般将w设定为0.8左右。

〔1〕加速因子c1和c2

c1和c2用于调整粒子自身经验和社会经验在其运动中的作用,表示将每个粒子拉向pbest和gbest位置的随机加速项的权重,低的值允许粒子在被拉回前可以在目标区域外徘徊,而高的值那么导致粒子突然冲向或越过目标区域。如果c1=0,那么粒子没有认知能力。在粒子的相互作用下,能到达新的搜索空间,但容易陷入局部极值点;如果c2=0,粒子间没有社会信息共享,其算法变成一个多起点的随机搜索;如果c1=c2=0,粒子将一直以当前的速度飞行,直到到达边界。恰当地选择c1与c2能较好的得到最优解,一般都设定为2。

〔2〕最大速度vmax

vmax决定当前位置与最好位置之间的区域的分辨率〔或精度〕。如果vmax太高,微粒可能会飞跃最优解;如果vmax太小,那么微粒易陷入局部最优。引入惯性权重w可消除对vmax的需要,因为两者的作用都是维护全局和局部搜索能力的平衡。当vmax增加时,可通过减小w来平衡搜索,而w的减小可使得所需的迭代次数变小。但常常将设定一个最大的vmax。

较好地选择和调整参数能够加大搜索能力,防止PSO的早熟现象。

3.算法步骤及设计

PSO的算法框架如下所述,图1给出了PS0的算法流程。

(1)初始化所有的个体(粒子),初始化它们的速度和位置,并且将个体的历史最优goodvalue设为当前位置,而群体中最优的个体历史位置作为当前的全局最优bestvalue。

(2)在当代的进化中,计算各个粒子的适应度函数值。

(3)如果该粒子当前的适应度函数值比其历史最优值要好,那么历史最优将会被当前位置所替代。

〔4〕如果该粒子的历史最优比全局最优要好,那么全局最优将会被该粒子的历史最优所替代。

(5)对每个粒子按照公式(1)和公式(2)对速度和位置进行更新。

(6)进化代数增加1,如果还没有到达结束条件,转到(2)步,否那么输出全局最优bestvalue并结束。

开始

开始

初始化粒子群计算每个粒子新位置的适应值

初始化粒子群

计算每个粒子新位置的适应值

根据粒子适应值更新个体最优值和全局最优值

根据粒子适应值更新个体最优值和全局最优值

根据公式更新粒子速度和位置

根据公式更新粒子速度和位置

N是否满足终止条件

N

是否满足终止条件

Y

Y

输出最优解

输出最优解

结束

结束

图一PSO算法流程

4.程序设计与仿真

〔1〕程序设计说明

采用MATLAB软件编程,程序粒子种群个数设定为20个,搜索范围为全局版本,终止条件是粒子都到达最优点。

〔2〕函数,其图形如图2所示,其在x=0.5,y=3.处有最小值f=-7.25.运行程序大约迭代220步,就可以让所有的粒子到达最优点。图3中坐标图从左到右从上到下分别为初始化种群的位置、k=50的粒子位置、k=100的粒子位置及迭代结束粒子的位置.从图中可见能够搜索到最优点。

图2f1三维图形 图3仿真粒子位置图

〔2〕Rastrigin函数,当n=2时,为二维图形如图4所示,在x1=0,x2=0.处有最大值f=0;在程序中取相反数求其最小值,迭代k=670步左右将可以将所有的粒子推向一点——最优点。取前十个粒子的位置如图5,可知可以快速地得到满意的最优解,且能够跳出局优。

图4f2函数n=2三维图形 图5粒子位置

文档评论(0)

展翅高飞2020 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档