精华内容
下载资源
问答
  • 遗传算法TSP

    2012-12-16 22:34:01
    遗传算法解决旅行商问题,5分钟之内 遗传算法 TSP 准确率
  • 遗传算法tsp

    2018-12-29 11:53:36
    10个城市的路径优化单纯的使用了遗传算法,其中使用了交叉和变异,没有进行更深的优化。
  • 遗传算法 TSP

    2018-10-16 14:45:21
    解压直接运行即可 有画图功能 主程序. 主程序中有一rand('seed',n) n 为某一整 数, 这是设置随机数发生器的种子,这样实际上规定 了随机数发生的方式,因此后面的随机数其实都是定 下来的,这样所有人就可以看到...
  • 遗传算法 tsp java

    2011-05-24 11:06:11
    遗传算法 tsp java遗传算法 tsp java遗传算法 tsp java遗传算法 tsp java
  • 遗传算法tsp案例

    2019-04-26 18:26:07
    遗传算法解决tsp(旅行商问题)的python实现代码,有图形和控制台输出
  • 遗传算法 TSP 实现

    2018-10-31 12:00:46
    遗传算法(GeneticAlgorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,通过模拟自然进化过程搜索最优解。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,初代...
  • 反距离权重法的退火遗传算法TSP类问题的求解,冯东海,王志勇,针对巡回旅行商问题(TSP)的一般遗传算法搜索速度慢、解质量不佳的问题,提出了一种基于反距离权重法的模拟退火遗传算法。首先基
  • Matlab遗传算法TSP求解

    2020-07-10 19:53:22
    遗传算法求解TSP问题遗传算法简介TSP问题遗传算法内容生成初始种群计算个体适应度轮盘赌选择交叉操作变异操作图像输出完整代码运行结果总结 遗传算法简介 遗传算法包括初始种群生成,适应度的计算,种群选择,交叉和...

    遗传算法简介

    遗传算法包括初始种群生成,适应度的计算,种群选择,交叉和变异这几项内容

    TSP问题

    TSP问题是旅行商经过一系列城市使得旅行商经过的总路程最短的问题

    遗传算法内容

    生成初始种群

    // An highlighted block
    for i=1:NP
        f(i,:)=randperm(N);   %初始种群
    end
    

    计算个体适应度

    // An highlighted block
        for i=1:NP
            len(i,1)=D(f(i,N),f(i,1));
            for j=1:N-1
                len(i,1)=len(i,1)+D(f(i,j),f(i,j+1));
            end
        end
        maxlen=max(len);
        minlen=min(len
        %计算归一化适应值
        for i=1:NP
            fitness(i,1)=(1-(len(i,1)-minlen)/(maxlen-minlen+0.001));
        end
    

    轮盘赌选择

    // An highlighted block
        sumFit=sum(fitness);
        fitvalue=fitness./sumFit;
        fitvalue=cumsum(fitvalue);
        ms=sort(rand(NP,1));
        fiti=1;
        newi=1;
        while newi <= NP
           if (ms(newi)) < fitvalue(fiti)
               nf(newi,:)=f(fiti,:);  %种群重新生成
               newi=newi+1;
           else
               fiti=fiti+1;
           end 
        end
    

    交叉操作

    交叉操作是单点交叉的方式,例如12345678和87654321,假如第一个点交叉则变成8234571和17654328

    // An highlighted block
        for i=1:2:NP
            for j=1:N
                if rand<pc
                    %同一种群变化
                    A=find(nf(i,:)==nf(i+1,j));
                    nf(i,A)=nf(i,j);
                    B=find(nf(i+1,:)==nf(i,j));
                    nf(i+1,B)=nf(i+1,j);
                    %交换位置
                    temp1=nf(i+1,j);
                    nf(i+1,j)=nf(i,j);
                    nf(i,j)=temp1;
                end
            end
        end
    

    变异操作

    变异是采用单点变异的方式,比如12345678第5个位置变异,则在随机生成一个值比如1赋给第5个位置,则生成的个体是52341678

    // An highlighted block
        for i=1:NP
            for j=1:N
                if rand<pm
                    temp2=nf(i,j);
                    temp3=randi([1,N],1,1);
                    A=find(nf(i,:)==temp3);
                    nf(i,j)=temp3;
                    nf(i,A)=temp2; 
                end
            end
        end
    

    图像输出

    figure
    for i=1:N-1
        plot([C(R(i),1),C(R(i+1),1)],[C(R(i),2),C(R(i+1),2)],'bo-')
        hold on;
    end
    plot([C(R(N),1),C(R(1),1)],[C(R(N),2),C(R(1),2)],'ro-')
    title(['优化最短距离:',num2str(minlen)])
    

    完整代码

    close all 
    clear all
    clc
    
    %读入初始数据
    FP1=fopen('shuju.txt','rt');
    N=fscanf(FP1,'%d',1);  %初始个体数
    C=fscanf(FP1,'%f',[2,N]);   %个体坐标
    C=C';
    D=zeros(N);   %两两距离
    for i=1:N
        for j=1:N
            D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;%求任意两个城市的间距
        end
    end
    NP=200;   %种群规模
    G=500;   %迭代次数
    f=zeros(NP,N);   %种群
    nf=zeros(NP,N);   %子种群
    pc=0.4; %交叉概率
    pm=0.2; %变异概率
    F=[];
    for i=1:NP
        f(i,:)=randperm(N);   %初始种群
    end
    R=f(1,:);   %最优种群
    len=zeros(NP,1);   %存储路径长度
    fitness=zeros(NP,1);   %存储归一化值
    gen=0;
    
    %计算各种群的适应度值,即种群的长度
    while gen<G
        for i=1:NP
            len(i,1)=D(f(i,N),f(i,1));
            for j=1:N-1
                len(i,1)=len(i,1)+D(f(i,j),f(i,j+1));
            end
        end
        maxlen=max(len);
        minlen=min(len);
        rr=find(len==minlen);   %找到最小值种群所在的位置
        R=f(rr(1,1),:);   %最小值种群的基因
        
        %计算归一化适应值
        for i=1:NP
            fitness(i,1)=(1-(len(i,1)-minlen)/(maxlen-minlen+0.001));
        end
        
        %基于轮盘赌的复制操作
        sumFit=sum(fitness);
        fitvalue=fitness./sumFit;
        fitvalue=cumsum(fitvalue);
        ms=sort(rand(NP,1));
        fiti=1;
        newi=1;
        while newi <= NP
           if (ms(newi)) < fitvalue(fiti)
               nf(newi,:)=f(fiti,:);  %种群重新生成
               newi=newi+1;
           else
               fiti=fiti+1;
           end 
        end
        
        %交叉操作
        for i=1:2:NP
            for j=1:N
                if rand<pc
                    %同一种群变化
                    A=find(nf(i,:)==nf(i+1,j));
                    nf(i,A)=nf(i,j);
                    B=find(nf(i+1,:)==nf(i,j));
                    nf(i+1,B)=nf(i+1,j);
                    %交换位置
                    temp1=nf(i+1,j);
                    nf(i+1,j)=nf(i,j);
                    nf(i,j)=temp1;
                end
            end
        end
        %变异操作
        for i=1:NP
            for j=1:N
                if rand<pm
                    temp2=nf(i,j);
                    temp3=randi([1,N],1,1);
                    A=find(nf(i,:)==temp3);
                    nf(i,j)=temp3;
                    nf(i,A)=temp2; 
                end
            end
        end
       f=nf;
       f(1,:)=R;
       clear F
       gen=gen+1;
       Rlength(gen)=minlen;
    end
    figure
    for i=1:N-1
        plot([C(R(i),1),C(R(i+1),1)],[C(R(i),2),C(R(i+1),2)],'bo-')
        hold on;
    end
    plot([C(R(N),1),C(R(1),1)],[C(R(N),2),C(R(1),2)],'ro-')
    title(['优化最短距离:',num2str(minlen)])
    figure
    plot(Rlength)
    xlabel('迭代次数')
    ylabel('目标函数')
    title('适应度进化曲线')
    disp('最短路径路程是:')
    disp(R)
    
    

    运行结果

    在这里插入图片描述
    在这里插入图片描述

    总结

    利用遗传算法可以解决TSP问题,结果较准确,但是迭代收敛的慢,易陷入局部最优

    展开全文
  • 遗传算法tsp.txt

    2019-06-13 22:05:10
    这是遗传算法的详细代码,需要的可以带走啊。
  • 毕业设计翻译-遗传算法TSP 自动化专业 或者毕业设计与算法相关的可以用这个翻译
  • 蚁群算法和遗传算法解决TSP问题。我自己加了注释,很详细的。对于初步学习很有帮助 再一次强调,遗传算法和蚁群算法。很给力的。 我自己就是通过这几个程序一点一点学会的。
  • TSP 旅行推销员问题(Travelling salesman problem, TSP),matlab代码实现 会陆续更新其他算法 目前有模拟退火 蚁群 遗传三个算法 其中main(SA) ...而GA和其他函数为遗传算法 all_tsp为测试数据文件
  • 遗传算法tsp java

    2012-05-29 18:50:35
    遗传算法
  • GA-TSP遗传算法TSP

    2010-09-15 20:57:56
    遗传算法求解TSP问题,程序编写完整,可以进一步开发许多相关类似问题的程序
  • 遗传算法TSP问题

    2013-11-16 11:55:28
    遗传算法解决了从一个城市出发,经过其他九个城市,最后再回到起点的最短距离的方案问题,即为解决十个城市之间的最短距离问题。
  • NULL 博文链接:https://tristan-s.iteye.com/blog/1122493
  • 遗传算法 TSP问题

    2011-05-20 10:05:23
    这是高校智能优化课程的书本例题实验的实验程序代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,822
精华内容 728
关键字:

遗传算法tsp