郑华-2150230505-SOM网络模型_第1页
郑华-2150230505-SOM网络模型_第2页
郑华-2150230505-SOM网络模型_第3页
郑华-2150230505-SOM网络模型_第4页
郑华-2150230505-SOM网络模型_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SOM网络模型应用,郑华,页码20深 圳 大 学 实 验 报 告实验课程名称: 人工神经网络 实验项目名称: SOM网络模型应用 学院: 计算机与软件学院 专业: 软件工程 报告人: 郑华 学号: 2150230505 班级: 15级 同组人: 无 指导教师: 朱安民 实验时间: 2016-5-30 实验报告提交时间: 2016-5-31 教务处制一、 实验目的理解并熟悉掌握SOM算法,利用SOM神经网络解决TSP旅行销售商问题。二、 实验内容1)假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求所经过

2、的路径路程最短。2)设计一个SOM神经网络,解决TSP旅行销售员问题。并且与最佳路径进行比较,参数如何选取,如何优化算法。3)试分析如何将网络设计扩展到解决多个旅行销售员的MTSP问题。即有多个旅行销售商,他们共同完成每个城市的拜访,并且每个城市只能去一次,所有的加起来经过的路程最短。三、 实验步骤1. 网络设计,包括输入层、输出层节点个数的设计,为什么如此设计;图1上图出自朱安民教授的课件。输入层节点个数为2,即为每个城市的坐标。输出层节点个数为城市的个数29。2. 算法步骤;图2上图出自朱安民教授的课件。首先要初始化神经网络的权值,然后将坐标输入到神经网络中去,竞争出来一个优胜点,然后计算

3、出离这个点最近的邻居,然后修改优胜点和他的邻居的3. 运行程序,结果图示。 图33.1对101个城市进行处理的结果截图,分别运行3次,结果图是否一样?为什么? 三次的结果不一样,如下三个图所示,原因是初始状态的选取是随机的,不一定那个点就是优胜点,而且结果也是最优路径的近似值,并不是完全的最优路径,所以结果也是不尽相同的。但是,每次结果的误差都很小,所以这种算法还是可行的。图4图5图63.2对29个城市进行处理的结果截图,分别运行3次,结果图是否一样?为什么?图7图8图9 由以上三个图可知结果图是一样的,因为点比较少,用SOM算法算出来的路径就是最优路径,因此结果是一样的。3.3分析学习率al

4、pha的取值范围0.001,0.1对结果的影响;Alpha=0.001时: time= 8.106187s图10Alpha=0.01时: time= 9.079510s图11Alpha=0.1时: time= 8.741680s图12 经过试验分析可以得出: 当alpha=0.01这个量级的时候结果是最准确的,而且用时也不是很多,所以经过验证alpha最好取值为0.03,alpha取值太大或者太小的时候都会产生误差。3.4分析学习率beta的取值范围0.001,0.5对结果的影响;图13 beta=0.001 time= 10.597906sbeta=0.01 time= 10.601020s

5、图14beta=0.1 time= 6.787424s图15beta=0.5 time= 6.066585s图16由以上四个结果可知: 随着beta的增大,运行时间缩短,但是结果最准确而且速度相对快的点在beta等于0.1的时候,所以我们以后运行程序就把beta设置为0.1。beta的值如果太小的话就无法趋近并且与表示城市的那些点重合,太大的话路线也会变长。3.5邻居函数F(percent, G)范围的确定参数percent的取值0.1 0.8对结果的影响;Percent=0.1 time= 8.014007图17Percent=0.2 time= 7.614537s图18Percent=0.

6、4 time= 7.389752s图19Percent=0.8 time= 7.173295s图20由以上四个结果可知: 随着percent的增大误差率是随之增大的,因此,percent应该取一个较小的值,但是,随着percent的增大,运行时间是减小的,因此,percent也不能是个太小的值,所以由实验得出,percent取0.2的时候效果最好。四、总结分析1程序运行结果的列表,包括7组不同数据、3次不同的运行次数、不同的参数选择的情况下的路径长度、运行时间、以及最短路径的长度。2结果列表的文字说明。3实验过程当中遇到的问题、教训的总结。由实验得出,当alpha=0.03,beta=0.1,

7、percent=0.2的时候,运行效果最佳,运行时间较短而且准确性较高。alpha=0.03,beta=0.1,percent=0.2图21图22运行时间:time= 7.798191s五、附录源程序注意:包括主要功能的注释说明;如果是自己编写的请特别注明;如果是参考网上的,注明源代码出处和修改处。 Mainfunction =Main(data,bestpath)tic%计时%data :训练集,有三列,第一列是行标,第二、三列是坐标;route; 得到的有序的路径;bestpath:为最优路径,每行只有一列,表示城市标号%参数配置bug=0;%调试模式1,运行模式0norm=0;%是否对数

