%% 连续Hopfield神经网络的优化—旅行商问题优化计算
%
% <html>
% <table border="0" width="600px" id="table1"> <tr> <td><b><font size="2">该案例作者申明:</font></b></td> </tr> <tr> <td><span class="comment"><font size="2">1:本人长期驻扎在此<a target="_blank" href="http://www.ilovematlab.cn/forum-158-1.html"><font color="#0000FF">板块</font></a>里,对<a target="_blank" href="http://www.ilovematlab.cn/thread-49221-1-1.html"><font color="#0000FF">该案例</font></a>提问,做到有问必答。</font></span></td></tr><tr> <td><span class="comment"><font size="2">2:此案例有配套的教学视频,配套的完整可运行Matlab程序。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 3:以下内容为该案例的部分内容(约占该案例完整内容的1/10)。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 4:此案例为原创案例,转载请注明出处(<a target="_blank" href="http://www.ilovematlab.cn/">Matlab中文论坛</a>,<a target="_blank" href="http://www.ilovematlab.cn/forum-158-1.html">《Matlab神经网络30个案例分析》</a>)。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 5:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 6:您看到的以下内容为初稿,书籍的实际内容可能有少许出入,以书籍实际发行内容为准。</font></span></td> </tr><tr> <td><span class="comment"><font size="2"> 7:此书其他常见问题、预定方式等,<a target="_blank" href="http://www.ilovematlab.cn/thread-47939-1-1.html">请点击这里</a>。</font></span></td> </tr></table>
% </html>
%
web browser http://www.ilovematlab.cn/thread-61023-1-1.html
% function main
%% 清空环境变量、定义全局变量
clear all
clc
global A D
%% 导入城市位置
load city_location
%% 计算相互城市间距离
distance=dist(citys,citys');
%% 初始化网络
N=size(citys,1);
A=200;
D=100;
U0=0.1;
step=0.0001;
delta=2*rand(N,N)-1;
U=U0*log(N-1)+delta;
V=(1+tansig(U/U0))/2;
iter_num=10000;
E=zeros(1,iter_num);
%% 寻优迭代
for k=1:iter_num
% 动态方程计算
dU=diff_u(V,distance);
% 输入神经元状态更新
U=U+dU*step;
% 输出神经元状态更新
V=(1+tansig(U/U0))/2;
% 能量函数计算
e=energy(V,distance);
E(k)=e;
end
%% 判断路径有效性
[rows,cols]=size(V);
V1=zeros(rows,cols);
[V_max,V_ind]=max(V);
for j=1:cols
V1(V_ind(j),j)=1;
end
C=sum(V1,1);
R=sum(V1,2);
flag=isequal(C,ones(1,N)) & isequal(R',ones(1,N));
%% 结果显示
if flag==1
% 计算初始路径长度
sort_rand=randperm(N);
citys_rand=citys(sort_rand,:);
Length_init=dist(citys_rand(1,:),citys_rand(end,:)');
for i=2:size(citys_rand,1)
Length_init=Length_init+dist(citys_rand(i-1,:),citys_rand(i,:)');
end
% 绘制初始路径
figure(1)
plot([citys_rand(:,1);citys_rand(1,1)],[citys_rand(:,2);citys_rand(1,2)],'o-')
for i=1:length(citys)
text(citys(i,1),citys(i,2),[' ' num2str(i)])
end
text(citys_rand(1,1),citys_rand(1,2),[' 起点' ])
text(citys_rand(end,1),citys_rand(end,2),[' 终点' ])
title(['优化前路径(长度:' num2str(Length_init) ')'])
axis([0 1 0 1])
grid on
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
% 计算最优路径长度
[V1_max,V1_ind]=max(V1);
citys_end=citys(V1_ind,:);
Length_end=dist(citys_end(1,:),citys_end(end,:)');
for i=2:size(citys_end,1)
Length_end=Length_end+dist(citys_end(i-1,:),citys_end(i,:)');
end
disp('最优路径矩阵');V1
% 绘制最优路径
figure(2)
plot([citys_end(:,1);citys_end(1,1)],...
[citys_end(:,2);citys_end(1,2)],'o-')
for i=1:length(citys)
text(citys(i,1),citys(i,2),[' ' num2str(i)])
end
text(citys_end(1,1),citys_end(1,2),[' 起点' ])
text(citys_end(end,1),citys_end(end,2),[' 终点' ])
title(['优化后路径(长度:' num2str(Length_end) ')'])
axis([0 1 0 1])
grid on
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
% 绘制能量函数变化曲线
figure(3)
plot(1:iter_num,E);
ylim([0 2000])
title(['能量函数变化曲线(最优能量:' num2str(E(end)) ')']);
xlabel('迭代次数');
ylabel('能量函数');
else
disp('寻优路径无效');
end
% %===========================================
% function du=diff_u(V,d)
% global A D
% n=size(V,1);
% sum_x=repmat(sum(V,2)-1,1,n);
% sum_i=repmat(sum(V,1)-1,n,1);
% V_temp=V(:,2:n);
% V_temp=[V_temp V(:,1)];
% sum_d=d*V_temp;
% du=-A*sum_x-A*sum_i-D*sum_d;
% %==========================================
% function E=energy(V,d)
% global A D
% n=size(V,1);
% sum_x=sumsqr(sum(V,2)-1);
% sum_i=sumsqr(sum(V,1)-1);
% V_temp=V(:,2:n);
% V_temp=[V_temp V(:,1)];
% sum_d=d*V_temp;
% sum_d=sum(sum(V.*sum_d));
% E=0.5*(A*sum_x+A*sum_i+D*sum_d);
web browser http://www.ilovematlab.cn/thread-61023-1-1.html
%%
%
% <html>
% <table align="center" > <tr> <td align="center"><font size="2">版权所有:</font><a
% href="http://www.ilovematlab.cn/">Matlab中文论坛</a> <script
% src="http://s3.cnzz.com/stat.php?id=971931&web_id=971931&show=pic" language="JavaScript" ></script> </td> </tr></table>
% </html>
%
连续Hopfield神经网络的优化-旅行商问题优化计算.rar
需积分: 0 26 浏览量
更新于2023-06-07
收藏 3KB RAR 举报
在本压缩包中,我们关注的是“连续Hopfield神经网络的优化”,具体应用于解决旅行商问题。这是一个经典的组合优化问题,旨在找到访问一系列城市并返回起点的最短路径,每个城市仅访问一次。该问题在物流、路线规划等领域有广泛应用。
连续Hopfield神经网络是一种能量系统,由John Hopfield于1982年提出。它由多个神经元组成,每个神经元具有连续的激活状态。网络的状态变化遵循能量函数的下降原则,即系统总是趋向于降低其内部能量状态。这种网络可以用于联想记忆和优化问题的求解。
在旅行商问题的优化计算中,Hopfield网络被用来寻找最小化总距离的旅行路径。将问题转化为权重矩阵,其中权重表示两个城市之间的距离。然后,神经网络的权重参数被设置为这个距离矩阵的元素,通过迭代更新神经元状态,网络会逐渐收敛到一个稳定的解决方案,即旅行商问题的潜在最优路径。
压缩包中的“案例11 连续Hopfield神经网络的优化-旅行商问题优化计算”可能是MATLAB实现的一个具体案例。MATLAB是一种强大的数学计算和编程环境,特别适合处理此类数值计算和优化问题。在这个案例中,可能包括以下内容:
1. 数据预处理:将城市坐标转换为距离矩阵。
2. Hopfield网络模型构建:定义网络结构,设置初始状态和权重矩阵。
3. 能量函数:定义网络的能量函数,通常为神经元状态与权重矩阵的内积的负值。
4. 更新规则:根据Hopfield网络的动态更新规则(如Hebb学习规则)更新神经元状态。
5. 迭代过程:反复执行更新步骤,直到网络达到稳定状态或满足停止条件。
6. 结果解析:从网络的稳定状态中提取旅行路径,计算总距离,并与已知最优解进行比较。
MATLAB中的神经网络工具箱(Neural Network Toolbox)提供了创建、训练和仿真各种神经网络模型的功能,包括Hopfield网络。案例可能详细解释了如何使用这些工具箱函数来实现上述步骤。
此外,描述中还提到了BP(反向传播)遗传算法和RBF(径向基函数)回归。这可能意味着案例不仅包含Hopfield网络,还有其他优化方法的实现,例如:
- BP神经网络:一种用于监督学习的多层前馈网络,通过反向传播误差来调整权重。
- 遗传算法:一种基于自然选择和遗传原理的全局优化方法,可用于搜索旅行商问题的近似解。
- RBF网络:一种用于非线性回归和函数逼近的神经网络,通过径向基函数作为隐层神经元的激活函数。
这些方法各自有其优点和适用场景,可以作为Hopfield网络的补充或替代,以探索不同策略解决旅行商问题。
总结来说,这个压缩包提供的案例涉及了多种优化算法在解决实际问题中的应用,特别是MATLAB环境下连续Hopfield神经网络对旅行商问题的优化计算。案例的深入学习和理解将有助于提升对神经网络优化算法的理解,以及在类似问题上的应用能力。
woisking2
- 粉丝: 12
- 资源: 6718
最新资源
- 提升小学高年级班级自主管理水平的策略与方法研究
- 小学教育:教师课堂评价语使用现状及其改进策略
- 小学教师行为习惯优化与解决对策
- 基于opencv疲劳检测(完整代码python)
- CNN GRU 注意力 时序预测 基于加注意力机制(CNN-GRU-Attention)的时间序列预测程序,预测精度很高 可用于做风电功率预测,电力负荷预测,交通预测,负荷预测,经济预测,排放预测等
- 2-安卓小黄人影视APP-V1.2.2 纯净版
- STM32与Free RTOS实时操作系统的移植
- 小学劳动教育现状分析及优化策略
- 小学生创新能力培养的问题及对策-教育领域的综合探析
- 基于opencv的信用卡数字识别(完整代码python)
- 探究并解决小学生健康教育中的关键问题
- 小学教育中培养学生口语交际能力的策略
- 教育领域小学生的手机使用现状及管理对策
- 教育学视角下小学生说谎原因及其对策
- 网页版的注册功能,带前端后台,数据库,以及readme文件
- 数形结合思想在小学数学教学中的应用及其改进策略研究