深圳大学实验报告
实验课程名称: 人工神经网络
实验项目名称: SOM网络模型应用
学院: 计算机与软件学院专业: 软件工程
报告人: 文成学号: 2150230509
同组人: 无
指导教师: 朱安民
实验时间: 2016年5月31日
实验报告提交时间: 2016年6月01日
教务处制
实验目的
理解并熟悉掌握SOM算法。
实验内容
1)假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求所经过的路径路程最短。
2)设计一个SOM神经网络,解决TSP旅行销售员问题。
3)试分析如何将网络设计扩展到解决多个旅行销售员的MTSP问题。
实验步骤
网络设计,包括输入层、输出层节点个数的设计,为什么如此设计;
SOM网络的目标是:通过输入数据训练网络,使得当输入数据接近时,输出结果也接近。叫做特征映射(feature map)。
如何达到目标:通过引入竞争学习机制,调节神经网络结点的权值,使得具有类似输入特征的输出结点尽可能相互靠近。
输入层节点个数为2个,即为每个城市的横坐标和纵坐标。输出层节点个数为城市的个数29(y1-y29)。
算法步骤;
仿真实验的过程如上图所示
首先初始化神经网络的权值
将坐标输入到神经网络中去
竞争出来一个优胜点
计算出离这个点最近的邻居
修改优胜点和它邻居的权值,如果权值改变了,那么返回第2步。
结束
运行程序,结果图示。
例如29个城市的图
运行前要先load数据,
data=load('')
bestpath=load('')
Main(data,bestpath)
,分别运行3次,结果图是否一样?为什么?
结果不一样。仔细看可以发现有细微差别。
如下三个图所示。
原因是初始状态的选取是随机的,不一定那个点就是优胜点,而且结果也是最优路径的近似值,并不是完全的最优路径,所以结果也是不尽相同的。但是,每次结果的误差都很小,所以这种算法还是可行的。
,分别运行3次,结果图是否一样?为什么?
结果的图一样,因为点的数量太少,在误差一定的情况下,运行结果是一样的。
[,]对结果的影响;
Alpha=:
Alpha=:
Alpha=: time=
所以当alpha=
[,]对结果的影响;
当beta=
当beta=
当bata=
beta的值如果太小,不可行。
随着beta的增大,运行时间缩短。
,结果最准确而且速度相对快
四、总结分析
程序运行结果的列表,包括7组不同数据、3次不同的运行次数、不同的参数选择的情况下的路径长度、运行时间、以及最短路径的长度。
由实验得出,当alpha=,beta=,percent=,运行效果最佳,运行时间较短而且准确性较高。
alpha=,beta=,percent=
图21
图22
运行时间:time=
五、附录源程序
注:代码主要来源于老师上课时给的代码,而且参考了网上!
Main
function [] =Main(data,bestpath)
tic%计时
%data :训练集,有三列,第一列是行标,第二、三列是坐标;route; 得到的有序的路径;bestpath:为最优路径,每行只有一列,表示城市标号
%参数配置
bug=0;%调试模式1,运行模式0
norm=0;%是否对数据归一化,1:归一化;0:不归一化
alpha=;
beta=;%学习率
beta1=beta;%学习率
percent=;
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
SOM实验报告-文成 来自淘豆网m.daumloan.com转载请标明出处.