收藏 分享(赏)

粒子群算法论文.doc

上传人:weiwoduzun 文档编号:2581814 上传时间:2018-09-22 格式:DOC 页数:12 大小:334.50KB
下载 相关 举报
粒子群算法论文.doc_第1页
第1页 / 共12页
粒子群算法论文.doc_第2页
第2页 / 共12页
粒子群算法论文.doc_第3页
第3页 / 共12页
粒子群算法论文.doc_第4页
第4页 / 共12页
粒子群算法论文.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、1粒子群算法的寻优算法摘要:粒子群算法是在仿真生物群体社会活动的基础上,通过模拟群体生物相互协同寻优能力,从而构造出一种新的智能优化算法。这篇文章简要回顾了粒子群算法的发展历史;引入了一个粒子群算法的实例,对其用 MATLAB 进行编程求解,得出结论。之后还对其中的惯性权重进行了延伸研究,对惯性权重的选择和变化的算法性能进行分析。关键词:粒子群、寻优、MATLAB 、惯性权重目录:1.粒子群算法的简介 .31.1 粒子群算法的研究背景 31.2 起源 31.3 粒子群理论 42.案例背景 .52.1 问题描述 .52.2 解题思路及步骤 53.MATLAB 编程实现 .63.1 设置 PSO

2、算法的运行参数 63.2 种群初始化 .63.3 寻找初始极值 .63.4 迭代寻优 .73.5 结果分析 .74.惯性权重对 PSO 算法的影响 94.1 惯性权重的选择 .94.2 惯性权重变化的算法性能分析 .95 结论 11参考文献: 1221.粒子群算法的简介粒子群算法(Particle Swarm Optimization)是一种新的智能优化算法。谈到它的发展历史,就不得不先介绍下传统的优化算法,正因为传统优化算法自身的一些不足,才有新智能优化算法的兴起,而粒子群算法(PSO)就是在这种情况下发展起来的。1.1 粒子群算法的研究背景最优化是人们在科学研究、工程技术和经济管理等领域中

3、经常遇到的问题。优化问题研究的主要内容是在解决某个问题时,如何从众多的解决方案中选出最优方案。它可以定义为:在一定的约束条件下,求得一组参数值,使得系统的某项性能指标达到最优 (最大或最小) 。传统的优化方法是借助于优化问题的不同性质,通常将问题分为线性规划问题、 非线性规划 问题、整数规划问题和多目标规划问题等。相应的有一些成熟的常规算法,如应用于线性规划问题的单纯形法,应用于非线性规划的牛顿法、共扼梯度法,应用于整数规则的分枝界定 法、动态规划等。列举的这些传统的优化算法能够解决现实生活和工程上的很多问题,但工业和科学领域大量实际问题的困难程度正在日益增长,它们大多是根本无法在可接受的时间

4、 内找到解的问题。这类优化问题的困难性不仅体现在具有极大的规模,更为重要的是,它们多数是非线性的、动态的、多峰的、具有欺骗性的或者不具有任何导数信息。因此,发展通用性更强、效率更高的优化算法总是需要的。 1.2 起源在自然界中,鸟群运动的主体是离散的,其排列看起来是随机的,但在整体的运动中它们却保持着惊人的同步性,其整体运动形态非常流畅且极富美感。这些呈分布状态的群体所表现出的似乎是有意识的集中控制,一直是许多研究者感兴趣的问题。有研究者对鸟群的运动进行了计算机仿真,他们通过对个体设定简单的运动规则,来模拟鸟群整体的复杂行为。1986 年 Craig ReynolS 提出了 Boid 模型,用

5、以模拟鸟类聚集飞行的行为,通过对现实世界中这些群体运动的观察,在计算机中复制和重建这些运动轨迹,并对这些运动进行抽象建模,以发现新的运动模式。之后,生物学家 Frank Heppner 在此基础上增加了栖息地对鸟吸引的仿真条件,提出了新的鸟群模型。这个新的鸟群模型的关键在于以个体之间的运算操作为基础,这个操作也就是群体行为的同步必须在于个体努力维持自身与邻居之间的距离为最优,为此每个个体必须知道自身位置和邻居的位置信息。这些都表明群体中个体之间信息的社会共享有助于群体的进化。在 1995 年,受到 Frank Heppner 鸟群模型的影响,社会心理学博士 3James Kennedy 和电子

6、工程学博士 Russell Eherhart 提出了粒子群算法。粒子群算法其实也是一种演化计算技术,该算法将鸟群运动模型中的栖息地类比于所求问题空间中可能解的位置,通过个体间的信息传递,导引整个群体向可能解的方向移动, 在求解过程中逐步增加发现较好解的可能性。群体中的鸟被抽象为没有质量和体积的“粒子” ,通过这些“粒子”间的相互协作和信息共享,使其运动速度受到自身和群体的历史运动状态信息的影响。以自身和群体的历史最优位置对粒子当前的运动方向和运动速度加以影响,较好地协调粒子本身和群体之间的关系,以利于群体在复杂的解空间中进行寻优操作。1.3 粒子群理论求解优化问题的,算法中每个粒子都代表问题的

7、一个潜在解,每个粒子对应一个由适应度函数决定的适应度值。粒子的速度决定了粒子移动的方向和距离,速度随自身及其他粒子的移动经验进行动态调整,从而实现个体在可解空间中的寻优。PSO 算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解,用位置、速度和适应度值三项指标表示该粒子特征,适应度值由适应度函数计算得到,其值的好坏表示粒子的优劣。粒子在解空间中运动,通过跟踪个体极值 Pbest 和群体极值 Gbest 更新个体位置。个体极值 Pbest 是指个体所经历位置中计算得到的适应度值最优位置,群体极值 Gbest 是指种群中的所有粒子搜索到的适应度最优位置。粒子每更新一次

8、位置,就计算一次适应度值,并且通过比较新粒子的适应度值和个体极值、群体极值的适应度值更新个体极值 Pbest 和群体极值 Gbest 位置。假设在一个 D 维的搜索空间中,由 n 个粒子组成的种群X=(X1,X2,Xn) ,其中第 i 个粒子表示为一个 D 维的向量代表第 i 个粒 子在 D 维搜索空间中的位置,亦代表问题的T21.X),( iiii x一个潜在解。根据目标函数即可计算出每个粒子位置 Xi 对应的适应度值。第 i个粒子的速度为 ,其个体极值为 ,种群T21.V),( iiii T21.P),( iDiii的群体极值为 。P),( gDg在每次迭代过程中粒子通过个体极值和群体极值

9、更新自身的速度和位置,即 )()(211kid kidgkidikid XPrcXPrcVikiV1i其中 为惯性权重,d = l,2,D;i = l,2 ,n;k 为当前迭代次数为粒子的速度;c1 和 c2 是非负的常数,称为加速度因子;r1 和 r2 是分布于0, 1区间的随机数。为防止粒子的盲目搜索,一般建议将其位置和速度限制在一定4的区间 、 。Xmaxa,maxaX,2.案例背景2.1 问题描述本案例寻优的非线性函数为: 71289.xsinf()2cos2yxey函数图形如下图所示。图 1 函数图像从函数图像可以看出,该函数有很多局部最优点,而极限位置为(0,0) ,在(0,0)附

10、近取得极大值。2.2 解题思路及步骤基于 PSO 算法的函数极值寻优算法流程图如图 2 所示。图 2 算法流程其中,粒子和速度初始化随机初始化粒子速度和粒子位置;由第一章中的公式计算粒子适应度值;根据初始粒子适应度值确定个体极值和群体极值;根据公式更新粒子速度和位置;根据新种群中粒子适应度值更新个体极值和群体极值。5本题中,适应度函数为函数表达式,适应度值为函数值。种群粒子数设置为 20,每个粒子的维数为 2,算法迭代次数定为 300 次。3.MATLAB 编程实现根据 PSO 算法原理,在 MATLAB 里编程实现基于 PSO 算法的函数极值寻优算法。3.1 设置 PSO 算法的运行参数程序

11、代码如下:% 清空环境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)

12、=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);6zbest=pop(bestindex,:); %全局最佳gbest=pop; %个体最佳fit

13、nessgbest=fitness; %个体最佳适应度值fitnesszbest=bestfitness; %全局最佳适应度值3.4 迭代寻优根据上文中的公式更新粒子位置和速度,并且根据新粒子的适应度值更新个体极值和群体极值。程序代码如下:% 迭代寻优for i=1:maxgenfor 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,

14、find(pop(j,:) fitnessgbest(j)gbest(j,:) = pop(j,:);fitnessgbest(j) = fitness(j);end%群体最优更新if fitness(j) fitnesszbestzbest = pop(j,:);fitnesszbest = fitness(j);endend yy(i)=fitnesszbest; %每代最优值记录在 yy 数组中end3.5 结果分析7PSO 算法反复迭代 300 次,画出每代个体适应度值变化图形,程序代码如下:plot(yy)title(最优个体适应度,fontsize,12);xlabel(进化代数

15、,fontsize,12);ylabel(适应度,fontsize,12);最优个体适应度值变化如图三所示。图 3 最优个体适应度值最终得到的最优个体适应度值为 1.0053,对应的粒子位置为(0.0015,-0.0008) ,PSO 算法寻优得到的最优值接近函数实际最优值。但在多次运行的时候会出现结果为 0.8477 左右的极值结果,如图 4 所示,原因在第四章进行探讨。8图 4 最优个体适应度值的另一结果4.惯性权重对 PSO 算法的影响4.1 惯性权重的选择惯性权重 体现的是粒子继承先前的速度的能力,Shi.Y 最先将惯性权重引入 PSO 算法中,并分析指出一个较大的惯性权值有利于全局搜

16、索,而一个较小的惯性权值则更利于局部搜索。为了更好地平衡算法的全局搜索与局部搜索能力,Shi.Y 提出了线性递减惯性权重,即 maxax/)() Tkkendstart (其中, 为初始惯性权重; 为迭代至最大次数时的惯性权重;k 为starend当前迭代代数; 为最大迭代代数。一般来说,惯性权值 =0.9, = mxTstarend0.4 时算法性能最好。这样,随着迭代的进行,惯性权重由 0.9 线性递减至0.4,迭代初期较大的惯性权重使算法保持了较强的全局搜索能力,而迭代后期较小的惯性权重有利于算法进行更精确的局部搜索。线性惯性权重只是一种经验做法,常用的惯性权重的选择还包括如下几种:几种

17、 的动态变化如图 5 所示,横坐标为迭代次数,纵坐标为权重值。9图 5 四种惯性权重的变化4.2 惯性权重变化的算法性能分析算法参数设置:种群规模 20,进化 300 代。每个实验设置进化 100 次,将100 次的平均值作为最终结果。在上述的参数设置下,运用 4.1 中的五种取值方法对函数进行求解,并比较所得解的平均值、失效次数和接近最优解的次数,来分析其收敛精度、收敛速度等性能。每种 的算法进化曲线如图 6 所示。图 6 五种惯性权重下函数平均值的收敛曲线本文解决的寻优问题中,将距离最优解 1.0054 误差为 0.01 的解视为接近最优解,将 0.8477 及更小的解视为陷人局部最优的解

18、。由图 6 和表 1 可以看出,惯性权重 不变的粒子群优化算法虽然具有较快的收敛速度,但其后期容易陷入局部最优,求解精度低;而几种 动态变化的算法虽然在算法初期收敛稍慢,但在后期局部搜索能力强,利于算法跳出局部最优而求得最优解,提高了算法的求解精度。表 1 第三个函数 动态变化方法,前期 变化较慢,取值较大,维持了算法的全局搜索能力;后期 变化较快,极大地提高了算法的局部寻优能力,从而取得了很好的求解效果。表 1 五种惯性权重下的算法性能比较105 结论粒子群算法是在仿真生物群体社会活动的基础上,通过模拟群体生物相互协同寻优能力,从而构造出的一种新的智能优化算法。本篇文章简要回顾了粒子群算法的

19、发展历史,详细讲解了粒子群算法的理论基础。之后引入了一个粒子群算法的实例即粒子群算法的寻优算法,分析了问题,并进行了解题步骤的推演,对其用 MATLAB 进行编程求解,得出结论。之后针对粒子群算法寻优算法实例中出现的一个问题进行再探讨,即在一定次数内的最优值计算会出现一次最优值不正确的情况。故对粒子群算法中比较重要的一大因素惯性权重(也是导致上文问题的因素)进行了延伸学习和研究,惯性权重 体现的是粒子继承先前的速度的能力,分析指出一个较大的惯性权值有利于全局搜索,而一个较小的惯性权值则更利于局部搜索。并对目前使用较多的五种惯性权重的函数进行了比较分析,列出了五种惯性权重在一定次数内计算中的取值

20、曲线。然后重新编程,分别进行 100 次的寻优算法的求解,并统计结果做成表格,找到一个最优的取值惯性权重的函数,从而能够尽量避免陷入局部最优值并且速度较快的完成既定任务。通过实例更好更详细的了解和学习了粒子群算法这一智能优化算法,深入的了解了粒子群算法的寻优算法流程和编程思路。11参考文献:1 杨朝霞,方建文,李佳蓉,等.粒子群优化箅法在多参数拟合中的作用J.浙江师范大学学报,2008,31(2):173 - 177.2 江宝别,胡俊淇.求解多峰函数的改进粒子群算法研究J.宁波大学学报,2008,21(2) :150- 154.3 薛婷.粒子群优化箅法的研究与改进D.大连:大连海亊大学,200

21、8.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:sizepop12pop(i,:)=2*

22、rands(1,2); %初始种群V(i,:)=0.5*rands(1,2); %初始化速度fitness(i)=fun(pop(i,:); %计算粒子的适应度值endbestfitness bestindex=max(fitness);zbest=pop(bestindex,:); %全局最佳gbest=pop; %个体最佳fitnessgbest=fitness; %个体最佳适应度值fitnesszbest=bestfitness; %全局最佳适应度值for i=1:maxgenfor j=1:sizepopV(j,:) = V(j,:) + c1*rand*(gbest(j,:) - p

23、op(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);endif fitness(j) fitnesszbestzbest = pop(j,:);fitnesszbest = fitness(j);endend yy(i)=fitnesszbest; Endplot(yy)title(最优个体适应度,fontsize,12);xlabel(进化代数 ,fontsize,12);ylabel(适应度 ,fontsize,12);%fun 函数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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报