8、据归一化,1:归一化;0:不归一化alpha=0.03;beta=0.1;%学习率beta1=beta;%学习率percent=0.2;citynum=length(data);%城市数目neutralNum=citynum*2;%输出神经元数目r=10;%初始半径iterNum=1000;%定义迭代数data2=data;%备份if norm=1 %归一化 max1=max(data(:,2); max2=max(data(:,3); min1=min(data(:,2); min2=min(data(:,3); for i=1:1:length(data) data(i,2)=(data(

9、i,2)-min1)/(max1-min1); data(i,3)=(data(i,3)-min2)/(max2-min2);%0到1 endend%初始化权重值,Wfor i=1:1:neutralNum for j=1:1:2 W(i,j)=rand;%0到1 endend%训练for iter=1:1:iterNum error=0;%记录精度 for count=1:1:citynum i=floor(rand*citynum)+1;%现随机取数据 coord=data(i,2:3);%城市的坐标 winnerIndex,distValSet =findWinner(coord,W);

10、%winnerIndex :找到的优胜者下标;distValSet;输入向量与所有的神经元的距离值得集合; %更新优胜者和邻居的权值 for j=1:1:neutralNum dist1=dist(winnerIndex,j,neutralNum);%dist(i,j,M) 计算s神经元i与优胜神经元j之间的距离,其中M为总的神经元 adjacentFuncVal =adjacentFunction(dist1, r);%findWinner(A,W) 求近邻函数的结果值;dist; 神经距离优胜神经元的距离; r;本次迭代的近邻半径 %更新权值 W(j,1)=W(j,1)+beta* adj

11、acentFuncVal*(coord(1)-W(j,1); W(j,2)=W(j,2)+beta* adjacentFuncVal*(coord(2)-W(j,2); end error=error+distValSet(winnerIndex); end %检查精度,精度满足则退出 if error<percent disp('break'); break; end %参数更新 r= round(r-1)*(1-iter/(iterNum)+1; %更新半径 beta=beta-beta1/(iterNum); %更新学习率 %调试工具 if bug=1 if ite

12、r>1 cla end %画图 plot(data(:,2),data(:,3),'ro'); % axis(0,1,0,1); hold on; path1,path2 =getPath(data, W);%获取路径 drawPath(path1);%绘制路径 pause(1);%休眠 %统计结果 distantOfBestPath,distantOfRusultPath,errorRate, =compareToBestPath(path2,bestpath,data2);%与最优路径对比,path2:路径,格式为路径按照行数排序,第二列是城市编号;bestpath:

13、最优路径;data2:城市坐标数据 str=sprintf('%s%d%s%d%s%d%s%d','最优路径长度=',distantOfBestPath,' ;结果路径长度=',distantOfRusultPath,' ;误差率=',errorRate,' ;迭代次数=',iter); title(str); end end cla %画图 plot(data(:,2),data(:,3),'ro'); % axis(-0.2,1.2,-0.2,1.2); hold on; path1,path2

14、 =getPath(data, W)%获取路径 drawPath(path1);%绘制路径 pause(1);%休眠 %统计结果 distantOfBestPath,distantOfRusultPath,errorRate,data3 =compareToBestPath(path2,bestpath,data2);%与最优路径对比,path2:路径,格式为路径按照行数排序,第二列是城市编号;bestpath:最优路径;data2:城市坐标数据 str=sprintf('%s%d%s%d%s%d','最优路径长度=',distantOfBestPath,

15、9; ;结果路径长度=',distantOfRusultPath,' ;误差率=',errorRate); title(str); %画最优路径 figure; plot(data3(:,1),data3(:,2),'ro-'); title('最优路径'); iter toc%完毕findWinner:function winnerIndex,distValSet =findWinner(A,W)%winnerIndex :找到的优胜者下标;distValSet;输入向量与所有的神经元的距离值得集合;A:输入的向量 W:所有神经元的权重

16、值的集合iputDim=length(A);%iputDim:输入向量的维度值neuNum=length(W);%输出神经元数目winnerIndex=1;%计算输入的向量 W:所有神经元的权重之间的距离for i=1:1:neuNum distant=0; for j=1:1:iputDim distant=distant+(A(j)-W(i,j)2; end distValSet(i)= sqrt(distant); if i>2 if distValSet(winnerIndex)>distValSet(i) winnerIndex=i; end endendcompareT

17、oBestPath:function distantOfBestPath,distantOfRusultPath,errorRate,data2 =compareToBestPath(path2,bestpath,data)%与最优路径对比,path2:路径,格式为路径按照行数排序,第二列是城市编号;bestpath:最优路径;data:城市坐标数据;data2:最优路径%的坐标数据dist1=0;dist2=0;data2(1,:)=data(bestpath(1,1),2:3);for i=1:1:(length(bestpath)-1) cityNum1=bestpath(i,1); c

18、ityNum2=bestpath(i+1,1); cityPos1=data(cityNum1,2:3); cityPos2=data(cityNum2,2:3); data2(i+1,:)=data(cityNum2,2:3); d=(cityPos1(1)-cityPos2(1)2+(cityPos1(2)-cityPos2(2)2; d=sqrt(d); dist1=dist1+d;endcityNum1=bestpath(1,1);cityNum2=bestpath(length(bestpath),1);cityPos1=data(cityNum1,2:3);cityPos2=dat

19、a(cityNum2,2:3);d=(cityPos1(1)-cityPos2(1)2+(cityPos1(2)-cityPos2(2)2;d=sqrt(d);dist1=dist1+d;distantOfBestPath=dist1;%最优路径长度for i=1:1:(length(path2)-1) cityNum1=path2(i,2); cityNum2=path2(i+1,2); cityPos1=data(cityNum1,2:3); cityPos2=data(cityNum2,2:3); d=(cityPos1(1)-cityPos2(1)2+(cityPos1(2)-cityPos2(2)2; d=sqrt(d); dist2=dist2+d;endcityNum1=path2(1,2);cityNum2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论