MATLAB神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)解讀_第1頁
MATLAB神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)解讀_第2頁
MATLAB神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)解讀_第3頁
MATLAB神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)解讀_第4頁
MATLAB神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)解讀_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、12 遺傳神經(jīng)網(wǎng)絡(luò) 本章要點(diǎn) 遺傳算法的概念 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的過程 遺傳神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的基本方法及設(shè)計(jì)實(shí)例12.1 遺傳算法的概念 遺傳算法(Genetic Algorithm, GA)是一種基于自然選擇和基因遺傳學(xué)原理的優(yōu)化搜索方法。它將“優(yōu)勝劣態(tài),適者生存”的生物進(jìn)化原理引入待優(yōu)化參數(shù)形成的編碼串群體中,按照一定的適配值函數(shù)及一系列遺傳操作對各個體進(jìn)行篩選,從而使適配值高的個體被保留下來,組成新的群體,新群體包含上一代的大量信息,并且引入了新的優(yōu)于上一代的個體。這樣周而復(fù)始,群體中各個體的適應(yīng)度不斷提高,直至滿足一定的條件為止。 基本遺傳算法大都包含如下四個操作: 編碼、選擇、交叉和變

2、異。12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò) 遺傳算法編碼 1. 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)編碼 ()二進(jìn)制編碼 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的二進(jìn)制編碼圖: 碼串共分為3個部分,碼串 表示隱含層數(shù),其中, 的值為1或0, ,碼串表示第一層隱含層 Lb12121 ,02,0Lb bb b= = 12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò) 節(jié)點(diǎn)數(shù),碼串表示第二層隱含層節(jié)點(diǎn)數(shù),有 如下計(jì)算關(guān)系: 其中, 表示隱含層節(jié)點(diǎn)數(shù)編碼的長度, 其值視具體問題而定。j12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)()整數(shù)編碼 整數(shù)編碼就是將隱含層數(shù)編碼 ,隱含層節(jié)點(diǎn)數(shù)編碼 、 分別用某一范圍內(nèi)的整數(shù)來表示。也就是說 取整數(shù)值1或2,整數(shù) 、 的取值范圍視具體問題而定。 GA優(yōu)

3、化NN結(jié)構(gòu)的算法步驟如下: 1)設(shè)定網(wǎng)絡(luò)隱含層數(shù),以及每層節(jié)點(diǎn)數(shù)的范圍,將隱含層個數(shù)、第一層、第二層等的節(jié)點(diǎn)數(shù)采用實(shí)數(shù)分別進(jìn)行編碼,隨機(jī)產(chǎn)生 個這樣編碼的染色體。將 個染色體分別解碼成相應(yīng)的網(wǎng)絡(luò); L1l2lL1l2lNN12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)2)利用多種不同的初始連接權(quán)值分別對每個網(wǎng)絡(luò)進(jìn)行訓(xùn)練; 3)計(jì)算在每個對應(yīng)碼鏈下神經(jīng)網(wǎng)絡(luò)的誤差函數(shù),利用誤差函數(shù)或其他策略(如網(wǎng)絡(luò)的泛化能力或結(jié)構(gòu)復(fù)雜度)確定每個個體的適應(yīng)度函數(shù); 4)選擇若干適應(yīng)度函數(shù)值最大的個體構(gòu)成父本; 5)利用交叉,變異等遺傳操作算子對當(dāng)前一代群體進(jìn)行處理,產(chǎn)生新一代群體; 6)重復(fù)上述2)-5)步驟,直到群體中的某個個

4、體(對應(yīng)一個網(wǎng)絡(luò)結(jié)構(gòu))能滿足要求為止。 12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)2. 網(wǎng)絡(luò)參數(shù)編碼 以 B P 神 經(jīng) 網(wǎng) 絡(luò) 為 例 。 設(shè) 其 隱 含 層 傳 遞 函 數(shù) 為 S i g m o i d 函數(shù): 。則 為形狀參數(shù), 設(shè) 分別表示第一層與第二層,第二層與第三層,第三層與第四層節(jié)點(diǎn)的連接權(quán)值,設(shè) 分別為隱含層第一層和第二層節(jié)點(diǎn)以及輸出層節(jié)點(diǎn)的閾值。1( )2,0(1)xxef xebbbb-=+b123,WWW124,BBB12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)()二進(jìn)制編碼網(wǎng)絡(luò)參數(shù)的二進(jìn)制編碼圖: 12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)()實(shí)數(shù)編碼 網(wǎng)絡(luò)參數(shù)的實(shí)數(shù)編碼圖:12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)

