鄭華-2150230505-SOM網(wǎng)絡(luò)模型_第1頁
鄭華-2150230505-SOM網(wǎng)絡(luò)模型_第2頁
鄭華-2150230505-SOM網(wǎng)絡(luò)模型_第3頁
鄭華-2150230505-SOM網(wǎng)絡(luò)模型_第4頁
鄭華-2150230505-SOM網(wǎng)絡(luò)模型_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、SOM網(wǎng)絡(luò)模型應(yīng)用,鄭華,頁碼20深 圳 大 學 實 驗 報 告實驗課程名稱: 人工神經(jīng)網(wǎng)絡(luò) 實驗項目名稱: SOM網(wǎng)絡(luò)模型應(yīng)用 學院: 計算機與軟件學院 專業(yè): 軟件工程 報告人: 鄭華 學號: 2150230505 班級: 15級 同組人: 無 指導教師: 朱安民 實驗時間: 2016-5-30 實驗報告提交時間: 2016-5-31 教務(wù)處制一、 實驗?zāi)康睦斫獠⑹煜ふ莆誗OM算法,利用SOM神經(jīng)網(wǎng)絡(luò)解決TSP旅行銷售商問題。二、 實驗內(nèi)容1)假設(shè)有一個旅行商人要拜訪n個城市,他必須選擇所要走的路徑,路徑的限制是每個城市只能拜訪一次,而且最后要回到原來出發(fā)的城市。路徑的選擇目標是要求所經(jīng)過

2、的路徑路程最短。2)設(shè)計一個SOM神經(jīng)網(wǎng)絡(luò),解決TSP旅行銷售員問題。并且與最佳路徑進行比較,參數(shù)如何選取,如何優(yōu)化算法。3)試分析如何將網(wǎng)絡(luò)設(shè)計擴展到解決多個旅行銷售員的MTSP問題。即有多個旅行銷售商,他們共同完成每個城市的拜訪,并且每個城市只能去一次,所有的加起來經(jīng)過的路程最短。三、 實驗步驟1. 網(wǎng)絡(luò)設(shè)計,包括輸入層、輸出層節(jié)點個數(shù)的設(shè)計,為什么如此設(shè)計;圖1上圖出自朱安民教授的課件。輸入層節(jié)點個數(shù)為2,即為每個城市的坐標。輸出層節(jié)點個數(shù)為城市的個數(shù)29。2. 算法步驟;圖2上圖出自朱安民教授的課件。首先要初始化神經(jīng)網(wǎng)絡(luò)的權(quán)值,然后將坐標輸入到神經(jīng)網(wǎng)絡(luò)中去,競爭出來一個優(yōu)勝點,然后計算

3、出離這個點最近的鄰居,然后修改優(yōu)勝點和他的鄰居的3. 運行程序,結(jié)果圖示。 圖33.1對101個城市進行處理的結(jié)果截圖,分別運行3次,結(jié)果圖是否一樣?為什么? 三次的結(jié)果不一樣,如下三個圖所示,原因是初始狀態(tài)的選取是隨機的,不一定那個點就是優(yōu)勝點,而且結(jié)果也是最優(yōu)路徑的近似值,并不是完全的最優(yōu)路徑,所以結(jié)果也是不盡相同的。但是,每次結(jié)果的誤差都很小,所以這種算法還是可行的。圖4圖5圖63.2對29個城市進行處理的結(jié)果截圖,分別運行3次,結(jié)果圖是否一樣?為什么?圖7圖8圖9 由以上三個圖可知結(jié)果圖是一樣的,因為點比較少,用SOM算法算出來的路徑就是最優(yōu)路徑,因此結(jié)果是一樣的。3.3分析學習率al

4、pha的取值范圍0.001,0.1對結(jié)果的影響;Alpha=0.001時: time= 8.106187s圖10Alpha=0.01時: time= 9.079510s圖11Alpha=0.1時: time= 8.741680s圖12 經(jīng)過試驗分析可以得出: 當alpha=0.01這個量級的時候結(jié)果是最準確的,而且用時也不是很多,所以經(jīng)過驗證alpha最好取值為0.03,alpha取值太大或者太小的時候都會產(chǎn)生誤差。3.4分析學習率beta的取值范圍0.001,0.5對結(jié)果的影響;圖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由以上四個結(jié)果可知: 隨著beta的增大,運行時間縮短,但是結(jié)果最準確而且速度相對快的點在beta等于0.1的時候,所以我們以后運行程序就把beta設(shè)置為0.1。beta的值如果太小的話就無法趨近并且與表示城市的那些點重合,太大的話路線也會變長。3.5鄰居函數(shù)F(percent, G)范圍的確定參數(shù)percent的取值0.1 0.8對結(jié)果的影響;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由以上四個結(jié)果可知: 隨著percent的增大誤差率是隨之增大的,因此,percent應(yīng)該取一個較小的值,但是,隨著percent的增大,運行時間是減小的,因此,percent也不能是個太小的值,所以由實驗得出,percent取0.2的時候效果最好。四、總結(jié)分析1程序運行結(jié)果的列表,包括7組不同數(shù)據(jù)、3次不同的運行次數(shù)、不同的參數(shù)選擇的情況下的路徑長度、運行時間、以及最短路徑的長度。2結(jié)果列表的文字說明。3實驗過程當中遇到的問題、教訓的總結(jié)。由實驗得出,當alpha=0.03,beta=0.1,

