- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TSP问题,5个城市间距离如下表
A B C D E
A 0 7 6 10 13
B 7 0 7 10 10
C 6 7 0 5 9
D 10 10 5 0 6
E 13 10 9 6 0
求最短路径,取A=B=500,C=200,D=500。
解、TSP问题,即旅行商问题,其集体问题是,有n个城市A,B,C,……,其间的距离 , , ,……,已知,要求每城市都访问一次,求合理的路线,使所走过的路径最短。此问题可利用神经网络中的连续Hopfield 网络用于求解优化问题的方法求解。
其算法及具体实现如下:
步骤:(1)初始化参数,取t=0,a=1.5,d=1;
(2)读入n个城市之间的距离 (x,y=1,2 ,5);
(3)计算权重Txi,yi和输入偏置Ixi;
(4)Uxi(t)的初值在0附近产生(x, i=1,2 5);
(5)计算Vxi(t)(x, i=1,2 5);Vxi(t)= 取U0=0.02;
(6)利用动态方程计算 ,(x, i=1,2 5);
(7)根据一阶欧拉发计算Uxi(t+1),Uxi(t+1)=Uxi(t)+ ,(x, i=1,2 5,取 =0.5);
(8)若系统达到平衡则停止,否则返回(4)循环。
实现算法:
%初始化t,a,d
clear
t=0;
a=50;
d=1;
%五个城市之间的距离矩阵
dxy=[0,7,6,10,13;
7,0,7,10,10;
6,7,0,5,9;
10,10,5,0,6;
13,10,9,6,0];
%当i==j,r(i,j)==1,否则,r(i,j)为0
r=[1,0,0,0,0;
0,1,0,0,0;
0,0,1,0,0;
0,0,0,1,0;
0,0,0,0,1];
%计算偏置矩阵I及权重矩阵T
I=2*a*ones(5);
dtu=zeros(5);
for x=1:1:5
for i=1:1:5
for y=1:1:5
for j=1:1:5
im=mod(i,5);
T(x,i,y,j)=-a*r(x,y)-a*r(i,j)-d*dxy(x,y)*r(j,im+1);
end
end
end
end
%设置初始值u
u0=0.02;
u=0.2*rand(5,5)-0.1;
E=0;
EB=0;
ee=1;
sumv=0;
%当系统达到平衡(相邻两次的能量函数差值ee为0),
%最短路径矩阵中每行只有一个1(即:sumx==ones(1,5)),
%每列只有一个1(即:sumy==ones(1,5)),
%所有元素加起来共等于5(即:sumv==5)时,输出相应的最短路径矩阵
while (ee~=0) | (sumv~=5) | (sumx~=ones(1,5)) | (sumy~=ones(1,5))
e1=0;
e2=0;
e3=0;
e11=zeros(1,5);
e22=zeros(1,5);
e111=0;
e222=0;
v=(1+tanh(u/u0))/2;%计算最短路径矩阵v
for x=1:1:5
for i=1:1:5
eu=0;
for y=1:1:5
for j=1:1:5
eu=eu+T(x,i,y,j)*v(y,j);
end
end
dtu(x,i)=eu+I(x,i);%产生Δu
end
end
u=u+dtu*0.5;%重新计算u值
%计算能量函数的值
for x=1:1:5
for i=1:1:5
e1=e1+v(x,i);
end
e11(x)=(e1-1).^2;
end
for i=1:1:5
for x=1:1:5
e2=e2+v(x,i);
end
e22(i)=(e2-1).^2;
end
for x=1:1:5
for y=1:1:5
for i=1:1:5
im=mod(i,5);
e3=e3+dxy(x,y)*v(x,i)*v(y,im+1);
end
end
end
for x=1:1:5
e111=e111+e11(x);
文档评论(0)