精华内容
下载资源
问答
  • MATLAB源码集锦-蚁群算法求解TSP问题matlab代码
  • TSP问题matlab代码.rar

    2020-03-18 13:57:00
    TSP问题matlab代码,TSP问题为组合优化问题,又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且...
  • 遗传算法解TSP问题MATLAB代码;30城市的Benchmark问题
  • sa求解tsp问题MATLAB代码,可运行
  • 蚁群算法求TSP问题matlab代码 %%% 蚁群算法求解TSP问题 clc; clear all; %%%各目标点的位置坐标, %%%一时找不到数据,就自动生成了五十个坐标点(xi,yi),i=1,2...,50; x=randi([0,200],50,1); y=randi([0,200],50,1)...

    蚁群算法求TSP问题matlab代码

    %%% 蚁群算法求解TSP问题
    clc;
    clear all;
    %%%各目标点的位置坐标, %%%一时找不到数据,就自动生成了五十个坐标点(xi,yi),i=1,2...,50;
    x=randi([0,200],50,1);
    y=randi([0,200],50,1);    
    city=[x,y];
    city0=[0,0];             %%%出发点选取(00);
    citys=[city0;city];           %%%将出发点加在50个点的开始(无所谓加哪都行);
    %%% 计算城市间相互距离
    n = size(citys,1);
    D = zeros(n,n);
    for i = 1:n
        for j = 1:n
            if i ~= j
                D(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2));
            else
                D(i,j) = 1e-4;      
            end
        end    
    end
     
    %%% 初始化参数
    m = 10;                              % 蚂蚁数量
    alpha = 1;                           % 信息素重要程度因子
    beta = 5;                            % 启发函数重要程度因子
    rho = 0.1;                           % 信息素挥发因子
    Q = 1;                               % 常系数
    Eta = 1./D;                          % 启发函数
    Tau = ones(n,n);                     % 信息素矩阵
    Table = zeros(m,n);                  % 路径记录表
    iter = 1;                            % 迭代次数初值
    iter_max = 1000;                      % 最大迭代次数 
    Route_best = zeros(iter_max,n);      % 各代最佳路径       
    Length_best = zeros(iter_max,1);     % 各代最佳路径的长度  
    Length_ave = zeros(iter_max,1);      % 各代路径的平均长度  
     
    %%%迭代寻找最佳路径
    while iter <= iter_max
        % 随机产生各个蚂蚁的起点城市
          start = zeros(m,1);
          for i = 1:m
              temp = randperm(n);
              start(i) = temp(1);
          end
          Table(:,1) = start; 
          % 构建解空间
          citys_index = 1:n;
          % 逐个蚂蚁路径选择
           for i = 1:m
              % 逐个城市路径选择
             for j = 2:n
                 tabu = Table(i,1:(j - 1));           % 已访问的城市集合(禁忌表)
                 allow_index = ~ismember(citys_index,tabu);
                 allow = citys_index(allow_index);  % 待访问的城市集合
                 P = allow;
                 % 计算城市间转移概率
                 for k = 1:length(allow)
                     P(k) = Tau(tabu(end),allow(k))^alpha * Eta(tabu(end),allow(k))^beta;
                 end
                 P = P/sum(P);
                 % 轮盘赌法选择下一个访问城市
                 Pc = cumsum(P);     
                target_index = find(Pc >= rand); 
                target = allow(target_index(1));
                Table(i,j) = target;
             end
          end
          % 计算各个蚂蚁的路径距离
          Length = zeros(m,1);
          for i = 1:m
              Route = Table(i,:);
              for j = 1:(n - 1)
                  Length(i) = Length(i) + D(Route(j),Route(j + 1));
              end
              Length(i) = Length(i) + D(Route(n),Route(1));
          end
          % 计算最短路径距离及平均距离
          if iter == 1
              [min_Length,min_index] = min(Length);
              Length_best(iter) = min_Length;  
              Length_ave(iter) = mean(Length);
              Route_best(iter,:) = Table(min_index,:);
          else
              [min_Length,min_index] = min(Length);
              Length_best(iter) = min(Length_best(iter - 1),min_Length);
              Length_ave(iter) = mean(Length);
              if Length_best(iter) == min_Length
                  Route_best(iter,:) = Table(min_index,:);
              else
                  Route_best(iter,:) = Route_best((iter-1),:);
              end
          end
          % 更新信息素
          Delta_Tau = zeros(n,n);
          % 逐个蚂蚁计算
          for i = 1:m
              % 逐个城市计算
              for j = 1:(n - 1)
                  Delta_Tau(Table(i,j),Table(i,j+1)) = Delta_Tau(Table(i,j),Table(i,j+1)) + Q/Length(i);
              end
              Delta_Tau(Table(i,n),Table(i,1)) = Delta_Tau(Table(i,n),Table(i,1)) + Q/Length(i);
          end
          Tau = (1-rho) * Tau + Delta_Tau;
        % 迭代次数加1,清空路径记录表
        iter = iter + 1;
        Table = zeros(m,n);
    end
     
     
    %%% 结果显示
    [Shortest_Length,index] = min(Length_best);
    Shortest_Route = Route_best(index,:);
    disp(['最短距离:' num2str(Shortest_Length)]);
    disp(['最短路径:' num2str([Shortest_Route Shortest_Route(1)])]);
     
    %%% 绘图
    figure(1)
    plot([citys(Shortest_Route,1);citys(Shortest_Route(1),1)],...
         [citys(Shortest_Route,2);citys(Shortest_Route(1),2)],'o-');
    grid on
    for i = 1:size(citys,1)
        text(citys(i,1),citys(i,2),['   ' num2str(i)]);
    end
    text(citys(Shortest_Route(1),1),citys(Shortest_Route(1),2),'       起点');
    text(citys(Shortest_Route(end),1),citys(Shortest_Route(end),2),'       终点');
    xlabel('城市位置横坐标')
    ylabel('城市位置纵坐标')
    title(['蚁群算法优化路径(最短距离:' num2str(Shortest_Length) ')'])
    figure(2)
    plot(1:iter_max,Length_best,'b',1:iter_max,Length_ave,'r:')
    legend('最短距离','平均距离')
    xlabel('迭代次数')
    ylabel('距离')
    title('各代最短距离与平均距离对比')
    
    
    
    
    展开全文
  • GA求解旅行商问题matlab代码,分别有同一终点、不同终点、返回起点、不返回起点的情况,有意愿者可采纳
  • 遗传算法求解TSP(旅行商)问题 MATLAB代码
  • 听说GA解决TSP问题的时候,很多情况下不会一下子运行出来最优的结果。我这有一段程序,不知都为什么,每一次都能运行出最优的结果,从不出错,到底哪一部分出了问题呢?求大神们指导。
  • 模拟退火算法解决TSP问题MATLAB代码

    热门讨论 2010-06-16 17:03:01
    这段代码使用了模拟退火的思想解决TSP问题。在这个仿真实验中解决了自定义的20个城市的TSP问题,在设定合适参数后每次的运行中都能得到一个比较理想的结果。 Main.m文件是程序入口。 Data_file.m文件设置自定义的...
  • 分别把前四个函数存成m文件,再运行最后一个。 swap.m function [ newpath , position ] = swap( oldpath , number ) % 对 oldpath 进 行 互 换 操 作 ...% number 为 产 生 的 新 路 径 的 个 数 ...

    分别把前四个函数存成m文件,再运行最后一个。

    swap.m
    function [ newpath , position ] = swap( oldpath , number )
    % 对 oldpath 进 行 互 换 操 作
    % number 为 产 生 的 新 路 径 的 个 数
    % position 为 对 应 newpath 互 换 的 位 置
    m = length( oldpath ) ; % 城 市 的 个 数
    newpath = zeros( number , m ) ;
    position = sort( randi( m , number , 2 ) , 2 ); % 随 机 产 生 交 换 的 位 置
    for i = 1 : number
    newpath( i , : ) = oldpath ;
    % 交 换 路 径 中 选 中 的 城 市
    newpath( i , position( i , 1 ) ) = oldpath( position( i , 2 ) ) ;
    newpath( i , position( i , 2 ) ) = oldpath( position( i , 1 ) ) ;
    end
    
    
    pathfare.m
    function [ objval ] = pathfare( fare , path )
    % 计 算 路 径 path 的 代 价 objval
    % path 为 1 到 n 的 排 列 ,代 表 城 市 的 访 问 顺 序 ;
    % fare 为 代 价 矩 阵 , 且 为 方 阵 。
    [ m , n ] = size( path ) ;
    objval = zeros( 1 , m ) ;
    for i = 1 : m
    for j = 2 : n
    objval( i ) = objval( i ) + fare( path( i , j - 1 ) , path( i , j ) ) ;
    end
    objval( i ) = objval( i ) + fare( path( i , n ) , path( i , 1 ) ) ;
    end
    
    
    distance.m
    function [ fare ] = distance( coord )
    % 根 据 各 城 市 的 距 离 坐 标 求 相 互 之 间 的 距 离
    % fare 为 各 城 市 的 距 离 , coord 为 各 城 市 的 坐 标
    [ v , m ] = size( coord ) ; % m 为 城 市 的 个 数
    fare = zeros( m ) ;
    for i = 1 : m % 外 层 为 行
    for j = i : m % 内 层 为 列
    fare( i , j ) = ( sum( ( coord( : , i ) - coord( : , j ) ) .^ 2 ) ) ^ 0.5 ;
    fare( j , i ) = fare( i , j ) ; % 距 离 矩 阵 对 称
    end
    end
    
    
    myplot.m
    function [ ] = myplot( path , coord , pathfar )
    % 做 出 路 径 的 图 形
    % path 为 要 做 图 的 路 径 ,coord 为 各 个 城 市 的 坐 标
    % pathfar 为 路 径 path 对 应 的 费 用
    len = length( path ) ;
    clf ;
    hold on ;
    title( [ '近似最短路径如下,路程为' , num2str( pathfar ) ] ) ;
    plot( coord( 1 , : ) , coord( 2 , : ) , 'ok');
    pause( 0.4 ) ;
    for ii = 2 : len
    plot( coord( 1 , path( [ ii - 1 , ii ] ) ) , coord( 2 , path( [ ii - 1 , ii ] ) ) , '-b');
    x = sum( coord( 1 , path( [ ii - 1 , ii ] ) ) ) / 2 ;
    y = sum( coord( 2 , path( [ ii - 1 , ii ] ) ) ) / 2 ;
    text( x , y , [ '(' , num2str( ii - 1 ) , ')' ] ) ;
    pause( 0.4 ) ;
    end
    plot( coord( 1 , path( [ 1 , len ] ) ) , coord( 2 , path( [ 1 , len ] ) ) , '-b' ) ;
    x = sum( coord( 1 , path( [ 1 , len ] ) ) ) / 2 ;
    y = sum( coord( 2 , path( [ 1 , len ] ) ) ) / 2 ;
    text( x , y , [ '(' , num2str( len ) , ')' ] ) ;
    pause( 0.4 ) ;
    hold off ;
    
    
    clear;
    % 程 序 参 数 设 定
    Coord = ... % 城 市 的 坐 标 Coordinates
    [ 0.6683 0.6195 0.4    0.2439 0.1707 0.2293 0.5171 0.8732 0.6878 0.8488 ; ...
      0.2536 0.2634 0.4439 0.1463 0.2293 0.761  0.9414 0.6536 0.5219 0.3609 ] ;
    t0 = 1 ; % 初 温 t0
    iLk = 20 ; % 内 循 环 最 大 迭 代 次 数 iLk
    oLk = 50 ; % 外 循 环 最 大 迭 代 次 数 oLk
    lam = 0.95 ; % λ lambda
    istd = 0.001 ; % 若 内 循 环 函 数 值 方 差 小 于 istd 则 停 止
    ostd = 0.001 ; % 若 外 循 环 函 数 值 方 差 小 于 ostd 则 停 止
    ilen = 5 ; % 内 循 环 保 存 的 目 标 函 数 值 个 数
    olen = 5 ; % 外 循 环 保 存 的 目 标 函 数 值 个 数
    % 程 序 主 体
    m = length( Coord ) ; % 城 市 的 个 数 m
    fare = distance( Coord ) ; % 路 径 费 用 fare
    path = 1 : m ; % 初 始 路 径 path
    pathfar = pathfare( fare , path ) ; % 路 径 费 用 path fare
    ores = zeros( 1 , olen ) ; % 外 循 环 保 存 的 目 标 函 数 值
    e0 = pathfar ; % 能 量 初 值 e0
    t = t0 ; % 温 度 t
    for out = 1 : oLk % 外 循 环 模 拟 退 火 过 程
    ires = zeros( 1 , ilen ) ; % 内 循 环 保 存 的 目 标 函 数 值
    for in = 1 : iLk % 内 循 环 模 拟 热 平 衡 过 程
    [ newpath , v ] = swap( path , 1 ) ; % 产 生 新 状 态
    e1 = pathfare( fare , newpath ) ; % 新 状 态 能 量
    % Metropolis 抽 样 稳 定 准 则
    r = min( 1 , exp( - ( e1 - e0 ) / t ) ) ;
    if rand < r
    path = newpath ; % 更 新 最 佳 状 态
    e0 = e1 ;
    end
    ires = [ ires( 2 : end ) e0 ] ; % 保 存 新 状 态 能 量
    % 内 循 环 终 止 准 则 :连 续 ilen 个 状 态 能 量 波 动 小 于 istd
    if std( ires , 1 ) < istd
    break ;
    end
    end
    ores = [ ores( 2 : end ) e0 ] ; % 保 存 新 状 态 能 量
    % 外 循 环 终 止 准 则 :连 续 olen 个 状 态 能 量 波 动 小 于 ostd
    if std( ores , 1 ) < ostd
    break ;
    end
    t = lam * t ;
    end
    pathfar = e0 ;
    % 输 入 结 果
    fprintf( '近似最优路径为:\n ' )
    %disp( char( [ path , path(1) ] + 64 ) ) ;
    disp(path)
    fprintf( '近似最优路径路程\tpathfare=' ) ;
    disp( pathfar ) ;
    myplot( path , Coord , pathfar ) ;
    

      

    转载于:https://www.cnblogs.com/zxhyxiao/p/9409498.html

    展开全文
  • matlab实现TSP问题主要代码如下: clear; clc; %% 使用模拟退火思想解决旅行商问题 %基本思想,先随机产生一个解决方案(遍历路径),然后进行下一个方案的产生,保留优秀的,以一定的概率保留不好的 % f1,f2,df,r;...

    算法背景:

    使用模拟退火思想解决TSP问题

    整体思想:

    一开始先随机生成一个解,然后随着每次降温,进行解的更新(在每个温度下,可以设置搜索解的次数,也就是链长。),一定概率的接受效果差的解,最后当温度降到最低温度,即停止解的搜索。

    注意:对于新解的产生一定要有合适的方法(一开始的实现里面,每次都让随机产生新的解,效果不好,没能用到上一次解的信息。又改进了一点,采用交换两个随机位置的方式产生新解,效果好了些),否则效果不好。

    matlab实现TSP问题主要代码如下:

    clear;
    clc;
    %% 使用模拟退火思想解决旅行商问题
    %基本思想,先随机产生一个解决方案(遍历路径),然后进行下一个方案的产生,保留优秀的,以一定的概率保留不好的
    % f1,f2,df,r;%初始目标函数值f1,新解的目标函数值f2,df两者之差;r用于控制降温的快慢,0到1之间的一个随机数
    %城市坐标数据(本质上是n*2的一个数组)
    city_pos=[1304 2312;
    3639 1315;
    4177 2244;
    3712 1399;
    3488 1535;
    3326 1556;
    3238 1229;
    4196 1004;
    4312 790;
    4386 570;
    3007 1970;
    2562 1756;
    2788 1491;
    2381 1676;
    1332 695;
    3715 1678;
    3918 2179;
    4061 2370;
    3780 2212;
    3676 2578;
    4029 2838;
    4263 2931;
    3429 1908;
    3507 2367;
    3394 2643;
    3439 3201;
    2935 3240;
    3140 3550;
    2545 2357;
    2778 2826;
    2370 2975];
    T=50000;%系统的温度
    q=0.88;%退火系数
    T_min=1e-8;%先随便设置了一个值
    m=size(city_pos,1);
    path0=randperm(m);%产生一个随机的解
    path1 = path0;
    path=path0;
    % distance=[];  %用来记录总路程的变化情况
    t=0;
    while T>T_min
        %每个温度时迭代次数,即链长
        for i=1:1000
            f1 = SumDistance(city_pos,path1);
    %         path2=randperm(m);%产生一个新的解,暂时使用随机的方式(这样随机的方式,完全用不到上一次解的有效信息,结果不好)
            path2=newPath(path1);%根据先前的解,产生一个新解
            f2=SumDistance(city_pos,path2);
            def=f2-f1;      %目标函数值直接用路径长度代替了,越小越好
            path=path1;
            if def<0 
                path=path2;
                if exp(def/T) > rand(1)
                    path=path1; %保留原来的解(以一定的概率保留较差的解)
                end
            end
            path1=path; 
        end
        T=T*q;
        t=t+1;
        distance(t) = SumDistance(city_pos,path );%观察总路径变化情况
       
    end
    
    lie=distance';
    %% 绘制结果图
    x=city_pos(:,1);
    y=city_pos(:,2);
    figure(1)
    plot(x,y,'pentagram','MarkerSize',10);
    hold on; 
    plot(x,y,'--c','LineWidth',1);
    hold on; 
    plot([x(m),x(1)],[y(m),y(1)],'--c','LineWidth',1);
    title('路线图')
    xlabel('城市地理位置横坐标');
    ylabel('城市地理位置纵坐标');
    
    % %%绘制变化趋势图
    figure(2)
    plot(1:1:size(distance,2),distance);
    title('总路径变化趋势图')
    xlabel('次数');
    ylabel('总路径数');
    
    fprintf('最后获得的路径为(城市序列):');
    fprintf('%d;',path);
    fprintf('%d',path(1));%首尾相接
    fprintf('。\n');
    fprintf('最后路径长度为:%d\n',SumDistance( city_pos,path ))
    

    其他几个小方法GetDistance,newPath,SumDistance就不往上贴了,根据名字就能知道相应方法的用途,简单自己写一下就好。

    结果:

    展开全文
  • GA求解TSP问题MATLAB代码讲解https://www.zhihu.com/video/1245830251734888448​(各位小伙伴也可去bilibili同步观看,https://b23.tv/JMBGdY)Hello,大家好,今天更新一期使用GA求解TSP问题的MATLAB代码讲解。...
    9c57cef61cc91dd5bb0a2efc1e9b385c.png
    GA求解TSP问题MATLAB代码讲解https://www.zhihu.com/video/1245830251734888448

    ​(各位小伙伴也可去bilibili同步观看,https://b23.tv/JMBGdY

    Hello,大家好,今天更新一期使用GA求解TSP问题的MATLAB代码讲解。各位可点击左下角阅读原文,访问优化算法交流地官方闲鱼账号


    01 | 勘误

    首先更正一下上一期推文代码的一个错误,在BinaryTourment_Select这个函数的第15行原来写的是R=randperm(N),但实际应该是R=randperm(NIND)。

    %
    %      @作者:随心390
    %      @微信公众号:优化算法交流地
    %
    %% 二元锦标赛选择
    %输入Chrom:           种群
    %输入dist:            距离矩阵
    %输出Selch:           二元锦标赛选择出的个体
    function Selch=BinaryTourment_Select(Chrom,dist)
    Obj=ObjFunction(Chrom,dist);            %计算种群目标函数值,即每个个体的总距离
    FitnV=Fitness(Obj);                     %计算每个个体的适应度值,即总距离的倒数
    [NIND,N]=size(Chrom);                   %NIND-种群个数、N-种群长度
    Selch=zeros(NIND,N);                    %初始化二元锦标赛选择出的个体
    for i=1:NIND
        R=randperm(NIND);                   %生成一个1~NIND的随机排列
        index1=R(1);                        %第一个比较的个体序号
        index2=R(2);                        %第二个比较的个体序号
        fit1=FitnV(index1,:);               %第一个比较的个体的适应度值(适应度值越大,说明个体质量越高)
        fit2=FitnV(index2,:);               %第二个比较的个体的适应度值
        %如果个体1的适应度值 大于等于 个体2的适应度值,则将个体1作为第i选择出的个体
        if fit1>=fit2
            Selch(i,:)=Chrom(index1,:);
        else
            %如果个体1的适应度值 小于 个体2的适应度值,则将个体2作为第i选择出的个体
            Selch(i,:)=Chrom(index2,:);
        end
    end
    end

    今天主要讲一下二元锦标赛选择和轮盘赌操作具体的执行过程。


    02 | 二元锦标赛选择

    比如说有5个个体,每个个体的总距离分别如下(总距离越小越好):

    个体1:11

    个体2:12

    个体3:13

    个体4:14

    个体5:15

    初始选择出的个体为空,即Selch=[]。

    那么我们需要选择5次,每次随机选出2个个体

    第1次。假设选出个体1和个体3,很明显个体1总距离更小,所以个体1更好,因此第1次选择个体1,并将个体添加到Selch中,此时Selch=[个体1]。

    第2次。假设选出个体2和个体4,很明显个体2总距离更小,所以个体2更好,因此第2次选择个体2,并将个体添加到Selch中,此时Selch=[个体1; 个体2]。

    第3次。假设选出个体2和个体5,很明显个体2总距离更小,所以个体2更好,因此第3次选择个体2,并将个体添加到Selch中,此时Selch=[个体1; 个体2; 个体2]。

    第4次。假设选出个体2和个体1,很明显个体1总距离更小,所以个体1更好,因此第4次选择个体1,并将个体添加到Selch中,此时Selch=[个体1; 个体2; 个体2; 个体1]。

    第5次。假设选出个体4和个体5,很明显个体4总距离更小,所以个体4更好,因此第5次选择个体4,并将个体添加到Selch中,此时Selch=[个体1; 个体2; 个体2; 个体1; 个体4]。

    选择5次后的Selch=[个体1; 个体2; 个体2; 个体1; 个体4]。


    03 | 轮盘赌

    %
    %      @作者:随心390
    %      @微信公众号:优化算法交流地
    %
    %输入pSwap:选择交换结构的概率
    %输入pReversion:选择逆转结构的概率
    %输入pInsertion:选择插入结构的概率
    %输出index:最终选择哪一个邻域结构,即序号:1 2 3
    function index=Roulette(pSwap,pReversion,pInsertion)
    p=[pSwap pReversion pInsertion];
    r=rand;
    c=cumsum(p);
    index=find(r<=c,1,'first');
    end

    因为pSwap=0.2,pReversion=0.5 ,pInsertion=0.3。

    所以,p=[0.2 0.5 0.3],c=[0.2 0.7 1]。假设随机数r=0.6那么index就是从左向右找出0.6比c中元素小的第一个位置,此时index=2。


    04 | MATLAB代码链接

    微信关注:优化算法交流地,后台回复GATSP即可提取代码。

    更多资源,尽在优化算法交流地。

    往期精彩

    • 号内搜索
    • 遗传算法(GA)求解旅行商问题(TSP)附MATLAB代码
    • 车辆路径问题(VRP)合集
    • 遗传算法求解0-1背包问题(附matlab源代码)
    • 模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解
    • 多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)
    • 多目标优化 | NSGA-II进阶教程(全网首个三目标优化教程)
    • 机器学习 | 基于遗传算法的BP神经网络优化算法(附MATLAB代码)
    • 遗传算法求解车间调度问题(附MATLAB代码)
    • 多目标优化 | NSGA-II
    • word转换为pdf后图片失真的解决办法(全网首发)
    • 机器学习 | 简单实现Bp神经网络
    • 二维装箱问题之BL法修正版(附MATLAB代码)
    • 快速入门文献管理软件-EndNote X9
    • 最小二乘法(附MATLAB代码)
    • NSGA-II多目标优化算法讲解(附MATLAB代码)
    • 基于人工势场法的机器人二维路径规划(附MATLAB代码)
    • 基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)
    • 蚁群算法通俗讲解(附MATLAB代码)
    展开全文
  • 遗传算法 求解旅行商 TSP 问题matlab代码

    万次阅读 多人点赞 2016-11-02 01:24:11
    学习启发式算法时,旅行商问题是一个经典的例子。其中,遗传算法可以用来求解该问题。遗传算法是一种进化算法,由于其启发式算法的属性,并不能保证得到最优解。求解效果与初始种群选取,编码方法,选择方法,交叉...
  • 解决tsp问题matlab代码,基于蚁群算法,保障算法正确性和有效性。
  • 蚁群算法TSP问题matlab代码 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 function [R_best,L_best,L_ave,Shortest_...
  • 遗传算法求解TSP问题,例子是15个点的,单点变异方式,奇数和偶数交叉的方法,选择方法采用轮盘赌的方式
  • SA求TSP问题MATLAB代码讲解https://www.zhihu.com/video/1237400249913434112各位如果觉得视频不清晰,可以移步至B站,搜索 随心390,可观看此视频。我们在模拟退火(SA)算法求解旅行商(TSP)问题这篇推文讲解了SA...
  • 遗传算法matlab代码,对于初学者特别有用,经过编译没有什么bug
  • TSP问题是指假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值...(matlab代码
  • 本文用贪婪算法和最小路径算法解决TSP问题,包含源代码,并且已经调试过了,可以使用
  • MATLAB代码%mianYi_TSP.m %免疫算法解决TSP问题 %测试环境:MATLAB2018b clear; close; clc; %% 初始化 C=[1304 2312;3639 1315;4177 2244;3712 1399;3488 1535;3326 1556;3238 1229; 4196 1004;4312 790;4386 570...
  • 模拟退火算法解TSP问题MATLAB代码
  • TSP问题是指假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的...本文使用蚁群算法求解TSP问题matlab代码
  • 用hopfield网络解决TSP问题
  • 本资源包含TSP常见的所有测试数据和matlab、c++代码。旅行商问题(Traveling Salesman Problem,TSP)代表一类组合优化问题,在物流配送、计算机网络、电子地图、交通疏导、电气布线等方面都有重要的工程和理论价值,...
  • 遗传算法求解tsp问题matlab代码
  • 理论基础MATLAB代码function [minLuJing,minLen] = yiQun(C) %蚁群算法求解TSP问题 %输入城市间的横纵坐标C %输出蚁群算法得到的较优值minLen及其遍历路径minLuJing %测试环境:MATLAB2018b %% 参数定义 n = size(C...
  • function main() clear; clc; %城市坐标 a=importdata('data.txt',','); a=a/1000; x=a(:,1)';x(end+1)=a(1,1); y=a(:,2)';y(end+1)=a(1,2); n=0:50; x=cos(2*pi*n/50); y=sin(2*pi*n/50); %初始方式数目 ......
  • clear all; clc close all FileName=("C:\Users\Administrator\Desktop\TSPDataLib\oliver30.txt"); C=load(FileName); C(:,1)=[]; n=size(C,1); m=n; Alpha = 1; Beta = 5; Rho = 0.9; D=zeros(n,n);... if

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 279
精华内容 111
关键字:

tsp问题matlab代码

matlab 订阅