问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求一份基于matlab的TSP问题源代码

发布网友 发布时间:2022-05-23 06:19

我来回答

1个回答

热心网友 时间:2023-10-15 11:35

function [Shortest_Route,Shortest_Length]=anttsp(city,iter_max,m,Alpha,Beta,Rho,Q)
n=size(city,1);
d=zeros(n,n);
d=squareform(pdist(city));
Eta=1./d;
Tau=ones(n,n);
Tabu=zeros(m,n);
nC=1;
R_best=zeros(iter_max,n);
L_best=inf.*ones(iter_max,1);



    while nC<=iter_max
        route=[];
        for i=1:ceil(m/n)
            route=[route,randperm(n)];
        end
        Tabu(:,1)=(route(1,1:m))';
        for j=2:n
            for i=1:m
                visited=Tabu(i,1:(j-1));
                J=zeros(1,(n-j+1));
                P=J;
                Jc=1;
                for k=1:n
                    if isempty(find(visited==k, 1))
                        J(Jc)=k;
                        Jc=Jc+1;
                    end
                end
                for k=1:length(J)
                    P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);
                end
                P=P/(sum(P));
                
                Pcum=cumsum(P);
                Select=find(Pcum>=rand);
                if isempty(Select)%是不是一定能保证Select不为空
                    Tabu(i,j)=round(1+(n-1)*rand);
                else
                    next_visit=J(Select(1));
                    Tabu(i,j)=next_visit;
                end
            end
        end
        if nC>=2
            Tabu(1,:)=R_best(nC-1,:);
        end
        
        L=zeros(m,1);
        for i=1:m
            R=Tabu(i,:);
            for j=1:(n-1)
                L(i)=L(i)+d(R(j),R(j+1));
            end
            L(i)=L(i)+d(R(1),R(n));
        end
        L_best(nC)=min(L);
        pos=find(L==L_best(nC));
        R_best(nC,:)=Tabu(pos(1),:);
        nC=nC+1;
        
        
        Delta_Tau=zeros(n,n);
        for i=1:m
            for j=1:(n-1)
                Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);
            end
            Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);
        end
        Tau=(1-Rho).*Tau+Delta_Tau;
        Tabu=zeros(m,n);
    end
    Pos=find(L_best==min(L_best));
    Shortest_Route=R_best(Pos(1),:);
    Shortest_Length=L_best(Pos(1));
end

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
秦淮河航道什么时候断行 超级甜蜜的情话(特别简短的情话短句) 温柔又可爱的文案(超级可爱的短句) 我来贷放款多久到账? 宫颈癌的早期征兆 徐州到南通有多远 南通市到徐州市的长途汽车旅途时间大概是多长时间 你好 你那个金士顿4G1333和威刚4G1600 内存能一起用吗? 一台电脑主板上可以插两根内存条。我有一根4G 频率1333m的和一根2G16... ...4g的一个是1333一个是1600可以在同一个主板上用吗图是我电脑支持的... 1oracle 得到date类型字段的时分秒,结果依然是date类型 2:partition(分区名称),这个‘分区名称’ 3dmax2010注册不了 序列号:667—98989898 申请号:Q6F2 TTSP 56PW 5D5A Q9VG A87G 47DQ 5Z9Z benettsp是什么牌子的巧克力 香蕉的胎座类型 tsp退火法 这个程序没有main函数啊 怎么解决?? oracle 中partition PART的应用 tsp_codec是什么软件。 求一个TSP的matlab程序 Oracle 表分区 多少 partition 才适合 杏仁和海棠果的区别 partition by oracle 现在还用吗,那些情况下有用呢,能举例吗? 车队个人内心感想? TTSPad Manager这个哪里可以下载到啊~?` oracle表的partition名乱码 过年了,女友回老家了。给我留下了作业(每天写一篇日记) 求一篇一个人即将离开打工的城市,回家过年的日志 如何用风行播放器下载电影? 用风行播放器能把电影下载到硬盘吗?怎样下载?跪拜! 移动4g卡怎么换nano sim卡 用PS制作水印制作完成后保存什么文件,才使水印背景是透明的呢?跪求高手详细一点 谢谢! 如何在跑跑中漂移? 果实杏是由什么结构发育来的 果实杏是由什么结构发育来的? 跑跑怎么漂移??? 金黄的杏是果实属于什么器官? 我是联通的卡能接打电话和收短信就是不能发短信怎么回事 中国联通卡有话费有流量能接打电话怎么不能收发短信和上网啊 刚买的联通卡为什么可以打电话不可以发短信? 我是联通3G卡和手机。能打电话,能上网。但是短信发不出去,这是什么问题? 为什么联通手机只能打电话不能发信息 新办的联通卡能打电话,为何不能发送短信啊? 联通手机卡能打电话却发不了短信是怎么回事? 联通卡能打电话,能上网,不能发短信。 为什么我的联通卡,只能打电话,不能发短信 新买的联通卡为什么能接打电话和接短信 却发不了短信 我新办的联通卡为什么只能打电话,不能发短信呢?总是发送失败! 联通手机只能打电话不能发短信 我的手机是联通4S的,今天刚交的话费,为什么可以打电话不能上网也不能发短信, 用PS做个透明水印,怎么样保存为GIF或PNG格式透明的 王沪生知道小芳是姐的女儿是哪一集