MATLAB课程设计报告

华 东 交 通 大 学

MATLAB程序设计报告书

课题名称 :基于MATLAB的粒子群优化算法的实现 姓 名:

学 号:20160280800014 专 业:控制科学与工程

2016年 11月 20日

基于MATLAB的粒子群优化算法的实现

一、课程选题目的

本次课程设计的课题为《基于MATLAB的粒子群优化算法的实现》,主要为学会运用MATLAB对实际算法编程,加深对粒子群优化算法的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。数值计算分析可以帮助更深入地理解理论知识,并为将来使用MATLAB进行各领域数值分析分析和实际应用打下基础。

此次课程主要是为了进一步熟悉对MATLAB软件的使用,以及学会利用MATLAB对数值运算这种实际问题进行处理,将理论应用于实际,加深对它的理解。

二、粒子群优化算法原理

优化是科学研究、工程技术和经济管理等领域的重要研究工具。它所研究的问题是讨论在众多的方案中寻找最优方案。例如,工程设计中怎样选择设计参数,使设计方案既满足设计要求又能降低成本;资源分配中,怎样分配有限资源,使分配方案既能满足各方面的基本要求,又能获得好的经济效益。在人类活动的各个领域中,诸如此类,不胜枚举。优化这一技术,正是为这些问题的解决,提供理论基础和求解方法,它是一门应用广泛、实用性很强的科学。近十余年来,粒子群优化算法作为群体智能算法的一个重要分支得到了广泛深入的研究,在路径规划等许多领域都有应用。

2.1 粒子群优化算法的起源

粒子群优化(PSO)算法是由Kennedy和Eberhart于1995年用计算机模拟鸟群觅食这一简单的社会行为时,受到启发,简化之后而提出的。

设想这样一个场景:一群鸟随机的分布在一个区域中,在这个区域里只有一块食物。所有的鸟都不知道食物在哪里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的方法就是追寻自己视野中目前离食物最近的鸟。如果把食物当作最优点,而把鸟离食物的距离当作函数的适应度,那么鸟寻觅食物的过程就可以当作一个函数寻优的过程。鱼群和鸟群的社会行为一直引起科学家的兴趣。他们以特殊的方式移动、同步,不会相互碰撞,整体行为看上去非常优美。生物学家CargiReynolds提出了一个非常有影响的鸟群聚集模型。在他的模拟模型boids中,每一个个体遵循:避免与邻域个体相冲撞、匹配邻域个体的速度、试图飞向感知到的鸟群中心这三条规则形成简单的非集中控制算法驱动鸟群的聚集,在一系列模拟实验中突现出了非常接近现实鸟群聚集行为的现象。该结果显示了在空中回旋的鸟组成轮廓清晰的群体,以及遇到障碍物时鸟群的分裂和再度汇合过程。由此受到启发,经过简化提出了粒子群优化算法。

2.2粒子群优化算法的原理

在粒子群优化算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值,每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。优化开始时先初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己。第一个极值就是整个种群目前找到的最优解。这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。第二个极值是粒子本身所找到的最优解,称为个体极值。这是因为粒子仅仅通过跟踪全局极值或者局部极值来更新位置,不可能总是获得较好的解。这样在优化过程中,粒子在追随全局极值或局部极值的同时追随个体极值则圆满的解决了这个问题。这就是粒子群优化

1

算法的原理。

在算法开始时,随机初始化粒子的位置和速度构成初始种群,初始种群在解空间中为均匀分布。其中第i个粒子在n维解空间的位置和速度可分别表示为Xi=(xi1,xi2,?,xid)和Vi=(vi1,vi2,?,vid),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己的速度和位置。一个极值是粒子本身到目前为止所找到的最优解,这个极值称为个体极值Pbi=(Pbi1,Pbi2,?,Pbid)。另一个极值是该粒子的邻域到目前为止找到的最优解,这个极值称为整个邻域的最优粒子Nbesti=(Nbesti1,Nbesti2,?,Nbestid)。粒子根据如下的式(2-1)和式(2-2)来更新自己的速度和位置:

Vi=Vi+c1·rand()·(Pbesti-Xi)+c2·rand()·(Nbesti-Xi) (2-1) Xi= Xi+ Vi (2-2)

式中c1和c2是加速常量,分别调节向全局最好粒子和个体最好粒子方向飞行的最大步长,若太小,则粒子可能远离目标区域,若太大则会导致突然向目标区域飞去,或飞过目标区域。合适的c1,c2可以加快收敛且不易陷入局部最优。rand()是0到1之间的随机数。粒子在每一维飞行的速度不能超过算法设定的最大速度Vmax。设置较大的Vmax可以保证粒子种群的全局搜索能力,Vmax较小则粒子种群优化算法的局部搜索能力加强。

粒子群优化算法是在模拟鸟群觅食时受到启发提出的。提出之后却发现用动物或人的认知来解释算法的原理更加完美。在速度更新公式(2-1)中由3个部分构成。第1个部分是Vi,表示粒子在解空间有按照原有方向和速度进行搜索的趋势,这可以用人在认知事物时总是用固有的习惯来解释。第2个部分是c1·rand()·(Pbesti-Xi),表示粒子在解空间有朝着过去曾碰到的最优解进行搜索的趋势,这可以用人在认知事物时总是用过去的经验来解释。第3部分是c2·rand()·(Nbesti-Xi),表示粒子在解空间有朝着整个邻域过去曾碰到的最优解进行搜索的趋势,这可以用人在认知事物时总可以通过学习其他人的知识,也就是分享别人的经验来解释。因此,粒子群优化算法实际上是借用了人或动物认知事物时的习惯,经验,及学习过程来进行寻优的。粒子在优化过程中的运动轨迹见图1。

图1 粒子群算法优化搜索示意图

3.3粒子群优化算法的优点

粒子群优化算法具有以下主要优点:(1)易于描述;(2)便于实现;(3)要调整的参数很少;(4)使用规模相对较少的群体;(5)收敛需要评估函数的次数少;(6)收敛速度快粒子群优化算法很容易实现,计算代价低,由于其内存和CPU速度要求都很低。而且,它不需要目标函数的梯度信息,只依靠函数值。粒子群优化算法已被证明是解决许多全局优化问题的有效方法。

2

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4