⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmjafsa.m

📁 有MATLAB编写的智能算法——人工鱼代码。通过了调试。可运行
💻 M
字号:
%人工鱼群算法format longVisual=1;Step=0.001;N=50;Try_number=50;a=0.5;b=2;d=[];h=1e-3;Friend_number=50;k=0;m=50;X=rand(1,N)*(b-a)+a;%人工鱼数量for i=1:Nd(i)=maxf(X(i));end[w,i]=min(d);maxX=X(i);%初始公告板记录maxY=w;%初始公告板记录figurex=[];figurey=[];figurex(numel(figurex)+1)=maxX;figurey(numel(figurey)+1)=maxY;kkk=0;while(~(maxY<h))    for i=1:N        XX=X(i);%人工鱼当前状态Xi    nf=0;    Xc=0;    for j=1:N  %聚群行为开始       XXX=X(j);       if(norm(XXX-XX)<Visual)       nf=nf+1;       Xc=Xc+XXX;       end    end    Xc=Xc/nf;   if((maxf(Xc))<maxf(XX))        XXnext1=Xc+rand*Step*(XX-Xc)/norm(XX-Xc);           if(XXnext1>b)        XXnext1=b;           end        if(XXnext1<a)        XXnext1=a;           end    else       XXnext1=gmjprey(XX,Try_number,Visual,Step);       if(XXnext1>b)        XXnext1=b;           end        if(XXnext1<a)        XXnext1=a;           end   end%聚群行为结束   %maxX=XX;%追尾行为开始   %maxY=maxf(XX);   for j=1:Friend_number     XXX=X(j);     if(norm(XXX-XX)<Visual & maxf(XXX)<maxY)         maxX=XXX;         maxY=maxf(XXX);     end   end   if((maxY)<maxf(XX))       XXnext2=maxX+rand*Step*(XX-maxX)/norm(XX-maxX);         if(XXnext2>b)        XXnext2=b;           end        if(XXnext2<a)        XXnext2=a;           end   else      XXnext2 =gmjprey(XX,Try_number,Visual,Step);        if(XXnext2>b)        XXnext2=b;           end        if(XXnext2<a)        XXnext2=a;           end   end%追尾行为结束   if(maxf(XXnext1)<maxf(XXnext2))     X(i)=XXnext1;   else     X(i)=XXnext2;   endend %一次迭代结束  for i=1:N    XXXX=X(i);       if maxf(XXXX)<maxY           if(maxf(XXXX)-maxY>-h)             maxY=maxf(XXXX);            maxX=XXXX;            figurex(numel(figurex)+1)=maxX;            figurey(numel(figurey)+1)=maxY;            kkk=1;            break           else            maxY=maxf(XXXX);            maxX=XXXX;            figurex(numel(figurex)+1)=maxX;            figurey(numel(figurey)+1)=maxY;           end       endend    k=k+1; %进入下一次迭代    if(kkk)        break    endend   maxXmaxYplot(figurex,figurey)                    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -