粒子群算法工具箱简介及应用实例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

粒子群算法工具箱简介及应用实例1。引言•粒子群算法(PSO算法)•定义:粒子群算法,又称粒子群优化算法(ParticalSwarmOptimization),缩写为PSO,是近年来发展起来的一种新的进化算法(EvolutionaryAlgorithm-EA),由Eberhart博士和kennedy博士于1995年提出,其源于对鸟群捕食的行为研究。2。算法思想•PSO模拟鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物,在这个区域里只有一块食物,所有的鸟都不知道食物在那里,但是它们知道当前的位置离食物还有多远,那么找到食物的最优策略是什么呢?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。都向这片区域靠拢。3。抽象PSO中,将问题的搜索空间类比于鸟类的飞行空间,将每只鸟抽象为一个无质量无体积的微粒,用以表征优化问题的一个候选解,我们称之为“粒子”,优化所需要寻找的最优解则等同于要寻找的食物。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索。3。抽象PSO初始化为一群随机粒子(随机解、一群鸟),然后通过迭代找到最优解。在每一次迭代中,粒子(鸟)通过跟踪两个“极值”来更新自己的位置。一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest,另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。(gBest是pBest中最好值)3。算法介绍•在找到这两个最优值时,粒子根据如下的公式来更新自己的速度和位置:其中,V是粒子的速度,Present是粒子的当前位置,pBest与gBest见前面定义。rand()是(0,1)之间的随机数,c1和c2被称作学习因子。通常,c1=c2=2。w是加权系数(惯性权重),取值在0.1到0.9之间。粒子通过不断学习更新,最终飞至解空间中最优解所在的位置,搜索过程结束。最后输出的gBest就是全局最优解。在更新过程中,粒子每一维的最大速率限被限制为Vmax,如果某一维更新后的速度超过设定的Vmax,那么这一维的速度就被限定为Vmax。3。算法介绍将粒子延伸到N维空间,粒子i在N维空间里的位置表示为一个矢量,每个粒子的飞行速度也表示为一个矢量。粒子数(鸟的个数):一般取1~40.其实对于大部分的问题10个粒子已经足够可以取得好的结果;粒子的长度(维度):这是由优化问题决定,就是问题解的长度(决策变量个数);粒子的范围:由优化问题决定,每一维可以设定不同的范围;Vmax:最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如,粒子(x1,x2,x3),x1属于[-10,10],那么Vmax的大小就是20。学习因子:使粒子具有自我总结和向群体中优秀个体学习的能力,从而向群体内或邻域内最优点靠近,c1和c2通常等于2,并且范围在0和4之间。中止条件:最大循环数以及最小错误要求。惯性权重w:决定了对粒子当前速度继承多少,合适的选择可以使粒子具有均衡的探索能力和开发能力,惯性权重的取法有常数法、线性递减法、自适应法等。3。算法介绍•例:对于问题f(x)=x1^2+x2^2+x3^2求解,粒子可以直接编码为(x1,x2,x3),而适应度函数就是f(x),接着我们就可以利用前面的过程去寻优,寻优过程是一个迭代过程,中止条件一般为设置为达到最大循环数或者最小错误要求。3。算法介绍•PSO框架图粒子群优化算法Matlab工具箱简介Matlab粒子群工具箱(PSOt)提供了非常先进的粒子群优化算法,可指定惯性因子的起始值和中止值,可约定各维变量的取值范围、粒子在遇到边界时是否反弹等各种参数。除此以外,粒子群工具箱既可以在用户约定的范围内自动随机生成指定群体规模的初始粒子群,也可人工输入小于群体规模的任意数目的初始粒子,具备非常强的灵活性。粒子群优化算法Matlab工具箱简介粒子群优化算法Matlab工具箱简介PSOt具有非常强的灵活性,在实际计算中,用户只要根据需求编写好目标函数,并设置好函数自变量的取值范围和每步迭代允许的最大变化量,PSOt即可自动进行优化计算。该工具箱的使用方法主要分为一下几个步骤:(1)在MATLAB的命令窗口中点击“File”,“SetPath”,设置工具箱的路径。(2)编写待优化的函数(test_func),保存为同名m文件粒子群优化算法Matlab工具箱简介(3)调用粒子群算法的核心模块:pso_Trelea_vectorized.m,其调用格式为:pso_Trelea_vectorized(functname,D,mv,VarRange,minmax,PSOparams,plotfcn,PSOseedValue)pso_Trelea_vectorized(functname,D,mv,VarRange,minmax,PSOparams,plotfcn,PSOseedValue)Functname:目标函数名D:待优化问题的维数;mv:粒子飞行的最大速度;VarRange:参数变化范围矩阵;Minmax:寻优类型,取0代表求目标函数最小值,取1代表求目标函数最大值);PSOparams:参数矩阵,包括最大迭代次数、粒子群规模、惯性因子、学习因子、终止迭代条件等;Plotfcn:寻优过程中用于展示寻优过程的画图函数;PSOseedValue:可允许用户输入任意多组初始粒子。求非线性函数极大值工具箱应用实例cos2cos222222sin,2.71289xyxyf(xy)exy工具箱应用实例(1)编写待优化函数程序functionz=test_func(in)nn=size(in);%输入的是矩阵,即算法中随机产生一组x和y,按[x(nn,1),y(nn,1)]排列x=in(:,1);y=in(:,2);nx=nn(1);fori=1:nxtemp=sin(sqrt(x(i)^2+y(i)^2))/sqrt(x(i)^2+y(i)^2)+exp((cos(2*pi*x(i))+cos(2*pi*y(i)))/2)-2.71289;z(i,:)=temp;end工具箱应用实例(2)编写调用函数x_range=[-2,2];y_range=[-2,2];range=[x_range;y_range];Max_V=0.2*(range(:,2)-range(:,1));%最大速度取范围的10%~20%n=2;%粒子维数PSOparams=[1030020220.90.415001e-25250NaN00]%个体数目20,进化次数300PSO_Trelea_vectorized('test_func',n,Max_V,range,1,PSOparams)工具箱应用实例

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功