TSP.zip

  • yurunfeng
    了解作者
  • matlab
    开发工具
  • 7KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2021-03-04 15:20
    上传日期
matlab求解TSP(旅行商问题)代码
TSP.zip
  • TSP
  • cacul.m
    521B
  • Ksave.m
    555B
  • neihood.m
    1.5KB
  • GAsolver.m
    4.2KB
  • rand_generate.m
    931B
  • fit_all.m
    214B
  • crossd.m
    1.1KB
  • selection.m
    1KB
  • preset.m
    98B
  • datain.m
    1.3KB
  • mainfunction.m
    1.7KB
内容介绍
function [results,paintd]=GAsolver(para,Encode,fsolver,data) %% 算法程序 % data 案例数据 para 算法参数 Encode 编码方式 fsolver目标函数 %% 预设一些变量内存 fnow=zeros(1,para.popsize);%每一代的种群 fmean=zeros(1,para.Generationnmax);%种群平均值内存 fbest=zeros(1,para.Generationnmax);%预设种群最佳值内存 fbestsofar=-inf;%至此代最佳目标值 solbestsofar=[];%至此代最佳解 %% 生成初始方案 population=rand_generate(para.popsize,Encode);% 随机产生方案 [fit,fitbest,~,~,index]=cacul(para.popsize,population,data,fsolver,Encode);% 计算目标值 fnow=fit; if fbestsofar<fitbest % 至此代最佳目标值 fbestsofar=fitbest; solbestsofar=population(index,:); end %% 开始迭代 tic Generation=0; %预设迭代 次数 while Generation<para.Generationnmax+1 && toc<=para.timelimit % 当时间及迭代次数满足要求时 Generation=Generation+1; %迭代次数加 1 %% Selection 形成新的种群 [fnow,population]=selection(fnow,population,para.sel,para.popsize,para.popsize); %% crossover 形成新的种群 [fnow,population]=crossover_GA(fnow,population,para,data,Encode,fsolver);%crossover [gbest,num]=max(fnow);%计算最佳此代目标值 if fbestsofar<gbest fbestsofar=gbest; solbestsofar=population(num,:); end %% mutation 形成新的种群 [fnow,population]=mution_GA(fnow,population,para,data,Encode,fsolver);%mutation [gbest,num]=max(fnow);%计算最佳此代目标值 if fbestsofar<gbest fbestsofar=gbest; solbestsofar=population(num,:); end fbest(Generation)=fbestsofar;%stock the best resulut current fmean(Generation)=mean(fnow); %计算平均此代目标值 Generation end fbest=fbest(1:Generation); fmean=fmean(1:Generation); [~,results]=fsolver.fitness(solbestsofar,data,Encode); paintd.f_best=fbest.*fsolver.minmax; paintd.f_mean=fmean.*fsolver.minmax; paintd.f_fitness=fbest; end function [fnownew,popnew]=crossover_GA(fnownew,popnew,para,data,Encode,fsolver)%交叉 for i=1:2:para.popsize % 每两个个体进行操作 seln=popnew(i:i+1,:);%依次选取两个个体 if rand<=para.pcrossover % 如果满足交叉概率 %进入交叉 % 确定交叉层级 bufn=randperm(Encode.degree,1); bufn=randperm(Encode.degree,bufn); for j=bufn % 对选中的编码层进行判断 selncut=seln(:,sum(Encode.dnum(1:j-1))+1:sum(Encode.dnum(1:j)));% 选取对应个体里的对应编码层 % 选择了哪一种交叉方式 if Encode.dnum(j)==1%如果只有一个基因 只能采取选取一点 style2=1; else [~,style2]=selection(para.pcr(:,2)',para.pcr(:,1),1,size(para.pcr,1),1); end% selncut=crossd(selncut,Encode.dnum(j),Encode.style(j),style2); seln(:,sum(Encode.dnum(1:j-1))+1:sum(Encode.dnum(1:j)))=selncut; end popnew(i:i+1,:)=seln; [fnownew(i:i+1),~]=cacul(2,popnew(i:i+1,:),data,fsolver,Encode); end end end function [fnownew,popnew]=mution_GA(fnownew,popnew,para,data,Encode,fsolver)%mutation for i=1:para.popsize % 每两个个体进行操作 seln=popnew(i,:);%依次选取两个个体 if rand<=para.pmutation % 如果满足变异概率 %进入变异 % 确定变异层级 bufn=randperm(Encode.degree,1); bufn=randperm(Encode.degree,bufn); for j=bufn % 对选中的编码层进行判断 selncut=seln(sum(Encode.dnum(1:j-1))+1:sum(Encode.dnum(1:j)));% 选取对应个体里的对应编码层 if Encode.style(j)==0 || Encode.style(j)==1 % 若是整数或者实数 [~,style2]=selection(para.pmtnum(:,2)',para.pmtnum(:,1),1,size(para.pmtnum,1),1);% 确定邻域结构 [~,range]=selection(para.step(:,2)',para.step(:,1),1,size(para.step,1),1);%确定步长 selncut=neihood(selncut,Encode.dnum(j),Encode.style(j),style2,Encode.bounds{j},range);%变化 else% 若是顺序 [~,style2]=selection(para.pmtseq(:,2)',para.pmtseq(:,1),1,size(para.pmtseq,1),1);% 确定邻域结构 selncut=neihood(selncut,Encode.dnum(j),Encode.style(j),style2,[],[]);%变化 end seln(sum(Encode.dnum(1:j-1))+1:sum(Encode.dnum(1:j)))=selncut; end popnew(i,:)=seln; [fnownew(i),~]=cacul(1,popnew(i,:),data,fsolver,Encode);% 将目标值转化成 适应度值 end end end
评论
    相关推荐
    • TSPGA.rar
      matlab实现GA算法计算TSP问题,以ATT48算集为例。
    • tspga.rar
      GA TSP to neuron network
    • TSP GA.rar
      用遗传算法解决TSP问题,包含一个小型城市的例子
    • TspGA源码.rar
      TSP(旅行商问题)遗传算法实现源代码。
    • tspga.rar
      遗传算法求解tsp问题,可处理tsp95lib中的任意文件。
    • TSPGA.rar
      C语言解决车辆路径问题,包括选择,交叉,变异等操作。。
    • TSPGA.zip
      遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法,有很强的解决问题的能力和广泛的适应性。
    • TspGA.rar
      针对tsp问题的ga算法,即用遗传算法来解决tsp问题
    • TspGA:Java中旅行商问题的遗传算法
      TspGA Java中旅行商问题的遗传算法 这是在 Java 中使用变异和自然选择解决旅行商问题的一种方法。 该程序可以采用这样的随机路径: 通过进化把它变成这样:
    • TSP GA.zip
      遗传算法求解旅行商问题(TSP)代码说明