粒子群算法论文.doc_第1页
粒子群算法论文.doc_第2页
粒子群算法论文.doc_第3页
粒子群算法论文.doc_第4页
粒子群算法论文.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

粒子群算法的寻优算法摘要:粒子群算法是在仿真生物群体社会活动的基础上,通过模拟群体生物相互协同寻优能力,从而构造出一种新的智能优化算法。这篇文章简要回顾了粒子群算法的发展历史;引入了一个粒子群算法的实例,对其用MATLAB进行编程求解,得出结论。之后还对其中的惯性权重进行了延伸研究,对惯性权重的选择和变化的算法性能进行分析。关键词:粒子群、寻优、MATLAB、惯性权重目录:1.粒子群算法的简介31.1 粒子群算法的研究背景31.2 起源31.3 粒子群理论42.案例背景52.1问题描述52.2 解题思路及步骤53.MATLAB编程实现63.1设置PSO算法的运行参数63.2种群初始化63.3寻找初始极值63.4迭代寻优73.5结果分析74.惯性权重对PSO算法的影响94.1惯性权重的选择94.2惯性权重变化的算法性能分析95 结论11参考文献:121.粒子群算法的简介粒子群算法(Particle Swarm Optimization)是一种新的智能优化算法。谈到它的发展历史,就不得不先介绍下传统的优化算法,正因为传统优化算法自身的一些不足,才有新智能优化算法的兴起,而粒子群算法(PSO)就是在这种情况下发展起来的。1.1 粒子群算法的研究背景最优化是人们在科学研究、工程技术和经济管理等领域中经常遇到的问题。优化问题研究的主要内容是在解决某个问题时,如何从众多的解决方案中选出最优方案。它可以定义为:在一定的约束条件下,求得一组参数值,使得系统的某项性能指标达到最优 (最大或最小)。传统的优化方法是借助于优化问题的不同性质,通常将问题分为线性规划问题、 非线性规划 问题、整数规划问题和多目标规划问题等。相应的有一些成熟的常规算法,如应用于线性规划问题的单纯形法,应用于非线性规划的牛顿法、共扼梯度法,应用于整数规则的分枝界定 法、动态规划等。列举的这些传统的优化算法能够解决现实生活和工程上的很多问题,但工业和科学领域大量实际问题的困难程度正在日益增长,它们大多是根本无法在可接受的时间 内找到解的问题。这类优化问题的困难性不仅体现在具有极大的规模,更为重要的是,它们多数是非线性的、动态的、多峰的、具有欺骗性的或者不具有任何导数信息。因此,发展通用性更强、效率更高的优化算法总是需要的。 1.2 起源在自然界中,鸟群运动的主体是离散的,其排列看起来是随机的,但在整体的运动中它们却保持着惊人的同步性,其整体运动形态非常流畅且极富美感。这些呈分布状态的群体所表现出的似乎是有意识的集中控制,一直是许多研究者感兴趣的问题。有研究者对鸟群的运动进行了计算机仿真,他们通过对个体设定简单的运动规则,来模拟鸟群整体的复杂行为。1986 年 Craig ReynolS 提出了 Boid 模型,用以模拟鸟类聚集飞行的行为,通过对现实世界中这些群体运动的观察,在计算机中复制和重建这些运动轨迹,并对这些运动进行抽象建模,以发现新的运动模式。之后,生物学家 Frank Heppner 在此基础上增加了栖息地对鸟吸引的仿真条件,提出了新的鸟群模型。这个新的鸟群模型的关键在于以个体之间的运算操作为基础,这个操作也就是群体行为的同步必须在于个体努力维持自身与邻居之间的距离为最优,为此每个个体必须知道自身位置和邻居的位置信息。这些都表明群体中个体之间信息的社会共享有助于群体的进化。在 1995年,受到 Frank Heppner 鸟群模型的影响,社会心理学博士 James Kennedy 和电子工程学博士 Russell Eherhart 提出了粒子群算法。粒子群算法其实也是一种演化计算技术,该算法将鸟群运动模型中的栖息地类比于所求问题空间中可能解的位置,通过个体间的信息传递,导引整个群体向可能解的方向移动, 在求解过程中逐步增加发现较好解的可能性。群体中的鸟被抽象为没有质量和体积的“粒子”,通过这些“粒子”间的相互协作和信息共享,使其运动速度受到自身和群体的历史运动状态信息的影响。以自身和群体的历史最优位置对粒子当前的运动方向和运动速度加以影响,较好地协调粒子本身和群体之间的关系,以利于群体在复杂的解空间中进行寻优操作。1.3 粒子群理论求解优化问题的,算法中每个粒子都代表问题的一个潜在解,每个粒子对应一个由适应度函数决定的适应度值。粒子的速度决定了粒子移动的方向和距离,速度随自身及其他粒子的移动经验进行动态调整,从而实现个体在可解空间中的寻优。PSO 算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解,用位置、速度和适应度值三项指标表示该粒子特征,适应度值由适应度函数计算得到,其值的好坏表示粒子的优劣。粒子在解空间中运动,通过跟踪个体极值 Pbest 和群体极值Gbest 更新个体位置。个体极值 Pbest是指个体所经历位置中计算得到的适应度值最优位置,群体极值 Gbest 是指种群中的所有粒子搜索到的适应度最优位置。粒子每更新一次位置,就计算一次适应度值,并且通过比较新粒子的适应度值和个体极值、群体极值的适应度值更新个体极值 Pbest 和群体极值 Gbest 位置。 假设在一个D维的搜索空间中,由n个粒子组成的种群X=(X1,X2,Xn),其中第i个粒子表示为一个D维的向量代表第 i个粒 子在D维搜索空间中的位置,亦代表问题的一个潜在解。根据目标函数即可计算出每个粒子位置Xi对应的适应度值。第i个粒子的速度为,其个体极值为,种群的群体极值为。在每次迭代过程中粒子通过个体极值和群体极值更新自身的速度和位置,即其中为惯性权重,d = l,2,D;i = l,2 ,n;k为当前迭代次数为粒子的速度;c1和c2是非负的常数,称为加速度因子;r1和r2是分布于0, 1区间的随机数。为防止粒子的盲目搜索,一般建议将其位置和速度限制在一定的区间、。2.案例背景2.1问题描述本案例寻优的非线性函数为:函数图形如下图所示。图1 函数图像从函数图像可以看出,该函数有很多局部最优点,而极限位置为(0,0),在(0,0)附近取得极大值。2.2 解题思路及步骤基于PSO算法的函数极值寻优算法流程图如图2所示。图2 算法流程其中,粒子和速度初始化随机初始化粒子速度和粒子位置;由第一章中的公式计算粒子适应度值;根据初始粒子适应度值确定个体极值和群体极值;根据公式更新粒子速度和位置;根据新种群中粒子适应度值更新个体极值和群体极值。本题中,适应度函数为函数表达式,适应度值为函数值。种群粒子数设置为20,每个粒子的维数为2,算法迭代次数定为300次。3.MATLAB编程实现 根据PSO算法原理,在MATLAB里编程实现基于PSO算法的函数极值寻优算法。3.1设置PSO算法的运行参数程序代码如下:% 清空环境clcclear% 参数初始化%粒子群算法中的两个参数c1 = 1.49445; c2 = 1.49445;maxgen=300; % 进化次数 sizepop=20; %种群规模Vmax=0.5; Vmin=-0.5;popmax=2;popmin=-2; %速度和个体最大最小值3.2种群初始化随机初始化粒子位置和粒子速度,并根据适应函数计算粒子适应度值。% 产生初始粒子和速度for i=1:sizepop %随机产生一个种群 pop(i,:)=2*rands(1,2); %初始种群 V(i,:)=0.5*rands(1,2); %初始化速度 %计算适应度 fitness(i)=fun(pop(i,:); %计算粒子的适应度值end适应度函数代码如下:function y = fun(x)%函数用于计算粒子适应度值 %x input 输入粒子 %y output 粒子适应度值 y=sin( sqrt(x(1).2+x(2).2) )./sqrt(x(1).2+x(2).2)+exp(cos(2*pi*x(1)+cos(2*pi*x(2)/2)-2.71289;3.3寻找初始极值% 个体极值和群体极值bestfitness bestindex=max(fitness);zbest=pop(bestindex,:); %全局最佳gbest=pop; %个体最佳fitnessgbest=fitness; %个体最佳适应度值fitnesszbest=bestfitness; %全局最佳适应度值3.4迭代寻优 根据上文中的公式更新粒子位置和速度,并且根据新粒子的适应度值更新个体极值和群体极值。程序代码如下:% 迭代寻优for i=1:maxgen for j=1:sizepop %速度更新 V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:) + c2*rand*(zbest - pop(j,:); V(j,find(V(j,:)Vmax)=Vmax; V(j,find(V(j,:)popmax)=popmax; pop(j,find(pop(j,:) fitnessgbest(j) gbest(j,:) = pop(j,:); fitnessgbest(j) = fitness(j); end %群体最优更新 if fitness(j) fitnesszbest zbest = pop(j,:); fitnesszbest = fitness(j); end end yy(i)=fitnesszbest; %每代最优值记录在yy数组中end3.5结果分析 PSO算法反复迭代300次,画出每代个体适应度值变化图形,程序代码如下:plot(yy)title(最优个体适应度,fontsize,12);xlabel(进化代数,fontsize,12);ylabel(适应度,fontsize,12);最优个体适应度值变化如图三所示。图3 最优个体适应度值 最终得到的最优个体适应度值为1.0053,对应的粒子位置为(0.0015,-0.0008),PSO算法寻优得到的最优值接近函数实际最优值。但在多次运行的时候会出现结果为0.8477左右的极值结果,如图4所示,原因在第四章进行探讨。图4 最优个体适应度值的另一结果4.惯性权重对PSO算法的影响4.1惯性权重的选择惯性权重体现的是粒子继承先前的速度的能力,Shi.Y 最先将惯性权重引入 PSO算法中,并分析指出一个较大的惯性权值有利于全局搜索,而一个较小的惯性权值则更利于局部搜索。为了更好地平衡算法的全局搜索与局部搜索能力,Shi.Y 提出了线性递减惯性权重,即其中,为初始惯性权重;为迭代至最大次数时的惯性权重;k为当前迭代代数;为最大迭代代数。一般来说,惯性权值=0.9,= 0.4时算法性能最好。这样,随着迭代的进行,惯性权重由0.9线性递减至0.4,迭代初期较大的惯性权重使算法保持了较强的全局搜索能力,而迭代后期较小的惯性权重有利于算法进行更精确的局部搜索。线性惯性权重只是一种经验做法,常用的惯性权重的选择还包括如下几种:几种的动态变化如图5所示,横坐标为迭代次数,纵坐标为权重值。图5 四种惯性权重的变化4.2惯性权重变化的算法性能分析算法参数设置:种群规模20,进化300代。每个实验设置进化100次,将100次的平均值作为最终结果。在上述的参数设置下,运用4.1中的五种取值方法对函数进行求解,并比较所得解的平均值、失效次数和接近最优解的次数,来分析其收敛精度、收敛速度等性能。每种的算法进化曲线如图6所示。图6 五种惯性权重下函数平均值的收敛曲线本文解决的寻优问题中,将距离最优解1.0054误差为0.01的解视为接近最优解,将0.8477及更小的解视为陷人局部最优的解。由图6和表1可以看出,惯性权重不变的粒子群优化算法虽然具有较快的收敛速度,但其后期容易陷入局部最优,求解精度低;而几种动态变化的算法虽然在算法初期收敛稍慢,但在后期局部搜索能力强,利于算法跳出局部最优而求得最优解,提高了算法的求解精度。表1第三个函数动态变化方法,前期变化较慢,取值较大,维持了算法的全局搜索能力;后期变化较快,极大地提高了算法的局部寻优能力,从而取得了很好的求解效果。表1 五种惯性权重下的算法性能比较5 结论粒子群算法是在仿真生物群体社会活动的基础上,通过模拟群体生物相互协同寻优能力,从而构造出的一种新的智能优化算法。本篇文章简要回顾了粒子群算法的发展历史,详细讲解了粒子群算法的理论基础。之后引入了一个粒子群算法的实例即粒子群算法的寻优算法,分析了问题,并进行了解题步骤的推演,对其用MATLAB进行编程求解,得出结论。之后针对粒子群算法寻优算法实例中出现的一个问题进行再探讨,即在一定次数内的最优值计算会出现一次最优值不正确的情况。故对粒子群算法中比较重要的一大因素惯性权重(也是导致上文问题的因素)进行了延伸学习和研究,惯性权重体现的是粒子继承先前的速度的能力,分析指出一个较大的惯性权值有利于全局搜索,而一个较小的惯性权值则更利于局部搜索。并对目前使用较多的五种惯性权重的函数进行了比较分析,列出了五种惯性权重在一定次数内计算中的取值曲线。然后重新编程,分别进行100次的寻优算法的求解,并统计结果做成表格,找到一个最优的取值惯性权重的函数,从而能够尽量避免陷入局部最优值并且速度较快的完成既定任务。 通过实例更好更详细的了解和学习了粒子群算法这一智能优化算法,深入的了解了粒子群算法的寻优算法流程和编程思路。参考文献:1 杨朝霞,方建文,李佳蓉,等.粒子群优化箅法在多参数拟合中的作用J.浙江师范大学学报,2008,31(2):173 - 177.2 江宝别,胡俊淇.求解多峰函数的改进粒子群算法研究J.宁波大学学报,2008,21(2) :150- 154.3 薛婷.粒子群优化箅法的研究与改进D.大连:大连海亊大学,2008.4 冯翔,陈国龙,郭文忠.粒子群优化算法中加速因子的设置与实验分析J.集美大学学报,2006,11(2):146-151.5 张选平,杜玉平,秦国强.一种动态改变惯性权的自适应粒子群算法J.西安交通大学学报,2005,39(10):1039 - 1042.附录:clcclear% 参数初始化%粒子群算法中的两个参数c1 = 1.49445;c2 = 1.49445;maxgen=300; % 进化次数 sizepop=20; %种群规模Vmax=0.5; %速度和个体最大最小值Vmin=-0.5;popmax=2;popmin=-2;for i=1:sizepop pop(i,:)=2*rands(1,2); %初始种群 V(i,:)=0.5*rands(1,2); %初始化速度 fitness(i)=fun(pop(i,:); %计算粒子的适应度值endbestfitness bestindex=max(fitness);zbest=pop(bestindex,:); %全局最佳gbest=pop; %

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论