📄 tsp.m
字号:
clc;clear all;
Maxsize=100;MaxDis=100000;Em=0;Ep=0;
n=12;%n个城市
test=100+n^2;%训练次数
cycle=100+10*(n-5);%迭代训练次数
summin=0;dis=zeros(1,test);
%网络参数初始化
A=500;B=500;D=500;C=200;u0=0.02;lan=1.0000e-005;delta=0.1;
% 初始化城市位置
city=rand(2,n);%城市位置
place=city;%路过的城市位置
betterpath=ones(1,n+1);%更短的路径
for k=1:n
d(k,k)=0;
for k1=k+1:n
d(k,k1)=sqrt((place(1,k)-place(1,k1))^2+(place(2,k)-place(2,k1))^2);
d(k1,k)=d(k,k1);
end
end
%______________下面开始训练_________________%
u=zeros(n);
for tk=1:test
del_pre=0;
%初始化神经元位置 n=5
u=1/n+(2*rand(n)-1)*delta/n;
v=zeros(n);
%迭代训练
for ck=1:cycle
[del,v]=Newv(u,v,u0,n);%计算v矩阵
if(abs(del-del_pre)<(1e-15))%判断误差是否足够小
break;%一次训练完成
end
del_pre=del;
%计算u矩阵
%[u]=Newu(u,v,d,n);
[u]=Newu_ad(u,v,d,n);
end%ck=1:cycle
[path,n_fre,n_ill,betterpath,dis(tk),summin]= Check(tk,ck,v,d,cycle,n,betterpath,summin);
[Em,Ep]=Energy(d,v,n); %计算能量函数
end%tk=1:test
[n_zuiyou,n_ciyou]=Count(test,path,dis,summin,n_fre,n_ill);%计算最短路径
Em=Em/test;
Ep=Ep/test;
figure(1);hold on
for k=1:n
plot(city(1,k),city(2,k),'r*')
end
for k=1:n
place(:,k)=city(:,betterpath(k));
end
place(:,n+1)=city(:,betterpath(1));
plot(place(1,:),place(2,:));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -