particle_swarm_optimization.rar

  • 只是一个意外
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 4
    下载次数
  • 2019-06-17 10:31
    上传日期
运用粒子群算法求解tsp问题,源代码中有详细的中文注释,可供相关学者提供参考
particle_swarm_optimization.rar
  • particle_swarm_optimization.m
    2.2KB
内容介绍
function PSOforTSP %初始化 Alpha=0.25; %个体经验保留概率 Beta=0.25; %全局经验保留概率 NC_max=200; %最大迭代次数 m=80; %微粒数 CityNum=10; %问题的规模(城市个数) [dislist,Clist]=tsp(CityNum); NC=1;%迭代计数器 R_best=zeros(NC_max,CityNum); %各代最佳路线 L_best=inf.*ones(NC_max,1);%各代最佳路线的长度 L_ave=zeros(NC_max,1);%各代路线的平均长度 %产生微粒的初始位置 for i=1:m x(i,:)=randperm(CityNum); L(i)=CalDist(dislist,x(i,:)); end p=x; %p为个体最好解 pL=L; [L_best(1,1) n_best]=min(L); R_best(1,:)=x(n_best,:); L_ave(1,1)=mean(L); %初始交换序 v=ones(CityNum-1,2,m)*(round(rand*(CityNum-1))+1); figure(1); while NC<=NC_max %停止条件之一:达到最大迭代次数 for i=1:m xnew(i,:)=changeFun(x(i,:),v(:,:,i)); A=changeNum(x(i,:),p(i,:)); Arand=randFun(A,Alpha); xnew(i,:)=changeFun(xnew(i,:),Arand); B=changeNum(x(i,:),R_best(NC,:)); Brand=randFun(B,Beta); xnew(i,:)=changeFun(xnew(i,:),Brand); v(:,:,i)=changeNum(x(i,:),xnew(i,:)); L(i)=CalDist(dislist,xnew(i,:)); if L(i)<pL(i) p(i,:)=xnew(i,:); pL(i)=L(i); end end [L_bestnew n_best]=min(L); R_bestnew=xnew(n_best,:); L_ave(NC+1,1)=mean(L); if L_bestnew<L_best(NC,1) L_best(NC+1,1)=L_bestnew; R_best(NC+1,:)=R_bestnew; else L_best(NC+1,1)=L_best(NC,1); R_best(NC+1,:)=R_best(NC,:); end x=xnew; drawTSP10(Clist,R_best(NC,:),L_best(NC,1),NC,0); %pause; NC=NC+1; end %输出结果 Pos=find(L_best==min(L_best)); Shortest_Route=R_best(Pos(1),:); Shortest_Length=L_best(Pos(1)); figure(2); plot([L_best L_ave]); legend('最短距离','平均距离'); end function xnew=changeFun(x,C); changeLen=size(C,1); xnew=x; for i=1:changeLen a=xnew(C(i,1)); xnew(C(i,1))=xnew(C(i,2)); xnew(C(i,2))=a; end end function C=changeNum(x,y); CityNum=size(x,2); C=ones(CityNum-1,2); for i=1:CityNum-1 pos=find(x==y(i)); C(i,:)=[i pos]; x=changeFun(x,C(i,:)); end end function v=randFun(v,w); randLen=size(v,1); for i=1:randLen if rand>w v(i,2)=v(i,1); end end end
评论
    相关推荐
    • 粒子群算法.rar
      粒子群优化算法解决函数最值问题和TSP问题
    • 混合粒子群算法求解TSP问题matlab代码.rar
      遗传算法中的交叉和变异思想恰好能应用到此处,比如说个体粒子先和个体最优交叉产生一个新的粒子,当然这里如果新产生的粒子没有原来粒子好,我们就舍弃这个新的粒子;与个体最优交叉完后,新的粒子还需与群体最优...
    • 粒子群.rar
      MATLAB 粒子群算法解决经典31城市TSP问题
    • 粒子群解决TSP
      采用粒子交换序的方法改进了基本粒子群算法并用以解决TSP问题
    • tsp 粒子群算法 修正
      tsp 粒子群算法 修正
    • 粒子群算法解决TSP问题、求函数极值
      利用粒子群算法解决求函数极值和TSP问题
    • vc.net TSP粒子群算法修正版(VS2008)
      内容索引:VC/C++源码,算法相关,粒子,算法 tsp 粒子群算法修正源码, 参考:大连理工大学 谷超 2009年硕士学位论文 “改进的ACO和PSO算法在TSP中的应用”  *郭文忠1,陈国龙1,洪玉玲2 .求解TSP问题的动态邻域粒子...
    • 粒子群解决TSP问题
      用java编写的粒子群解决TSP问题的程序,希望对大家有用
    • 粒子群算法求解TSp问题
      粒子群算法求解旅行商问题,实现离散与连续的转化,充分发挥粒子群算法优势!!!!!!!!!!!!!!!!!!
    • 粒子群算法求解TSP问题
      本程序基于粒子群算法,采用遗传算法进行优化,并用C#j进行·编码,对旅行商问题进行了求解。