粒子群优化算法是

上传人:ta****u 文档编号:214830522 上传时间:2023-05-31 格式:DOCX 页数:6 大小:113.45KB
收藏 版权申诉 举报 下载
粒子群优化算法是_第1页
第1页 / 共6页
粒子群优化算法是_第2页
第2页 / 共6页
粒子群优化算法是_第3页
第3页 / 共6页
资源描述:

《粒子群优化算法是》由会员分享,可在线阅读,更多相关《粒子群优化算法是(6页珍藏版)》请在装配图网上搜索。

1、粒子群优化算法(panicle swarm optimization, PSO)是 kennedy 和 Eberhart 在 研究鸟类和鱼类的群体行为基础上于 1995 年提出的一种群智能算法,其思想米 源予人工生命和演化计算理论,模仿鸟群飞行觅食行为,通过鸟集体协作使群体 达到最优。1. 粒子群算法的原理PSO 中,每个优化问题的解看作搜索空间中的一只鸟(即粒子),所有的粒子 都有一个被优化的函数决定的适应值,并且有一个速度决定它们飞翔的方向和速 率,粒子们追随当前的最优粒子在解空间中搜索。算法首先初始化一群随机粒子, 然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”即个体

2、极值和全局极值来更新自己的速度与位置。在 D 维目标搜索空间中,由种群数 为m的粒子组成粒子群,其中第f个粒子在第d维的位置为Xid,其飞行速度为 Vid,该粒子当前搜索到的最优位置为Pid(goodvalue)和整个粒子群当前的最优位 置 Pgd(bestvalue)。每维的速度与位置更新公式如下Vid + 1X Vid + C1 X Tand (I)% ( Pid - Xid ) + C 2 X Tand (I)% ( gid - Xid) (JXid + 1二 Xid+vid + 1(2)W为惯性权重,C1和C2为学习因子,rand ()0,1 范围内变化的随机数。2. 参数介绍与设置(

3、 1) ww 是保持粒子运动惯性的参数,能使种群扩展搜索空间,获得较好的求解效 果。较大的 w 有利于群体在更大的范围内进行搜索。而较小的 w 能够保证群体 收敛到最优位置,所以 w 的选择及在迭代中的变化对搜索能力和跳出局优能力 具有重要影响。一般将 w 设定为 0.8 左右。(2)加速因子 c1 和 c2c1 和 c2 用于调整粒子自身经验和社会经验在其运动中的作用,表示将每个 粒子拉向 pbest 和 gbest 位置的随机加速项的权重,低的值允许粒子在被拉回前 可以在目标区域外徘徊 , 而高的值则导致粒子突然冲向或越过目标区域。如果 c1=0, 则粒子没有认知能力。在粒子的相互作用下,

4、能到达新的搜索空间, 但容易 陷入局部极值点; 如果 c2=0, 粒子间没有社会信息共享, 其算法变成一个多起点 的随机搜索; 如果 c1=c2=0, 粒子将一直以当前的速度飞行, 直到到达边界。恰当 地选择 c1 与 c2 能较好的得到最优解,一般都设定为 2。( 3)最大速度 vmaxvmax 决定当前位置与最好位置之间的区域的分辨率(或精度)。如果 vmax 太高, 微粒可能会飞跃最优解; 如果 vmax 太小, 则微粒易陷入局部最优。引入惯 性权重 w 可消除对 vmax 的需要, 因为两者的作用都是维护全局和局部搜索能力 的平衡。当 vmax 增加时, 可通过减小 w 来平衡搜索,

5、而 w 的减小可使得所需的 迭代次数变小。但常常将设定一个最大的 vmax。较好地选择和调整参数能够加大搜索能力,避免 PSO 的早熟现象。3. 算法步骤及设计PSO 的算法框架如下所述:(1) 初始化所有的个体(粒子),初始化它们的速度和位置,并且将个体的历史 最优 goodvalue 设为当前位置,而群体中最优的个体历史位置作为当前 的全局最优 bestvalue。(2) 在当代的进化中,计算各个粒子的适应度函数值。(3) 如果该粒子当前的适应度函数值比其历史最优值要好,那么历史最优将 会被当前位置所替代。(4) 如果该粒子的历史最优比全局最优要好,那么全局最优将会被该粒子的 历史最优所替

6、代。(5) 对每个粒子按照公式(1)和公式(2)对速度和位置进行更新。(6) 进化代数增加 1,如果还没有到达结束条件,转到(2)步,否则输出全局 最优 bestvalue 并结束。4. 程序设计与仿真(1)程序设计说明采用 MATLAB 软件编程,程序粒子种群个数设定为 20 个,搜索范围为全局版本 终止条件是粒子都到达最优点。(2)函数f i = (x + 2)x(x-3) + (y-4)x(y-2),其图形如图 2 所示,其在 x=0.5, y=3.处有最小值f=-7.25.运行程序大约迭代220步,就可以让所有的粒子到达最优 点。图3中坐标图从左到右从上到下分别为初始化种群的位置、k=

7、50的粒子位 置、 k=100 的粒子位置及迭代结束粒子的位置.从图中可见能够搜索到最优点。图 2 f1 三维图形图 3 仿真粒子位置图(3)Rastrigin 函数 f 2 = (x.- 1A2-10xcos(2x兀 xx.) +10),当 n=2 时,为二维图1=1形如图4所示,在x1=0,x2=0.处有最大值f=0;在程序中取相反数求其最小值, 迭代 k=670 步左右将可以将所有的粒子推向一点最优点。取前十个粒子的位 置如图 5,可知可以快速地得到满意的最优解,且能够跳出局优。-4-4图 4 f2 函数 n=2 三维图形粒子 1 位置:x=0. 0083, y=0. 0038 粒子2位

8、置;x=-0. 0000, y=0. 0000 粒子3位置;x=0. 0000, v=0. 0000 粒子4位置;x=-0. 0000, v=0. 0000 粒子5位置:x=-0. 0000, v=0. 0000 粒子6位置:x=0. 0000t v=0. 0000 粒子了位置:x=0. 0000, v=0. 0000 粒子8位置:x=0. 0000, v=-0. 0000 粒子9位置:x=0. 0000, v=0. 0000 粒子 10位置:x=-0. 0000, v=0. 0000图 5 粒子位置坐标(4)rosenbrock 函数:f 3 = (100匕_ 1 -x.)2 + (x._

9、1)2),x. g-10,10.当 n=2 时,函数i=1x 10-10 -10为二维,当x1=x2=1时有最小值f=0,其图形如图6,可知在最优点附近,函数 值下降很慢,利用将所有粒子推向一点终止条件,大约迭代 k=1200 次左右结束。 可以从坐标图中(图 7)看到粒子的在迭代过程中位置。图 6 f3 函数 n=2 三维图形图 7 粒子坐标位置当 n=5 时,即是 5 维的 rosenbrock 函数,当 x1=x2=x3=x4=x5=1 时有最小值 f=0. 采用粒子推向一点作为终止条件,运行程序迭代 10 万次(人为设定)后,全局 最优值已到了理想值(f=o)但此时粒子的位置还是相离较

10、远,且运行时间较长(大约一分钟),考虑程序目的就是找到最优值,而不是让所有粒子到达一点, 因此采用迭代次数作为程序终止条件。依次增大设定的迭代次数观察运行结果, 如下表1表 1 取不同迭代次数最优点迭代次数k全局最优点位置x1 x2 x3 x4 x5最优解10000.07940.28190.52540.72670.85300.841530000.37180.61260.78320.88510.94070.215150000.57510.75830.87100.93280.96450.0816100000.70640.84130.91650.95720.97840.0348500000.9937

11、0.99690.99840.99920.99960.00001000000.99991.00001.00001.00001.00000.0000由表中可知,随着维数的增加,虽然迭代过程也是收敛的,但寻找最优点很难, 前已述及,PSO的搜索能力与参数设置有关,且全局版本相对局部版本有较差的 跳出局优的能力。为此若要增加搜索能力、提高迭代次数需要考虑改进参数和更 换局部版本搜索方式。5. 程序代码(1)主函数:clearclchold offpsize=20;%粒子个数的设置pd=5;%粒子的维数lz=zeros(psize,pd);for i=1:psize%粒子群随机生成。psize行pd列,

12、pd维。lz(i,:)=rand(1,pd).*20-10;%【-1010 之间】endlv=lz;lzfigure=lz;%画初始图用goodvalue=lz;%每个粒子自己历史最好值初始化,psize行pd列vmax=20;%速度上限c1=2;c2=2;%学习因子w=0.729;%随机因子和惯性因子。ri=0;bestvalue=zeros(1,pd);%全局最好值初始化,1行pd列for j=1:pdbestvalue(1,j)=goodvalue(1,j);endfnew=zeros(1,psize);for j=1:psizefnew(j)=fpso(lz(1,:);endfold=

13、fnew;flagstop=0;%终止标志k=0;%迭代次数记录fO=fpso(bestvalue);%适应值初始化(默认)while flagstop=0%*.1.*for i=1:psize%适应值比较,更新各自历史最好值(位置)fn ew(i)=fpso(lz(i,:);%记录每次每个粒子的适应值,便于以后设置终止条件if fnew(i)fold(i)fold(i)=fnew(i);%fold 记录每个粒子的最好历史值for j=1:pdgoodvalue(i,j)=lz(i,j);endendendfor i=1:psize%每个粒子历史最好值相比较,更新全局最好值(及各维) f1=f

14、old(i);if f1f0f0=f1;for j=1:pdbestvalue(1,j)=goodvalue(i,j); endendend%* 粒子趋一点终止条件*%flagstopO=max(abs(fold);%比较当次的所有粒子的适应值,%flagstop1=mi n(abs(fold);%若它们之间差别较小,则可停止。% if (flagstop0-flagstop1)1000 %迭代次数过大,强制终止,以防陷入死循环flagstop=1; end%*速度和位置更新 *for j=1:pdfor i=1:psize lv(i,j)=w.*lv(i,j)+(c1*rand(1).*(g

15、oodvalue(i,j)-lz(i,j).+(c2*ra nd(1).*(bestvalue(1,j)-lz(i,j);% 更新速度 if lv(i,j)vmax%速度最大值约束lv(i,j)=vmax;endlz(i,j)=lz(i,j)+lv(i,j);% 更新粒子位置endend%*% ri=ri+1;% rivalue(ri)=f0;% if ri=5000%ri=0;%flagstop0=max(abs(rivalue);%flagstop1=min(abs(rivalue);%if (flagstop0-flagstop1)0.001 flagstop=1; end % end%

16、*画图*%if k=0 %画出初始粒子的位置 subplot(2,2,1);t=1:psize; plot(lzfigure(t,1),lzfigure(t,2),*); axis(-10,10,-10,10);endfor j=2:3%分别画出迭代300次和600次粒子的位置 if k=300*jsubplot(2,2,j); t=1:psize;% gtext(k=600); plot(lz(t,1),lz(t,2),*); axis(0,10,0,10);endendif flagstop=1 %画出终止时粒子的位置 subplot(2,2,4);t=1:psize; plot(lz(t

17、,1),lz(t,2),*); axis(0,10,0,10);end%* k=k+1;endfprintf(总迭代次数:k=%ld。n:k-1);fprintf(每个粒子的历史最好值:n);for i=1:psizefpri ntf(粒子 %d:%6.4f,%6.4fn,i,goodvalue(i,1),goodvalue(i,2);endfprintf(全局最好值:%6.4f,%6.4f.n,bestvalue(1,1),bestvalue(1,2); fprintf(最优解(最大值):%6.4f.n,fpso(bestvalue(1,:);for j=1:20fprintf(粒子d 位置

18、:,j); fprintf(x=%6.4f,y=%6.4f,lz(j,1),lz(j,2); fprintf(n) ;end (2)调用函数: function fvalue=fpso(x)%fvalue=(x(1)+2)*(x(1)-3)+(x(2)-4)*(x(2)-2);%f1pd=5;%粒子的维数%*f3*fvalue=0;for r=1:(pd-1) f0=100*(x(r)-x(r+1)A2F2+(x(r+1)-lF2;fvalue=fvalue+f0;end%*%fvalue=(x(1)-2)*(x(1)-2.5)+(x(2)-4)*(x(2)-5);% for r=1:pd%f0=(x(r)*sin(sqrt(abs(x(r);%fvalue=fvalue+f0;% end%fvalue=x(1)A2+2*x(2)A2-0.3*cos(3*pi*x(1)+4*pi*x(2)+0.3;%fvalue=-(3/(0.05+x(1)A2+x(2)A2)A2+(x(1)A2+x(2)A2)A2;%fvalue=-(-(x(1)A2-10*cos(2*pi*x(1)+10)-(x(2)A2-10*cos(2*pi*x(2)+10);%f2 end

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!