郑华2150230505SOM网络模型Word格式文档下载.docx

上传人:b****2 文档编号:5161115 上传时间:2023-05-04 格式:DOCX 页数:23 大小:767.82KB
下载 相关 举报
郑华2150230505SOM网络模型Word格式文档下载.docx_第1页
第1页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第2页
第2页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第3页
第3页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第4页
第4页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第5页
第5页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第6页
第6页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第7页
第7页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第8页
第8页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第9页
第9页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第10页
第10页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第11页
第11页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第12页
第12页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第13页
第13页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第14页
第14页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第15页
第15页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第16页
第16页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第17页
第17页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第18页
第18页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第19页
第19页 / 共23页
郑华2150230505SOM网络模型Word格式文档下载.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

郑华2150230505SOM网络模型Word格式文档下载.docx

《郑华2150230505SOM网络模型Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《郑华2150230505SOM网络模型Word格式文档下载.docx(23页珍藏版)》请在冰点文库上搜索。

郑华2150230505SOM网络模型Word格式文档下载.docx

图1

上图出自朱安民教授的课件。

输入层节点个数为2,即为每个城市的坐标。

输出层节点个数为城市的个数29。

2.算法步骤;

图2

首先要初始化神经网络的权值,然后将坐标输入到神经网络中去,竞争出来一个优胜点,然后计算出离这个点最近的邻居,然后修改优胜点和他的邻居的

3.运行程序,结果图示。

图3

3.1对101个城市进行处理的结果截图,分别运行3次,结果图是否一样?

为什么?

三次的结果不一样,如下三个图所示,原因是初始状态的选取是随机的,不一定那个点就是优胜点,而且结果也是最优路径的近似值,并不是完全的最优路径,所以结果也是不尽相同的。

但是,每次结果的误差都很小,所以这种算法还是可行的。

图4

图5

图6

3.2对29个城市进行处理的结果截图,分别运行3次,结果图是否一样?

图7

图8

图9

由以上三个图可知结果图是一样的,因为点比较少,用SOM算法算出来的路径就是最优路径,因此结果是一样的。

3.3分析学习率alpha的取值范围[0.001,0.1]对结果的影响;

Alpha=0.001时:

time=8.106187s

图10

Alpha=0.01时:

time=9.079510s

图11

Alpha=0.1时:

time=8.741680s

图12

经过试验分析可以得出:

当alpha=0.01这个量级的时候结果是最准确的,而且用时也不是很多,所以经过验证alpha最好取值为0.03,alpha取值太大或者太小的时候都会产生误差。

3.4分析学习率beta的取值范围[0.001,0.5]对结果的影响;

图13beta=0.001time=10.597906s

beta=0.01time=10.601020s

图14

beta=0.1time=6.787424s

图15

beta=0.5time=6.066585s

图16

由以上四个结果可知:

随着beta的增大,运行时间缩短,但是结果最准确而且速度相对快的点在beta等于0.1的时候,所以我们以后运行程序就把beta设置为0.1。

beta的值如果太小的话就无法趋近并且与表示城市的那些点重合,太大的话路线也会变长。

3.5邻居函数F(percent,G)范围的确定参数percent的取值[0.10.8]对结果的影响;

Percent=0.1time=8.014007

图17

Percent=0.2time=7.614537s

图18

Percent=0.4time=7.389752s

图19

Percent=0.8time=7.173295s

图20

随着percent的增大误差率是随之增大的,因此,percent应该取一个较小的值,但是,随着percent的增大,运行时间是减小的,因此,percent也不能是个太小的值,所以由实验得出,percent取0.2的时候效果最好。

四、总结分析

1.程序运行结果的列表,包括7组不同数据、3次不同的运行次数、不同的参数选择的情况下的路径长度、运行时间、以及最短路径的长度。

2.结果列表的文字说明。

3.实验过程当中遇到的问题、教训的总结。

由实验得出,当alpha=0.03,beta=0.1,percent=0.2的时候,运行效果最佳,运行时间较短而且准确性较高。

alpha=0.03,beta=0.1,percent=0.2

图21

图22

运行时间:

time=7.798191s

五、附录源程序

注意:

包括主要功能的注释说明;

如果是自己编写的请特别注明;

如果是参考网上的,注明源代码出处和修改处。

Main

function[]=Main(data,bestpath)

tic%计时

%data:

训练集,有三列,第一列是行标,第二、三列是坐标;

route;

得到的有序的路径;

bestpath:

为最优路径,每行只有一列,表示城市标号

%参数配置

bug=0;

%调试模式1,运行模式0

norm=0;

%是否对数据归一化,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;

%备份

ifnorm==1

%归一化

max1=max(data(:

2));

max2=max(data(:

3));

