MAT之ACA:利用ACA解决TSP优化最佳路径问题

简介: MAT之ACA:利用ACA解决TSP优化最佳路径问题

输出结果

image.png


实现代码

load citys_data.mat  

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 = 50;                            

alpha = 1;                        

beta = 5;                          

rho = 0.1;                          

Q = 1;                              

Eta = 1./D;                        

Tau = ones(n,n);                  

Table = zeros(m,n);              

iter = 1;                          

iter_max = 200;                    

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;

   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)])]);

subplot(1,2,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(['ACA:利用ACA算法解决TSP优化路径(最短距离:' num2str(Shortest_Length) ')—Jason niu'])

subplot(1,2,2);

plot(1:iter_max,Length_best,'b',1:iter_max,Length_ave,'r:')

legend('最短距离','平均距离')

xlabel('迭代次数')

ylabel('距离')

title('ACA:各代最短距离与平均距离对比—Jason niu')


相关文章
|
机器学习/深度学习 人工智能 算法
论文分享|AAAI 2022 频域隐私保护人脸识别(PPFR-FD)-下篇
论文分享|AAAI 2022 频域隐私保护人脸识别(PPFR-FD)-下篇
256 0
论文分享|AAAI 2022 频域隐私保护人脸识别(PPFR-FD)-下篇
|
1月前
|
人工智能 Cloud Native Java
云应用开发平台CAP深度测评
云应用开发平台CAP是阿里云提供的一站式应用开发及管理平台,支持快速构建和迭代云上应用。通过丰富的Serverless + AI应用模板和先进的开发者工具,CAP帮助企业快速实现业务场景,提高研发、部署、运维效率。用户可免费试用,申请试用资格后,即可快速部署和使用。
|
2月前
|
分布式计算 监控 JavaScript
验阿里云的云应用开发平台CAP
验阿里云的云应用开发平台CAP
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
|
4月前
|
传感器 编解码 算法
【2021 亚太杯数学建模】赛题A-Image Edge Analysis and application图像边缘分析与应用 赛题思路解析及实现
关于2021年亚太杯数学建模赛题A的解析,主要介绍了图像边缘分析与应用的方法,包括亚像素边缘检测、图像目标尺寸测量和亚像素直线段、圆弧段、椭圆段的分割,并提供了MATLAB和Halcon软件的实现方案。
99 0
|
7月前
|
机器学习/深度学习 人工智能 算法
极智AI | 一文看懂Img2Col卷积加速算法
本教程详细解释了直接卷积计算与Img2Col卷积加速算法的实现原理。
443 0
|
人工智能 数据可视化 算法
论文分享|AAAI 2022 频域隐私保护人脸识别(PPFR-FD)-上篇
论文分享|AAAI 2022 频域隐私保护人脸识别(PPFR-FD)-上篇
524 0
论文分享|AAAI 2022 频域隐私保护人脸识别(PPFR-FD)-上篇
|
C++ 计算机视觉
CV之FC:人脸识别之判断相似度极高的国内外明星根据人工智能算法(AP云)预测判别是否为同一个人
CV之FC:人脸识别之判断相似度极高的国内外明星根据人工智能算法(AP云)预测判别是否为同一个人
CV之FC:人脸识别之判断相似度极高的国内外明星根据人工智能算法(AP云)预测判别是否为同一个人
|
存储 移动开发 算法
m基于GA遗传优化和OSPF协议的WSN最短路由算法matlab仿真,并输出节点的不同层域
m基于GA遗传优化和OSPF协议的WSN最短路由算法matlab仿真,并输出节点的不同层域
145 0
m基于GA遗传优化和OSPF协议的WSN最短路由算法matlab仿真,并输出节点的不同层域
|
机器学习/深度学习 人工智能 安全
CVPR‘2023 | MP-Former: 精度高&收敛快-Mask2Former全能图像分割的进阶之路
CVPR‘2023 | MP-Former: 精度高&收敛快-Mask2Former全能图像分割的进阶之路
1325 0