5、實(shí)數(shù)編碼GA優(yōu)化NN結(jié)構(gòu)和參數(shù)的算法步驟如下: 1)給定網(wǎng)絡(luò)的輸入、輸出樣本集; )對網(wǎng)絡(luò)的參數(shù)進(jìn)行編碼構(gòu)成染色體; )選擇遺傳操作,選擇,交叉和變異及其運(yùn)行參數(shù); )設(shè)定種群規(guī)模并隨機(jī)產(chǎn)生個染色體; )由輸入樣本經(jīng)網(wǎng)絡(luò)傳輸產(chǎn)生對應(yīng)于個染色體的網(wǎng)絡(luò)輸出; )根據(jù)選擇的適應(yīng)度函數(shù)計(jì)算方式來計(jì)算每個染色體的適應(yīng)度; )依據(jù)適應(yīng)度在遺傳空間進(jìn)行選擇操作; )進(jìn)行交叉、變異操作產(chǎn)生新一代群體; )返回步驟5),直到滿足性能要求,最后獲得網(wǎng)絡(luò)的參數(shù)。 12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)遺傳操作 在各種選擇方法中除了排擠方法以外,其它選擇方法對于實(shí)數(shù)編碼GA都是適用的。如適應(yīng)度比例方法、最佳個體保存方法等。實(shí)

6、數(shù)編碼GA通常采用算術(shù)交叉法。變異方式可根據(jù)所解決問題的特點(diǎn)進(jìn)行合理選擇。適應(yīng)度函數(shù) 目標(biāo)函數(shù)可選為:2111( )( )2qsmttktJy ky k=驏=-桫邋適應(yīng)度函數(shù)形式: ()1mmfitJd-=+( )y k:期望輸出 ( )y k:網(wǎng)絡(luò)當(dāng)前輸出 12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì) 遺傳神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的基本方法 當(dāng)利用NN解決某一問題時,首先要根據(jù)該問題的特點(diǎn),選擇適合的NN模型。確定好使用的網(wǎng)絡(luò)模型后,接下來就要進(jìn)行網(wǎng)絡(luò)的設(shè)計(jì)。其設(shè)計(jì)部分主要包括:確定網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)、網(wǎng)絡(luò)的連接權(quán)值及閾值等。利用GA 可以搜索到以上問題的最優(yōu)解。 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)實(shí)例 設(shè)計(jì)一個遺傳BP網(wǎng)絡(luò),來逼近非

7、線性函數(shù)。函數(shù)的輸入輸出為:P=-1:.05:1,T=sin(pi * P)。12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)畫出函數(shù)曲線:figure(1);P=-1:.05:1;T=sin(pi* P);plot(P,T); %畫出函數(shù)曲線12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)()首先要利用GA優(yōu)化該BP網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),采用二進(jìn)制編碼,Matlab代碼如下:clc;clear all;tic %計(jì)算程序運(yùn)行時間,和toc連用,tic表示開始,toc表示結(jié)束NIND=40; %種群規(guī)模MAXGEN=100; %最大運(yùn)行代數(shù)GGAP=0.9; %代溝trace=zeros(1,MAXGEN); % 用于存儲訓(xùn)練誤差Ch

8、rom=crtbp(NIND,10); %創(chuàng)建初始種群gen=0; %代計(jì)數(shù)器ObjV=(objv2s(Chrom,40);while genMAXGEN, FitnV=ranking(ObjV); SelCh=select(sus,Chrom,FitnV,GGAP);12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)SelCh=recombin(xovsp,SelCh,0.7); SelCh=mut(SelCh); ObjVSel=(objv2s(SelCh,36); Chrom ObjV=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); gen=gen+1; Jm index=min(

9、ObjV); %記錄最優(yōu)目標(biāo)函數(shù)值的變化 trace(gen,1)=Jm; if (gen=1) t(gen,1)=toc; elset(gen,1)=toc+t(gen-1,1); endendLy=Chrom(index,:); %訓(xùn)練結(jié)束后,記錄最優(yōu)個體figure(2);plot(1:100,trace); %畫出訓(xùn)練誤差變化曲線12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)()下面為被調(diào)用函數(shù)。將每個染色體解碼成一個網(wǎng)絡(luò)結(jié)構(gòu),分別計(jì)算在該結(jié)構(gòu)下,網(wǎng)絡(luò)的測試輸出與期望輸出的誤差值,該組誤差值被返回到主程序中,用以衡量每個染色體性能的好壞,從而選出性能優(yōu)良的染色體,經(jīng)過GA的不斷進(jìn)化,最終獲得網(wǎng)絡(luò)拓?fù)浣Y(jié)

