資源描述:
《08遺傳算法優(yōu)化bp神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值的通用matlab源碼》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、歡迎訪問GreenSim團(tuán)隊(duì)主頁→http://blog.sina.com.cn/greensim郵箱:greensim@163.com遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值的通用MATLAB源代碼遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)有兩種情況,一種是把訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)作為黑箱函數(shù),用遺傳算法搜索該黑箱函數(shù)的最優(yōu)解;另外一種,則是把遺傳算法用于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,充分利用遺傳算法全局搜索的特性,得到一個(gè)初始的權(quán)值矩陣和初始的閾值向量,再用其它訓(xùn)練算法(如BP算法),得到最終的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。GreenSim團(tuán)隊(duì)大量實(shí)踐證明,這種
2、GA和BP網(wǎng)絡(luò)相結(jié)合的方法,能顯著地提高BP神經(jīng)網(wǎng)絡(luò)的性能,基本上和支持向量機(jī)的性能相當(dāng),有時(shí)甚至優(yōu)于支持向量機(jī)。由于BP網(wǎng)絡(luò)的權(quán)值優(yōu)化是一個(gè)無約束優(yōu)化問題,而且權(quán)值要采用實(shí)數(shù)編碼,所以直接利用Matlab遺傳算法工具箱。以下貼出的代碼是為一個(gè)19輸入變量,1個(gè)輸出變量情況下的非線性回歸而設(shè)計(jì)的,如果要應(yīng)用于其它情況,只需改動(dòng)編解碼函數(shù)即可。程序一:GA訓(xùn)練BP權(quán)值的主函數(shù)functionnet=GABPNET(XX,YY)%---------------------------------------
3、-----------------------------------%GABPNET.m%使用遺傳算法對BP網(wǎng)絡(luò)權(quán)值閾值進(jìn)行優(yōu)化,再用BP算法訓(xùn)練網(wǎng)絡(luò)%GreenSim團(tuán)隊(duì)——專業(yè)級算法設(shè)計(jì)&代寫程序%歡迎訪問GreenSim團(tuán)隊(duì)主頁→http://blog.sina.com.cn/greensim%--------------------------------------------------------------------------%數(shù)據(jù)歸一化預(yù)處理nntwarnoffXX=premnm
4、x(XX);YY=premnmx(YY);%創(chuàng)建網(wǎng)絡(luò)net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'trainlm');%下面使用遺傳算法對網(wǎng)絡(luò)進(jìn)行優(yōu)化P=XX;T=YY;R=size(P,1);S2=size(T,1);S1=25;%隱含層節(jié)點(diǎn)數(shù)aa=ones(S,1)*[-1,1];popu=50;%種群規(guī)模initPpp=initializega(popu,aa,'gabpEval');%初始化種群gen=100;%遺傳代
5、數(shù)%下面調(diào)用gaot工具箱,其中目標(biāo)函數(shù)定義為gabpEval[x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-611],'maxGenTerm',gen,...'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2gen3]);%繪收斂曲線圖figure(1)第4頁歡迎訪問GreenSim團(tuán)隊(duì)主頁→http://blog.sina.com.cn/greensim郵箱:gre
6、ensim@163.complot(trace(:,1),1./trace(:,3),'r-');holdonplot(trace(:,1),1./trace(:,2),'b-');xlabel('Generation');ylabel('Sum-SquaredError');figure(2)plot(trace(:,1),trace(:,3),'r-');holdonplot(trace(:,1),trace(:,2),'b-');xlabel('Generation');ylabel('Fittn
7、ess');%下面將初步得到的權(quán)值矩陣賦給尚未開始訓(xùn)練的BP網(wǎng)絡(luò)[W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x);net.LW{2,1}=W1;net.b{2,1}=B1;net.b{3,1}=B2;XX=P;YY=T;%設(shè)置訓(xùn)練參數(shù)net.trainParam.show=1;net.trainParam.lr=1;net.trainParam.epochs=50;net.trainParam.goal=0.001;%訓(xùn)練網(wǎng)絡(luò)net=train(net,XX,YY);程
8、序二:適應(yīng)值函數(shù)function[sol,val]=gabpEval(sol,options)%val-thefittnessofthisindividual%sol-theindividual,returnedtoallowforLamarckianevolution%options-[current_generation]loaddata2nntwarnoffXX=premnmx(XX);YY=premnmx(YY);P=XX;T=YY