logo资料库

人工鱼群算法源代码.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
%人工鱼群算法 format long Visual=2.5; Step=0.3; N=50; Try_number=50; a1=-10; b1=10; a2=-10; b2=10; d=[]; h=1e-1; Friend_number=50; k=0; m=50; X1=rand(N,1)*(b1-a1)+a1; X2=rand(N,1)*(b2-a2)+a2; X=[X1 X2];%人工鱼数量 for i=1:N wwww=[X(i,1),X(i,2)]; d(i)=maxf(wwww); end [w,i]=max(d); maxX=[X(i,1),X(i,2)];%初始公告板记录 maxY=w;%初始公告板记录 figurex=[]; figurey=[]; figurez=[]; figurex(numel(figurex)+1)=maxX(1); figurey(numel(figurey)+1)=maxX(2); figurez(numel(figurez)+1)=maxY; kkk=0; while(k
Xc=Xc/nf; if((maxf(Xc))>maxf(XX)) XXnext1=XX+rand*Step*(Xc-XX)/norm(Xc-XX); if(XXnext1(1)>b1) XXnext1(1)=b1; end if(XXnext1(1)b2) XXnext1(2)=b2; end if(XXnext1(2)b1) XXnext1(1)=b1; end if(XXnext1(1)b2) XXnext1(2)=b2; end if(XXnext1(2)maxY) maxX=XXX; maxY=maxf(XXX); end end if((maxY)>maxf(XX)) XXnext2=XX+rand*Step*(maxX-XX)/norm(maxX-XX); if(XXnext2(1)>b1) XXnext2(1)=b1; end
if(XXnext2(1)b2) XXnext2(2)=b2; end if(XXnext2(2)b1) XXnext2(1)=b1; end if(XXnext2(1)b2) XXnext2(2)=b2; end if(XXnext2(2)maxf(XXnext2)) X(i,1)=XXnext1(1); X(i,2)=XXnext1(2); else X(i,1)=XXnext2(1); X(i,2)=XXnext2(2); end end %一次迭代结束 for i=1:N XXXX=[X(i,1),X(i,2)]; if maxf(XXXX)>maxY maxY=maxf(XXXX); maxX=XXXX; figurex(numel(figurex)+1)=maxX(1); figurey(numel(figurey)+1)=maxX(2); figurez(numel(figurez)+1)=maxY; end k=k+1; %进入下一次迭代 end end
maxX maxY plot3(figurex,figurey,figurez) function [XXnext] = gmjprey(XX,Try_number,Visual,Step) pp=0; for j=1:Try_number XXj=XX+rand*Step*Visual; if(maxf(XX)
分享到:
收藏