旅行商从城市1出发,终点城市依据算法而定
部分代码
close all
clear
clc
global data
load('data.txt')%导入TSP数据集
Dim=size(data,1)-1;%维度
lb=-100;%下界
ub=100;%上界
fobj=@Fun;%计算总距离
SearchAgents_no=100; % 种群大小(可以修改)
Max_iteration=2000; % 最大迭代次数(可以修改)
%% 画最终的结果 Kd是最终的城市序列
[~,idx]=sort(bestX);
idx=idx+1;
Kd(1)=1;
Kd(2:length(idx)+1)=idx;
%% 画收敛曲线图
figure
plot(curve,'g-','linewidth',2)
xlabel('迭代次数')
ylabel('总距离')
legend('GO')
%% 显示结果
fprintf('算法得到的路径:%d',Kd(1))
for i=2:length(Kd)
fprintf(' > %d',Kd(i));
end
fprintf('\n');
display(['算法求解的总路径总长:' num2str(curve(end))]);
%% 保存数据
dlmwrite('Kd.txt',Kd,'delimiter', '\n')%保留最终的城市序列
dlmwrite('curve.txt',curve,'delimiter', '\n')%保留算法求解的收敛曲线
部分结果
算法得到的路径:1 > 24 > 27 > 8 > 28 > 6 > 12 > 9 > 26 > 3 > 29 > 5 > 21 > 2 > 20 > 10 > 4 > 13 > 16 > 23 > 7 > 25 > 19 > 15 > 11 > 22 > 17 > 14 > 18
算法求解的总路径总长:9798.2528
完整MATLAB代码
点击main.m即可运行