10、構(gòu)。 function Ye=objvs(Chr,m) P=-1:.05:1; T=sin(pi* P); for k=1:m if (Chr(k,1)=0) & (Chr(k,2)=0) % 只有一個隱含層 x1=23*Chr(k,6)+22*Chr(k,5)+21*Chr(k,4)+20*Chr(k,3); % 該隱含層神經(jīng)元個數(shù) if x1=0 x1=10; end12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì) net=newff(minmax(P),x1,1,tansig,purelin); %創(chuàng)建BP網(wǎng)絡(luò) else x1=23*Chr(k,6)+22*Chr(k,5)+21*Chr(k,4)+20*

11、Chr(k,3); x2=23*Chr(k,10)+22*Chr(k,9)+21*Chr(k,8)+20*Chr(k,7); if x1=0 x1=10; end if x2=0 x2=8; end net=newff(minmax(P),x1,x2,1,purelin,tansig,purelin); %創(chuàng)建BP網(wǎng)絡(luò) end Y(k,:)=sim(net,P); Ye(k)=sum(Y(k,:)-T).2); k=k+1; end12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)運(yùn)行100代的誤差下降曲線 12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì) 優(yōu)化結(jié)束后,Ly中保存獲得的最優(yōu)解。在matlab命令窗口中輸入Ly,按回

12、車鍵的如下結(jié)果: Ly = 0 0 1 1 0 0 0 1 0 0 Ly中前兩位是網(wǎng)絡(luò)層數(shù)的編碼,由前面的規(guī)定可知,隱含層數(shù)為1,則Ly中的第3到第第六位表示該隱含層的節(jié)點(diǎn)數(shù),為: 。由此便獲得了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。 0 *2 00 *2 11*2 21*2 312+=12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì) 利用GA優(yōu)化該BP網(wǎng)絡(luò)的權(quán)值和閾值,傳遞函數(shù)分別為tansig和purelin,所以不需要優(yōu)化形狀參數(shù)。采用實(shí)數(shù)編碼,Matlab代碼如下:clc;clear all;FieldDR=-20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -1 -1 -1 -1

13、 -1 -1 -1 -1 -1 -1 -1 -1 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -20 -1;20 20 20 20 20 20 20 20 20 20 20 20 1 1 1 1 1 1 1 1 1 1 1 1 20 20 20 20 20 20 20 20 20 20 20 20 1; %權(quán)值和閾值的取值范圍 Chrom=crtrp(40,FieldDR); %產(chǎn)生40個初始群體MAXGEN=200; %最大運(yùn)行代數(shù)GGAP=0.9; %代勾gen=0; %代計(jì)數(shù)器Jm=1;tracec=zeros(MAXGEN,1); % 用于存

