⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytsp.asv

📁 基于Hopfield神经网络解决旅行商问题
💻 ASV
字号:
function myTSP
%城市数目
N=10;
%城市坐标及城市间距离
cityx=[0.4,0.2439,0.1707,0.2293,0.5171,0.8732,0.6878,0.8488,0.6683,0.6195];
cityy=[0.4439,0.1463,0.2293,0.761,0.9414,0.6536,0.5219,0.3609,0.2536,0.2634];
for i=1:1:10
    for j=1:1:10
        d(i,j)=sqrt((cityx(i)-cityx(j))^2+(cityy(i)-cityy(j))^2);
    end
end
%网络参数
A=500;
B=500;
C=200;
D=500;
u0=0.02;
tao=1;
lamda=0.0001;
%多次实验并统计结果
for count=1:1:1
    %换位阵及初始化
    V=rand(N,N)
    U=atanh(2*V-1)*u0;
    %状态更新
    for renew=1:1:100
        %同步更新
        for ux=1:1:N
            for ui=1:1:N
                m1=0;
                m2=0;
                m3=0;
                m4=0;
                %求导公式第一项
                for j=1:1:N
                    if j~=ui
                        m1=m1+V(ux,j);
                    end
                    if j==ui
                        m1=m1;
                    end
                end
                m1=-1*A*m1
                %求导公式第二项
                for y=1:1:N
                    if y~=ux
                        m2=m2+V(y,ui);
                    end
                    if y==ux
                        m2=m2;
                    end
                end
                m2=-1*B*m2
                %求导公式第三项
                for x=1:1:N
                    for j=1:1:N
                        m3=m3+V(x,j);
                    end
                end
                m3=(m3-N);
                m3=-1*C*m3
                %求导公式第四项
                for y=1:1:N
                    if y~=ux && ui<N && ui>1
                        m4=m4+d(ux,y)*(V(y,ui+1)+V(y,ui-1));
                    end
                    if y~=ux && ui==1
                        m4=m4+d(ux,y)*(V(y,ui+1)+V(y,N));
                    end
                    if y~=ux && ui==N
                        m4=m4+d(ux,y)*(V(y,ui-1)+V(y,1));
                    end
                    if y==ux
                        m4=m4;
                    end
                end
                m4=-2*D*m4
                %导数及状态更新
                Udao=-U(ux,ui)+m1+m2+m3+m4;
                U(ux,ui)=U(ux,ui)+lamda*Udao;
                V(ux,ui)=(1+tanh(U(ux,ui)/u0))/2   ;             
                V(ux,ui);
               % if V(ux,ui)<0.001
               %     V(ux,ui)=0;
               % end
               % if V(ux,ui)>0.5
               %     V(ux,ui)=1;
               % end
                
            end
        end                      
    end
    V
end
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -