MAT之SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题
【摘要】 MAT之SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题
目录
输出结果
实现代码
输出结果
实现代码
%SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题——Jason niu X = [16.4...
MAT之SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题
目录
输出结果
实现代码
-
%SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题——Jason niu
-
X = [16.4700 96.1000
-
16.4700 94.4400
-
20.0900 92.5400
-
22.3900 93.3700
-
25.2300 97.2400
-
22.0000 96.0500
-
20.4700 97.0200
-
17.2000 96.2900
-
16.3000 97.3800
-
14.0500 98.1200
-
16.5300 97.3800
-
21.5200 95.5900
-
19.4100 97.1300
-
20.0900 92.5500];
-
-
-
D = Distance(X);
-
N = size(D,1);
-
-
T0 = 1e10;
-
Tend = 1e-30;
-
L = 2;
-
q = 0.9;
-
Time = ceil(double(solve([num2str(T0) '*(0.9)^x = ',num2str(Tend)])));
-
count = 0;
-
Obj = zeros(Time,1);
-
track = zeros(Time,N);
-
-
S1 = randperm(N);
-
DrawPath(S1,X)
-
title('利用自定义函数绘制TSP问题的初始路径(随机产生)—Jason niu')
-
disp('初始种群中的一个随机值:')
-
OutputPath(S1);
-
Rlength = PathLength(D,S1);
-
disp(['总距离:',num2str(Rlength)]);
-
-
while T0 > Tend
-
count = count + 1;
-
temp = zeros(L,N+1);
-
-
S2 = NewAnswer(S1);
-
-
[S1,R] = Metropolis(S1,S2,D,T0);
-
-
if count == 1 || R < Obj(count-1)
-
Obj(count) = R;
-
else
-
Obj(count) = Obj(count-1);
-
end
-
track(count,:) = S1;
-
T0 = q * T0;
-
end
-
-
figure
-
plot(1:count,Obj)
-
xlabel('迭代次数')
-
ylabel('距离')
-
title('SA:显示SA算法对TSP问题的优化过程(适应度函数)—Jason niu')
-
-
DrawPath(track(end,:),X)
-
title('SA:利用SA对TSP问题优化,绘制出利用SA算法优化后的最优路径图—Jason niu')
-
%% IX. 输出最优解的路线和总距离
-
disp('最优解:')
-
S = track(end,:);
-
p = OutputPath(S);
-
disp(['总距离:',num2str(PathLength(D,S))]);
相关文章
MAT之SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题
文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:yunyaniu.blog.csdn.net/article/details/79425612
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)