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

📄 main.asv

📁 matlab语言编写的连续hopfield神经网络算法解决tsp
💻 ASV
字号:
function main()

N=10;             %城市数
A=1.5;            %系数A
D=1;u0=0.02;       %系数D
Step_t=0.1;        %神经元函数斜率
MaxEpochs=2000;   %迭代次数

% 得到城市间距离矩阵
CityCood=rand(2,N);
DistanceMat=dist(CityCood',CityCood);   %城市间距离矩阵
U=0.2*rand(N,N)-0.1;                   %神经元输入初始值在0附近随机产生

for Count=1:MaxEpochs
    V=(1+tansig(U/u0))/2;
    E=CacuEnergy(V,DistanceMat,A,D);  %计算能量
    
    Delta_U=CacuDehaU(V,DistanceMat,A,D,Step_t);    %计算u的增值
    U=U+delta_U*Step_t;
end
[NewV,CheckRes]=RouteCheck(V);   %检查v是否是有效路径
if(CheckRes<1)
    FinalE=CacuEnergy(NewV,DistanceMat,A,D)
    RoutcLen=TotalRouteLength(NewV,CityCood)    %计算路径的时间长度
    PlotRoutc(NewV,CityCood);                   %绘制路径
else
    disp('路径无效');
end

%能量计算
function E=CacuEnergy(V,d,A,D)
[n,n]=size(V);
t1=sumsqrt(sum(V,2)-1);
t2=sumsqr(sum(V,1)-1);
PermitV=V(:,2:n);
PermitV=[PermitV V(:,1)];
temp=d*PermitV;
t3=sum(sum(V.*temp));
E=0.5*(A*t1+A*t2+D*t3A);

%计算U的增量
function d_U=CacuDeltaU(V,d,A,D,dt)
[n,n]=size(V);
t1=repmat(sum(V,2)-1,1,n);
t2=repmat(sum(V,1)-1,n,1);
PermitV=V(:,2:n);
PermitV=[PermitV V(:,1)];
t3=d*PermitV;
d_U=-dt*(A*t1+A*t2+D*t3);

%检验v是否是有效路径

function [NewV,CheckRes]=RouteCheck(V)
[rows,columns]=size(V);
NewV=zeros(rows,Columns);
[XC,Order]=max(V);
for j=1:Columns,
    NewV(Order(j),j)=1;
end
SC=sum(NewV);
SR=sum(NewV');
CheckRes=sumsqr(SC-SR);


%绘制路径
function PlotRoute(V,CityCood)
figure;
title('tsp');
xlabel('x label');
ylabel('y label');
axis([0,1,0,1]);
[xxx,order]=max(V);
NewCood=CityCood(:,order);
NewCood=[NewCood NewCood(:,a)];
plot(NewCood(1,:),NewCood(2,:),'o-');

%计算实际路径长度

function Len=TotalRouteLength(V,CityCood)
[xxx,order]=max(V);
NewCood=CityCood(:,order);
NewCood=[NewCood NewCood(:,1)];
[rows,columns]=size(NewCood);
Len=0;
for i=2:columns,
    Len=Len+dist(NewCood(:,i-1)',NewCood(:,i));
end
    
    

⌨️ 快捷键说明

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