min1=min(data(:

min2=min(data(:

fori=1:

1:

length(data)

data(i,2)=(data(i,2)-min1)/(max1-min1);

data(i,3)=(data(i,3)-min2)/(max2-min2);

%0到1

end

end

%初始化权重值,W

fori=1:

neutralNum

forj=1:

2

W(i,j)=rand;

%训练

foriter=1:

iterNum

error=0;

%记录精度

forcount=1:

citynum

i=floor(rand*citynum)+1;

%现随机取数据

coord=data(i,2:

3);

%城市的坐标

[winnerIndex,distValSet]=findWinner(coord,W);

%winnerIndex:

找到的优胜者下标;

distValSet;

输入向量与所有的神经元的距离值得集合;

%更新优胜者和邻居的权值

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*adjacentFuncVal*(coord

(1)-W(j,1));

W(j,2)=W(j,2)+beta*adjacentFuncVal*(coord

(2)-W(j,2));

error=error+distValSet(winnerIndex);

%检查精度,精度满足则退出

iferror<

percent

disp('

break'

);

break;

%参数更新

r=round((r-1)*(1-iter/(iterNum)))+1;

%更新半径

beta=beta-beta1/(iterNum);

%更新学习率

%调试工具

ifbug==1

ifiter>

1

cla

%画图

plot(data(:

2),data(:

3),'

ro'

%axis([0,1,0,1]);

holdon;

[path1,path2]=getPath(data,W);

%获取路径

drawPath(path1);

%绘制路径

pause

(1);

%休眠

%统计结果

[distantOfBestPath,distantOfRusultPath,errorRate,]=compareToBestPath(path2,bestpath,data2);

%与最优路径对比,path2:

路径,格式为路径按照行数排序,第二列是城市编号;

最优路径;

data2:

城市坐标数据

str=sprintf('

%s%d%s%d%s%d%s%d'

'

最优路径长度='

distantOfBestPath,'

结果路径长度='

distantOfRusultPath,'

误差率='

errorRate,'

迭代次数='

iter);

title(str);

%axis([-0.2,1.2,-0.2,1.2]);

[path1,path2]=getPath(data,W)%获取路径

[distantOfBestPath,distantOfRusultPath,errorRate,data3]=compareToBestPath(path2,bestpath,data2);

%s%d%s%d%s%d'

errorRate);

%画最优路径

figure;

plot(data3(:

1),data3(:

2),'

ro-'

title('

最优路径'

iter

toc%完毕

findWinner:

function[winnerIndex,distValSet]=findWinner(A,W)

A:

输入的向量W:

所有神经元的权重值的集合

iputDim=length(A);

%iputDim:

输入向量的维度值

neuNum=length(W);

winnerIndex=1;

%计算输入的向量W:

所有神经元的权重之间的距离

neuNum

distant=0;

iputDim

distant=distant+(A(j)-W(i,j))^2;

distValSet(i)=sqrt(distant);

ifi>

ifdistValSet(winnerIndex)>

distValSet(i)

winnerIndex=i;

compareToBestPath:

function[distantOfBestPath,distantOfRusultPath,errorRate,data2]=compareToBestPath(path2,bestpath,data)

data:

城市坐标数据;

最优路径

%的坐标数据

dist1=0;

dist2=0;

data2(1,:

)=data(bestpath(1,1),2:

(length(bestpath)-1)

cityNum1=bestpath(i,1);

cityNum2=bestpath(i+1,1);

cityPos1=data(cityNum1,2:

cityPos2=data(cityNum2,2:

data2(i+1,:

)=data(cityNum2,2:

d=(cityPos1

(1)-cityPos2

(1))^2+(cityPos1

(2)-cityPos2

(2))^2;

d=sqrt(d);

dist1=dist1+d;

cityNum1=bestpath(1,1);

cityNum2=bestpath(length(bestpath),1);

cityPos1=data(cityNum1,2:

cityPos2=data(cityNum2,2:

d=(cityPos1

(1)-cityPos2

(1))^2+(cityPos1

(2)-cityPos2

(2))^2;

d=sqrt(d);

dist1=dist1+d;

distantOfBestPath=dist1;

%最优路径长度

(length(path2)-1)

cityNum1=path2(i,2);

cityNum2=path2(i+1,2);

dist2=dist2+d;

cityNum1=path2(1,2);

cityNum2=path2(length(path2),2);

dist2=dist2+d;

distantOfRusultPath=dist2;

%结果路径长度

errorRate=(distantOfRusultPath-distantOfBestPath)/distantOfBestPath;

%误差率

注:

部分核心代码来源于网络以及参照老师给的代码。

自己增加一些功能,就是输出最优路径长度,及结果路径长度,进行对比。

本次实验,获益匪浅,明白了SOM神经网络算法的本质,感谢老师!

指导教师批阅意见:

实验报告内容的确完整性

(20分)

实验步骤的清晰程度

实验数据的准确性

实验结果和分析的正确性

实验态度(实验表现、格式排版、独立完成、按时提交)(20分)

完整

20

较完整

15

不够完整

10

清晰

较清晰

不够清晰

准确

较准确

不够准确

正确

较正确

不够正确

规范

较规范

不够规范

说明:

成绩评定:

指导教师签字:

朱安民

2016年6月16日

备注:

1、报告内的项目或内容设置,可根据实际情况加以调整和补充。

2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2