资源简介
用hopfield网络解决TSP问题,在这里有10个程序,最后程序求出了最可行的解,效果还是非常好的
代码片段和文件信息
N=10;A=1.5;D=1;u0=0.02;%分别为城市数、系数A和D、u0的初始值
Step_t=0.1; %计算步长
MaxEpochs=2000; %迭代次数
CityCood=[0.40000.24390.17070.22390.51710.87320.68780.84880.66830.6195;0.44390.14630.22930.76100.94140.65360.52190.36090.25360.2634];%城市坐标
DistanceMat=dist(CityCood‘CityCood) %城市间距离矩阵
U=0.2*rand(NN)-0.1; %神经元输入初始值在0附件产生
for Count=1:MaxEpochs
V=(1+tansig(U/u0))/2;
E=CacuEnergy(VDistanceMatAD); %计算能量
delta_U=CacuDeltaU(VDistanceMatAD); %计算U的增量
U=U+delta_U*Step_t;
end
[NewVCheckRes]=RouteCheck(V);
if(CheckRes<1)
FinalE=CacuEnergy(NewVDistanceMatAD);
Routelen=Totalroutelength(NewVCityCood); %计算路径的真实长度
PlotRoute(NewVCityCood);
else
disp(‘路径无效!!‘);
end
function E=CacuEnergy(VdAD) %计算能量
[nn]=size(V);
t1=sumsqr(sum(V2)-1);
t2=sumsqr(sum(V1)-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+t3);
%function d_U=CacuDeltaU(VdADdt) %计算U的增量
[nn]=size(v);
t1=repmat(sum(V2)-11n);
t2=repmat(sum(V2)-1n1);
PermitV=V(:2:n);
PermitV=[PermitV V(:1)];
t3=d*PermitV;
d_U=-dt*(A*ti+A*t2+D*t3);
%function [NewVCheckRes]=RouteCheck(V) %检查是否是有效路径
[rowscolumns]=size(V);
NewV=zeros(rowscolomns);
[XCOrder]=max(V);
for j=1:columns
NewV(Order(j)j)=1;
end
SC=sum(NewV)
SR=sum(NewV‘)
CheckRes=sumsqr(SC-SR);
Order
%function PlotRoute(VCityCood) %绘制路径
figure;
title(‘连续Hopfiele网络解决TSP‘);
xlabel(‘X坐标‘);
ylabel(‘Y坐标‘);
axis([0101]);
axis on ;
[xxxorder]=max(V);
NewCood=CityCood(:order);
NewCood=[NewCood NewCood(:1)];
plot(NewCood(1:)NewCood(2:)‘o-‘);
%function Len=TotalRouteLength(VCityCood)
[xxxorder]=max(V);
NewCood=CityCood(:order);
NewCood=[NewCood NewCood(:1)];
[rowscolumns]=size(NewCood);
Len=0;
for i=2:columns
Len=Len+dist(NewCood(:i-1)‘NewCood(:i));
end
Len
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2019 2010-06-29 21:04 Hopfield.m
----------- --------- ---------- ----- ----
2019 1
- 上一篇:实例matlab 编程100个常用程序
- 下一篇:matlab正弦信号发生器的设计
相关资源
- matlab正弦信号发生器的设计
- 实例matlab 编程100个常用程序
- 用MATLAB(BPSK仿真 直接扩频)
- 最小二乘法曲线拟合(MATLAB)
- 基于BP神经网络对几种字体0-9的数字识
- 多用户检测MATLAB程序
- MATLAB实现的BPSK调制解调
- 基于区域生长的图像分割MATLAB
- 龚纯《精通MATLAB最优化计算》随书源
- 基于matlab 的图像处理100实例
- FNN MATLAB实现
- 实现2ask.4ask.2fsk.4fsk.qam16.qam8调制的m
- 8领域边界跟踪 图像处理 matlab
- GPS卫星轨道动态仿真MATLAB
- 细胞图像分割matlab代码
- 图像的二进小波分解matlab源码(保证
- 基于MATLAB的线性控制系统分析与设计
- matlab 计算矩阵中不同元素个数的函数
- 基于MP的时频分析MATLAB代码
- matlab版的车牌识别程序
- 工程优化问题的Matlab实现代码
- 数字信号处理 matlab实验源程序吴镇扬
- matlab编写的susan算法程序
- 用MATLAB编写的离散余弦变换编码
- Matlab图像二值化和逆向二值化
- matlab-图像处理算法
- GaussJordan解线性方程组-matlab
- vc下实现的分段线性插值、二次多项式
- matlab 手动画图 描点画图
- p文件,MATLAB的
评论
共有 条评论