您现在的位置:首页 >> 技术文章 >> MATLAB技术 >> 内容

MATLAB代做|FPGA代做|python代做-最优路径

时间:2019-9-17 18:51:39 点击:

  核心提示:MATLAB代做|FPGA代做|python代做-'最优路径...
clear;
tic        %开始记时
FishNum=10;%生成10只人工鱼
Max_gen=50;%最多迭代次数
trynumber=100;%最多试探次数
Visual=6;%感知距离
deta=0.8;% 拥挤度因子
CityPosition=[16.47,96.10;%从上到下,依次是14个城市的坐标,每一行一个城市。
              16.47,94.44;
              20.09,92.54;
              22.39,93.37;
              25.23,97.24; 
              22.00,96.05;
              20.47,97.02;
              17.20,96.29;
              16.30,97.38;
              14.05,98.12;
              16.53,97.38;
              21.52,95.59;
              19.41,97.13;
              20.09,92.55];
 CityNum=length(CityPosition);%城市个数
 DNAN=100;                   %同一个城市之间的距离定义为无穷大
 for i=1:CityNum              %算出每条边的长度
     edge(i,i)=DNAN;
     for j=i+1:CityNum
         edge(i,j)=sqrt(sum((CityPosition(i,:)-CityPosition(j,:)).^2));
         edge(j,i)=edge(i,j);
     end
 end
 for i=1:FishNum             %对所有人工鱼进行初始化
     X(i,:)=Inital(CityNum);
 end
 Best=1000;
 for NC=1:Max_gen
     Besty(NC)=1000;
     for i=1:FishNum
         [Xi,flag1]=follow(X,FishNum,Visual,deta,i,edge);%首先偿试追尾
         if(flag1==0) %追尾失败
             Visual2=floor(Visual*(1-NC/Max_gen));
             [Xi,flag2]=prey(X,CityNum,i,Visual,trynumber,edge);%再偿试觅食
             if(flag2==0) %觅食失败
                   [Xi,flag3]=swarm(X,FishNum,CityNum,Visual,deta,i,edge);%再偿试聚群
                   if(flag3==0)%聚群失败
                        Xi=X(i,:);%无奈,静止不动,这是对算法的一个改进
                   end
               end
           end
           X(i,:)=Xi;
           Yi=evaluate(Xi,edge);
           if(Yi<Besty(NC))
               Besty(NC)=Yi;%每次最优解
           end
           if(Yi<Best)
               Best=Yi;     %全局最优解
               Bestpath=Xi;
           end
                          
       end
          disp(['第',num2str(NC),'次迭代,得出的最优值:',num2str(Besty(NC))]);
   end
   t_train=toc;%结束记时
   s=num2str(Bestpath(1));
   for i=2:CityNum
       s=strcat(s,'->');
       s=strcat(s,num2str(Bestpath(i)));
   end
   s=strcat(s,'->');
   s=strcat(s,num2str(Bestpath(1)));
   disp(['得出的最优路径:',s,',最优值:',num2str(Best)]);
   plot(Besty);
   title(['本次运行得到的最优值为',num2str(Best),',共耗时:',num2str(t_train),'秒']);%x,
   text(floor(Max_gen/2),44,'最优值随迭代次数变化曲线');
   xlabel('迭代次数');
   ylabel('最优值');
   XC=[1,10,9,11,8,13,7,12,6,5,4,3,14,2];%你给的最优解 
   y=evaluate(XC,edge);
   disp(['你给的最优解:',num2str(XC),'   1,最优值:',num2str(y)]);
   disp('最优路径可能不只一条,我给的解可能和你的解刚好逆转,很显然也是对的。不知道你的30.8785是怎么来的(C++么?)');

联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:

作者:最优路径 来源:最优路径
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做(www.hslogic.com) © 2019 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment