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

下载本文档

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

文档简介

PAGE1粒子群算法的寻优算法摘要:粒子群算法是在仿真生物群体社会活动的基础上,通过模拟群体生物相互协同寻优能力,从而构造出一种新的智能优化算法。这篇文章简要回顾了粒子群算法的发展历史;引入了一个粒子群算法的实例,对其用MATLAB进行编程求解,得出结论。之后还对其中的惯性权重进行了延伸研究,对惯性权重的选择和变化的算法性能进行分析。关键词:粒子群、寻优、MATLAB、惯性权重目录:1.粒子群算法的简介 21.1粒子群算法的研究背景 21.2起源 21.3粒子群理论 32.案例背景 42.1问题描述 42.2解题思路及步骤 43.MATLAB编程实现 53.1设置PSO算法的运行参数 53.2种群初始化 53.3寻找初始极值 53.4迭代寻优 63.5结果分析 64.惯性权重对PSO算法的影响 84.1惯性权重的选择 84.2惯性权重变化的算法性能分析 85结论 10参考文献: 111.粒子群算法的简介粒子群算法(ParticleSwarmOptimization)是一种新的智能优化算法。谈到它的发展历史,就不得不先介绍下传统的优化算法,正因为传统优化算法自身的一些不足,才有新智能优化算法的兴起,而粒子群算法(PSO)就是在这种情况下发展起来的。1.1粒子群算法的研究背景最优化是人们在科学研究、工程技术和经济管理等领域中经常遇到的问题。优化问题研究的主要内容是在解决某个问题时,如何从众多的解决方案中选出最优方案。它可以定义为:在一定的约束条件下,求得一组参数值,使得系统的某项性能指标达到最优(最大或最小)。传统的优化方法是借助于优化问题的不同性质,通常将问题分为线性规划问题、非线性规划问题、整数规划问题和多目标规划问题等。相应的有一些成熟的常规算法,如应用于线性规划问题的单纯形法,应用于非线性规划的牛顿法、共扼梯度法,应用于整数规则的分枝界定法、动态规划等。列举的这些传统的优化算法能够解决现实生活和工程上的很多问题,但工业和科学领域大量实际问题的困难程度正在日益增长,它们大多是根本无法在可接受的时间内找到解的问题。这类优化问题的困难性不仅体现在具有极大的规模,更为重要的是,它们多数是非线性的、动态的、多峰的、具有欺骗性的或者不具有任何导数信息。因此,发展通用性更强、效率更高的优化算法总是需要的。1.2起源在自然界中,鸟群运动的主体是离散的,其排列看起来是随机的,但在整体的运动中它们却保持着惊人的同步性,其整体运动形态非常流畅且极富美感。这些呈分布状态的群体所表现出的似乎是有意识的集中控制,一直是许多研究者感兴趣的问题。有研究者对鸟群的运动进行了计算机仿真,他们通过对个体设定简单的运动规则,来模拟鸟群整体的复杂行为。1986年CraigReynolS提出了Boid模型,用以模拟鸟类聚集飞行的行为,通过对现实世界中这些群体运动的观察,在计算机中复制和重建这些运动轨迹,并对这些运动进行抽象建模,以发现新的运动模式。之后,生物学家FrankHeppner在此基础上增加了栖息地对鸟吸引的仿真条件,提出了新的鸟群模型。这个新的鸟群模型的关键在于以个体之间的运算操作为基础,这个操作也就是群体行为的同步必须在于个体努力维持自身与邻居之间的距离为最优,为此每个个体必须知道自身位置和邻居的位置信息。这些都表明群体中个体之间信息的社会共享有助于群体的进化。在1995年,受到FrankHeppner鸟群模型的影响,社会心理学博士James3.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种群初始化随机初始化粒子位置和粒子速度,并根据适应函数计算粒子适应度值。%%产生初始粒子和速度fori=1:sizepop%随机产生一个种群pop(i,:)=2*rands(1,2);%初始种群V(i,:)=0.5*rands(1,2);%初始化速度%计算适应度fitness(i)=fun(pop(i,:));%计算粒子的适应度值end适应度函数代码如下:functiony=fun(x)%函数用于计算粒子适应度值%xinput输入粒子%youtput粒子适应度值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寻找初始极值%%个体极值和群体极值[bestfitnessbestindex]=max(fitness);zbest=pop(bestindex,:);%全局最佳gbest=pop;%个体最佳fitnessgbest=fitness;%个体最佳适应度值fitnesszbest=bestfitness;%全局最佳适应度值3.4迭代寻优根据上文中的公式更新粒子位置和速度,并且根据新粒子的适应度值更新个体极值和群体极值。程序代码如下:%%迭代寻优fori=1:maxgenforj=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,:)<Vmin))=Vmin;%种群更新pop(j,:)=pop(j,:)+V(j,:);pop(j,find(pop(j,:)>popmax))=popmax;pop(j,find(pop(j,:)<popmin))=popmin;%适应度值fitness(j)=fun(pop(j,:));endforj=1:sizepop%个体最优更新iffitness(j)>fitnessgbest(j)gbest(j,:)=pop(j,:);fitnessgbest(j)=fitness(j);end%群体最优更新iffitness(j)>fitnesszbestzbest=pop(j,:);fitnesszbest=fitness(j);endendyy(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;fori=1:sizepoppop(i,:)=2*rands(1,2);%初始种群V(i,:)=0.5*rands(1,2);%初始化速度fitness(i)=fun(pop(i,:));%计算粒子的适应度值end[bestfitnessbestindex]=max(fitness);zbest=pop(bestindex,:);%全局最佳gbest=pop;%个体最佳fitnessgbest=fitness;%个体最佳适应度值fitnesszbest=bestfitness;%全局最佳适应度值fori=1:maxgenforj=1:sizepopV(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,:)<Vmin))=Vmin;pop(j,:)=pop(j,:)+V(j,:);pop(j,find(pop(j,:)>popmax))=popmax;pop(j,find(pop(j,:)<popmin))=popm

温馨提示

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

评论

0/150

提交评论