14、儲訓(xùn)練誤差ObjV=objv2b(Chrom,40); %調(diào)用obj2b函數(shù)計(jì)算當(dāng)前群體的目標(biāo)函數(shù)值12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì) while (gen0) tic FitnV=ranking(ObjV); maxfit index=max(FitnV); Selch=select(sus,Chrom,FitnV,GGAP); %代勾是0,9, Chrom經(jīng)選擇后 是36個個體 Selch=recombin(reclin,Selch,0.7); %進(jìn)行算術(shù)交叉 Selch=mutate(mutbga,Selch,FieldDR,0.01); %變異 ObjVSel=objv2b(Selch,3

15、6); %求目標(biāo)函數(shù)值 Chrom ObjV=reins(Chrom,Selch,1,1, ObjV,ObjVSel); %重構(gòu)組成40個個體 gen=gen+1; Jm index=min(ObjV); %記錄最優(yōu)目標(biāo)函數(shù)值的變化 tracec(gen,1)=Jm; if (gen=1) t(gen,1)=toc; else t(gen,1)=toc+t(gen-1,1); end end12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì) plot(1:200,tracec,k-.); P=-1:.05:1; T=sin(pi* P); net=newff(minmax(P),12,1,tansig,purel

16、in); %創(chuàng)建BP網(wǎng)絡(luò) net.IW1,1=(Chrom(index,1:12); %獲得網(wǎng)絡(luò)權(quán)值 net.IW2,1=; net.LW1,1=; net.LW1,2=; net.LW2,2=; net.LW2,1=(Chrom(index,13:24); net.b1,1=(Chrom(index,25:36); %獲得網(wǎng)絡(luò)閾值 net.b2,1=Chrom(index,37); y=sim(net,P); %利用優(yōu)化獲得的權(quán)值和閾值進(jìn)行網(wǎng)絡(luò)仿真測試 figure(2) plot(P,y,k-); hold on; plot(P,T,-); xlabel(時間);12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用

17、設(shè)計(jì) ylabel(輸出-目標(biāo)); title(網(wǎng)絡(luò)輸出和系統(tǒng)實(shí)際輸出); figure(3) e=y-T; plot(P,e,min(P) max(P),0 0,:r); AXIS(-1 1 -2 2) xlabel(時間); ylabel(誤差); title(誤差信號); 下面為被調(diào)用函數(shù)。將每個染色體中的實(shí)數(shù)分別解碼為網(wǎng)絡(luò)的權(quán)值和閾值,來計(jì)算網(wǎng)絡(luò)的測試輸出與期望輸出的誤差值,該組誤差值被返回到主程序中,用以衡量每個染色體性能的好壞,從而選出性能優(yōu)良的染色體,經(jīng)過GA的不斷進(jìn)化,最終獲得網(wǎng)絡(luò)權(quán)值和閾值結(jié)果。12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì) function ys=objv2b(Chr,m)

18、 P=-1:.05:1; T=sin(pi* P); net=newff(minmax(P),12,1,tansig,purelin); ys=zeros(m,1); for k=1:m net.IW1,1=(Chr(k,1:12); net.IW2,1=; net.LW1,1=; net.LW1,2=; net.LW2,2=; net.LW2,1=(Chr(k,13:24); net.b1,1=(Chr(k,25:36); net.b2,1=Chr(k,37); yout=sim(net,P); ys(k,1)= sum(yout-T).2); end12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)GA運(yùn)行2

19、00代的誤差下降曲線 12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)仿真輸出與原函數(shù)曲線 12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)仿真測試誤差12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)2)利用多種不同的初始連接權(quán)值分別對每個網(wǎng)絡(luò)進(jìn)行訓(xùn)練; 3)計(jì)算在每個對應(yīng)碼鏈下神經(jīng)網(wǎng)絡(luò)的誤差函數(shù),利用誤差函數(shù)或其他策略(如網(wǎng)絡(luò)的泛化能力或結(jié)構(gòu)復(fù)雜度)確定每個個體的適應(yīng)度函數(shù); 4)選擇若干適應(yīng)度函數(shù)值最大的個體構(gòu)成父本; 5)利用交叉,變異等遺傳操作算子對當(dāng)前一代群體進(jìn)行處理,產(chǎn)生新一代群體; 6)重復(fù)上述2)-5)步驟,直到群體中的某個個體(對應(yīng)一個網(wǎng)絡(luò)結(jié)構(gòu))能滿足要求為止。 12.2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)遺傳操作 在各種選擇方法中除了排擠方

20、法以外,其它選擇方法對于實(shí)數(shù)編碼GA都是適用的。如適應(yīng)度比例方法、最佳個體保存方法等。實(shí)數(shù)編碼GA通常采用算術(shù)交叉法。變異方式可根據(jù)所解決問題的特點(diǎn)進(jìn)行合理選擇。適應(yīng)度函數(shù) 目標(biāo)函數(shù)可選為:2111( )( )2qsmttktJy ky k=驏=-桫邋適應(yīng)度函數(shù)形式: ()1mmfitJd-=+( )y k:期望輸出 ( )y k:網(wǎng)絡(luò)當(dāng)前輸出 12.3 遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)()首先要利用GA優(yōu)化該BP網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),采用二進(jìn)制編碼,Matlab代碼如下:clc;clear all;tic %計(jì)算程序運(yùn)行時間,和toc連用,tic表示開始,toc表示結(jié)束NIND=40; %種群規(guī)模MAXGEN=100; %最大運(yùn)行代數(shù)GGAP=0.9; %代溝trace=zeros(1,MAXGEN); % 用于存儲訓(xùn)練誤差Chrom=crtbp(NIND,10); %創(chuàng)建初始種群gen=0; %代計(jì)數(shù)器ObjV=(objv2s(Chrom,40);while genMA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論