遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡實現(xiàn)代碼_第1頁
遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡實現(xiàn)代碼_第2頁
遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡實現(xiàn)代碼_第3頁
遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡實現(xiàn)代碼_第4頁
遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡實現(xiàn)代碼_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、%讀取數(shù)據(jù)data=xlsread('data.xls');%訓練預測數(shù)據(jù)data_train=data(1:113,:);data_test=data(118:123,:);input_train=data_train(:,1:9),;output_train=data_train(:,10)'input_test=data_test(:,1:9),;output_test=data_test(:,10)'%數(shù)據(jù)歸一化inputn,mininput,maxinput,outputn,minoutput,maxoutput=premnmx(input_train

2、,output_train);%寸p和t進行字標準化預處理net=newff(minmax(inputn),10,1,'tansig','purelin','trainlm');net.trainParam.epochs=100;net.trainParam.lr=0.1;net.trainParam.goal=0.00001;%net.trainParam.show=NaN%網(wǎng)絡訓練net=train(net,inputn,outputn);%數(shù)據(jù)歸一化inputn_test=tramnmx(input_test,mininput,maxinp

3、ut);an=sim(net,inputn);test_simu=postmnmx(an,minoutput,maxoutput);error=test_simu-output_train;plot(error)k=error./output_trainfunctionret=Cross(pcross,lenchrom,chrom,sizepop,bound)%本函數(shù)完成交叉操作%pcorssinput:交叉概率%lenchrominput:染色體的長度%chrominput:染色體群%sizepopinput:種群規(guī)模%retoutput:交叉后的染色體fori=1:sizepop%每一輪f

4、or循環(huán)中,可能會進行一次交叉操作,染色體是隨機選擇的,交叉位置也是隨機選擇的,但該輪for循環(huán)中是否進行交叉操作則由交叉概率決定(continue控制)%隨機選擇兩個染色體進行交叉pick=rand(1,2);whileprod(pick)=0pick=rand(1,2);endindex=ceil(pick.*sizepop);%交叉概率決定是否進行交叉pick=rand;whilepick=0pick=rand;endifpick>pcrosscontinue;endflag=0;whileflag=0%隨機選擇交叉位pick=rand;whilepick=0pick=rand;%

5、隨機選擇進行交叉的位置,即選擇第幾個變%交叉結束%險驗染色體1的可行性%險驗染色體2的可行性endpos=ceil(pick.*sum(lenchrom);量進行交叉,注意:兩個染色體交叉的位置相同pick=rand;%5叉開始v1=chrom(index(1),pos);v2=chrom(index(2),pos);chrom(index(1),pos)=pick*v2+(1-pick)*v1;chrom(index(2),pos)=pick*v1+(1-pick)*v2;flag1=test(lenchrom,bound,chrom(index(1),:);flag2=test(lench

6、rom,bound,chrom(index(2),:);ifflag1*flag2=0flag=0;elseflag=1;end%如果兩個染色體不是都可行,則重新交叉endendret=chrom;%清空環(huán)境變量clcclear%網(wǎng)絡結構建立%讀取數(shù)據(jù)loaddatainputoutput%節(jié)點個數(shù)inputnum=2;hiddennum=5;outputnum=1;%訓練數(shù)據(jù)和預測數(shù)據(jù)input_train=input(1:1900,:)'input_test=input(1901:2000,:)'output_train=output(1:1900)'output_

7、test=output(1901:2000)'%選連樣本輸入輸出數(shù)據(jù)歸一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train);%勾建網(wǎng)絡net=newff(inputn,outputn,hiddennum);%遺傳算法參數(shù)初始化maxgen=10;%進化代數(shù),即迭代次數(shù)sizepop=10;%中群規(guī)模pcross=0.3;%交叉概率選擇,0和1之間pmutation=0.1;做異概率選擇,0和1之間%節(jié)點總數(shù)numsum=inputnum*hiddennum+hiddennum+h

8、iddennum*outputnum+outputnum;lenchrom=ones(1,numsum);bound=-3*ones(numsum,1)3*ones(numsum,1);磁據(jù)范圍%種群初始化individuals=struct('fitness',zeros(1,sizepop),'chrom',);%等種群信息定義為一個結構體avgfitness=;%每一代種群的平均適應度bestfitness=;%每一代種群的最佳適應度bestchrom=;%適應度最好的染色體%初始化種群fori=1:sizepop%!機產(chǎn)生一個種群individuals.

9、chrom(i,:)=Code(lenchrom,bound);哪碼(binary和grey胖編碼結果為一個實數(shù),float的編碼結果為一個實數(shù)向量)x=individuals.chrom(i,:);%十算適應度individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);礎色體的適應度end%找最好的染色體bestfitnessbestindex=min(individuals.fitness);bestchrom=individuals.chrom(bestindex,:);%>好的染色體a

10、vgfitness=sum(individuals.fitness)/sizepop;礎色體的平均適應度%記錄每一代進化中最好的適應度和平均適應度trace=avgfitnessbestfitness;%迭代求解最佳初始閥值和權值%進化開始fori=1:maxgeni%選擇individuals=Select(individuals,sizepop);avgfitness=sum(individuals.fitness)/sizepop;伙叉individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);%變異i

11、ndividuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);%計算適應度forj=1:sizepopx=individuals.chrom(j,:);%單碼individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);end%找到最小和最大適應度的染色體及它們在種群中的位置newbestfitness,newbestindex=min(individuals.fitness);worest

12、fitness,worestindex=max(individuals.fitness);%代替上一次進化中最好的染色體ifbestfitness>newbestfitnessbestfitness=newbestfitness;bestchrom=individuals.chrom(newbestindex,:);endindividuals.chrom(worestindex,:)=bestchrom;individuals.fitness(worestindex)=bestfitness;avgfitness=sum(individuals.fitness)/sizepop;tra

13、ce=trace;avgfitnessbestfitness;%記錄每一代進化中最好的適應度和平均適應度end%遺傳算法結果分析figure(1)rc=size(trace);plot(1:r',trace(:,2),'b-');title('適應度曲線''終止代數(shù)='num2str(maxgen);xlabel('進化代數(shù));ylabel('適應度');legend('平均適應度,最佳適應度);disp('適應度變量);x=bestchrom;%把最優(yōu)初始閥值權值賦予網(wǎng)絡預測%用遺傳算法優(yōu)化的BP

14、網(wǎng)絡進行值預測w1=x(1:inputnum*hiddennum);B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);net.iw1,1=reshape(w1,hiddennum,inputnum);net.lw2,1=reshape(w2,outputnum,hiddennum);net.b1=reshape(B1,hiddennum,1);net.b2=B2;%BP網(wǎng)絡訓練%網(wǎng)絡進化參數(shù)net.trainParam.epochs=100;net.trainParam.lr=0.1;%net.trainPa

溫馨提示

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

評論

0/150

提交評論