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

📄 swarm.m

📁 人工鱼群算法解决旅行商问题,这是在当前互联网上唯一的一个,这个是我自己编的,保证通过
💻 M
字号:
function [Xi,flag]=swarm(X,FishNum,CityNum,Visual,deta,i,edge)%本程序是第i条人工鱼试图进行聚群行为,假如聚群成功,则flag 为1,X中为i鱼聚群后的状态,否则flag为0
Index=near(X,FishNum,i,Visual);%第i条人工鱼的邻居下标
nf=length(Index);
Xi=[];%默认它聚群失败
flag=0;
if(nf==0)%它视野里看不到伙伴
    return;
end
if(nf/FishNum<deta)
    neigbor=X(Index,:);
    XC=[];
    for j=1:CityNum
        tJ=neigbor(:,j);%本段程序找出出现最多的城市,从而确定邻域中心
         while(length(tJ)>0)
             fre=[];
             for k=1:length(tJ)
                 fre(k)=sum(tJ==tJ(k));
             end
             [p q]=max(fre);
             if(j==1)
                 break;
               elseif(sum(XC==tJ(q))==0)
                 break;
              end
             tJ(find(tJ==tJ(q)))=[];%本段程序并非多此一举,为的是防止重复走同一个城市
          end
          if(length(tJ)==0)
              while(1)
                  b=floor(rand*(CityNum+1));
                  if(b>0&b<=CityNum&sum(XC==b)==0)
                      XC(j)=b;
                      break;
                  end
              end
          else
          XC(j)=tJ(q);
         end
     end
     if(evaluate(X(i,:),edge)>evaluate(XC,edge));%聚群成功
         flag=1;
        Xi=XC;
    end
 end
        
    

⌨️ 快捷键说明

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