二维粒子群优化算法.docx_第1页
二维粒子群优化算法.docx_第2页
二维粒子群优化算法.docx_第3页
二维粒子群优化算法.docx_第4页
全文预览已结束

下载本文档

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

文档简介

% 二维粒子群优化算法%function GoodPSOMVP222% P-粒子位置数组% V-粒子速度数组% W-惯性因子横向量% F-适应度值列向量% B-每代最优值列向量% G-前t代全局最优值位置% FB-每代最优值列向量% c1-局部加速因子% c2-全局加速因子% pnum-粒子数目% dnum-自变量维数% tnum-迭代次数(代数)% xymin-自变量下限% xymax-自变量上限% gBest-每代所有粒子全局最优值位置% pBest-前t代每个粒子局部最优值位置% fBest-前t代最优值列向量% maxfit-最大适应度值% Meanfit-每代平均适应度值数组% Newfit-新平均适应度值数组%clcclear allclose allc1=2;c2=2;wmin=0;wmax=0.9;pnum=50;dnum=1;tnum=200;xmin=0;xmax=9;step=0.05;for t=1:tnum W(t)=wmax-(wmax-wmin)/tnum)*t;endTF=X+10*sin(X.*5)+7*cos(X.*4); %目标函数Meanfit=;P=;P=xmin+(xmax-xmin)*rand(pnum,dnum,1); %随机生成第一代所有粒子位置%1表示第一代V=wmin+(wmax-wmin)*rand(pnum,dnum,1); %随机生成第一代所有粒子速度数组%1表示第一代%for i=1:pnum %求第一代所有粒子的适应度值 F(i,1,1)=TargetFun(P(i,1,1);endnewfit=mean(F(:,1,1);Meanfit=Meanfit newfit;%求第一代所有粒子适应度值的最大值(函数最大值)及最大值对应的位置maxfit,k=max(F(:,1,1);B(1,1,1)=maxfit;%将第一代适应度值的最大值存储到列向量B中%第一代的最大值也就是目前整个种群找到的最优解%这个极值是全局极值GG(1,1,1)=P(k,1,1);for p=1:pnum %整个种群目前找到的最优解%这个极值是全局极值G gBest(p,1,1)=G(1,1,1);end%把前1代的最优值保存列向量fBest中fBest(1,1,1)=TargetFun(gBest(1,1,1);for i=1:pnum %第一代每个粒子本身所找到的最优解位置(即第一代粒子本身)%这个解叫做个体极值pBest pBest(i,:,1)=P(i,:,1);end%计算第一代粒子中目标函数的最优值FB(1,1,1)=TargetFun(G(1,1,1);%从第二代开始迭代for t=2:tnum V(:,1,t)=W(t-1)*V(:,1,t-1)+c1*rand*(pBest(:,1,t-1)-P(:,1,t-1)+c2*rand*(gBest(:,1,t-1)-P(:,1,t-1); P(:,1,t)=P(:,1,t-1)+V(:,1,t); for i=1:pnum if P(i,1,t)xmax P(i,1,t)=xmax; end end for i=1:pnum %求第t代所有粒子的适应度值 F(i,1,t)=TargetFun(P(i,1,t); end Newfit=mean(F(:,1,t); Meanfit=Meanfit Newfit; %求第t代所有粒子适应度值的最大值(函数最大值)及最大值对应的位置 maxfit,k=max(F(:,:,t); B(1,1,t)=maxfit; %将第t代适应度值的最大值存储到列向量B中 %假设第t代最优值的坐标(参数)是全局最优值的坐标并保存在数组G中 G(1,1,t)=P(k,1,t); %将第t代最优函数值保存到列向量FB中 FB(1,1,t)=TargetFun(G(1,1,t); %求前t代的最优值及最优值的位置 maxfit,k=max(FB(1,1,:); if maxfitFB(1,1,t) G(1,1,t)=P(1,1,k); end for p=1:pnum %第t代所有粒子的全局最优位置调整 gBest(p,1,t)=G(1,1,t); end %求前t代的最优值 fBest(1,1,t)=TargetFun(gBest(1,1,t); %对第t代所有粒子的局部最优位置调整 for i=1;pnum %第i个粒子的前t代最优值定位 maxfit,k=max(F(i,1,:); if F(i,1,t)=maxfit pBest(i,1,t)=P(i,1,t); else pBest(i,1,t)=P(i,1,k); end endendGend=G(1,:,tnum) %粒子的最优值位置(即最优函数值位置)fend=fBest(1,1,tnum) %最优值(即最优函数值)%figure(1)figure(1)fplot(TF,xmin,xmax)grid onhold on%标记初始蚂蚁的位置%scatter(P(:,1,1),F(:,1,1),k*)xlabel(x)ylabel(y)title(粒子的初始位置)%figure(2)fplot(TF,xmin,xmax)grid onhold onplot(P(:,1,tnum),F(:,1,tnum),r*)grid on xlabel(x)ylabel(y)title(粒子最终分布位置)%figure(3)t=1:tnum;fBestt(t)=fBest(1,1,t);plot(t,fBestt)hold on

温馨提示

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

评论

0/150

提交评论