7、percent=0.2的時候,運行效果最佳,運行時間較短而且準確性較高。alpha=0.03,beta=0.1,percent=0.2圖21圖22運行時間:time= 7.798191s五、附錄源程序注意:包括主要功能的注釋說明;如果是自己編寫的請?zhí)貏e注明;如果是參考網(wǎng)上的,注明源代碼出處和修改處。 Mainfunction =Main(data,bestpath)tic%計時%data :訓練集,有三列,第一列是行標,第二、三列是坐標;route; 得到的有序的路徑;bestpath:為最優(yōu)路徑,每行只有一列,表示城市標號%參數(shù)配置bug=0;%調(diào)試模式1,運行模式0norm=0;%是否對數(shù)

8、據(jù)歸一化,1:歸一化;0:不歸一化alpha=0.03;beta=0.1;%學習率beta1=beta;%學習率percent=0.2;citynum=length(data);%城市數(shù)目neutralNum=citynum*2;%輸出神經(jīng)元數(shù)目r=10;%初始半徑iterNum=1000;%定義迭代數(shù)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%初始化權(quán)重值,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;%現(xiàn)隨機取數(shù)據(jù) coord=data(i,2:3);%城市的坐標 winnerIndex,distValSet =findWinner(coord,W);

10、%winnerIndex :找到的優(yōu)勝者下標;distValSet;輸入向量與所有的神經(jīng)元的距離值得集合; %更新優(yōu)勝者和鄰居的權(quán)值 for j=1:1:neutralNum dist1=dist(winnerIndex,j,neutralNum);%dist(i,j,M) 計算s神經(jīng)元i與優(yōu)勝神經(jīng)元j之間的距離,其中M為總的神經(jīng)元 adjacentFuncVal =adjacentFunction(dist1, r);%findWinner(A,W) 求近鄰函數(shù)的結(jié)果值;dist; 神經(jīng)距離優(yōu)勝神經(jīng)元的距離; r;本次迭代的近鄰半徑 %更新權(quán)值 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 %參數(shù)更新 r= round(r-1)*(1-iter/(iterNum)+1; %更新半徑 beta=beta-beta1/(iterNum); %更新學習率 %調(diào)試工具 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);%休眠 %統(tǒng)計結(jié)果 distantOfBestPath,distantOfRusultPath,errorRate, =compareToBestPath(path2,bestpath,data2);%與最優(yōu)路徑對比,path2:路徑,格式為路徑按照行數(shù)排序,第二列是城市編號;bestpath:

13、最優(yōu)路徑;data2:城市坐標數(shù)據(jù) str=sprintf('%s%d%s%d%s%d%s%d','最優(yōu)路徑長度=',distantOfBestPath,' ;結(jié)果路徑長度=',distantOfRusultPath,' ;誤差率=',errorRate,' ;迭代次數(shù)=',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);%休眠 %統(tǒng)計結(jié)果 distantOfBestPath,distantOfRusultPath,errorRate,data3 =compareToBestPath(path2,bestpath,data2);%與最優(yōu)路徑對比,path2:路徑,格式為路徑按照行數(shù)排序,第二列是城市編號;bestpath:最優(yōu)路徑;data2:城市坐標數(shù)據(jù) str=sprintf('%s%d%s%d%s%d','最優(yōu)路徑長度=',distantOfBestPath,

15、9; ;結(jié)果路徑長度=',distantOfRusultPath,' ;誤差率=',errorRate); title(str); %畫最優(yōu)路徑 figure; plot(data3(:,1),data3(:,2),'ro-'); title('最優(yōu)路徑'); iter toc%完畢f(xié)indWinner:function winnerIndex,distValSet =findWinner(A,W)%winnerIndex :找到的優(yōu)勝者下標;distValSet;輸入向量與所有的神經(jīng)元的距離值得集合;A:輸入的向量 W:所有神經(jīng)元的權(quán)重

16、值的集合iputDim=length(A);%iputDim:輸入向量的維度值neuNum=length(W);%輸出神經(jīng)元數(shù)目winnerIndex=1;%計算輸入的向量 W:所有神經(jīng)元的權(quán)重之間的距離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)%與最優(yōu)路徑對比,path2:路徑,格式為路徑按照行數(shù)排序,第二列是城市編號;bestpath:最優(yōu)路徑;data:城市坐標數(shù)據(jù);data2:最優(yōu)路徑%的坐標數(shù)據(jù)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;%最優(yōu)路徑長度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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論