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

下載本文檔

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

文檔簡(jiǎn)介

1、%讀取數(shù)據(jù)data=xlsread('data.xls');%訓(xùn)練預(yù)測(cè)數(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進(jìn)行字標(biāo)準(zhǔn)化預(yù)處理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)絡(luò)訓(xùn)練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:染色體的長(zhǎng)度%chrominput:染色體群%sizepopinput:種群規(guī)模%retoutput:交叉后的染色體fori=1:sizepop%每一輪f

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

5、隨機(jī)選擇進(jìn)行交叉的位置,即選擇第幾個(gè)變%交叉結(jié)束%險(xiǎn)驗(yàn)染色體1的可行性%險(xiǎn)驗(yàn)染色體2的可行性endpos=ceil(pick.*sum(lenchrom);量進(jìn)行交叉,注意:兩個(gè)染色體交叉的位置相同pick=rand;%5叉開(kāi)始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%如果兩個(gè)染色體不是都可行,則重新交叉endendret=chrom;%清空環(huán)境變量clcclear%網(wǎng)絡(luò)結(jié)構(gòu)建立%讀取數(shù)據(jù)loaddatainputoutput%節(jié)點(diǎn)個(gè)數(shù)inputnum=2;hiddennum=5;outputnum=1;%訓(xùn)練數(shù)據(jù)和預(yù)測(cè)數(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)絡(luò)net=newff(inputn,outputn,hiddennum);%遺傳算法參數(shù)初始化maxgen=10;%進(jìn)化代數(shù),即迭代次數(shù)sizepop=10;%中群規(guī)模pcross=0.3;%交叉概率選擇,0和1之間pmutation=0.1;做異概率選擇,0和1之間%節(jié)點(diǎn)總數(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',);%等種群信息定義為一個(gè)結(jié)構(gòu)體avgfitness=;%每一代種群的平均適應(yīng)度bestfitness=;%每一代種群的最佳適應(yīng)度bestchrom=;%適應(yīng)度最好的染色體%初始化種群fori=1:sizepop%!機(jī)產(chǎn)生一個(gè)種群individuals.

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

10、vgfitness=sum(individuals.fitness)/sizepop;礎(chǔ)色體的平均適應(yīng)度%記錄每一代進(jìn)化中最好的適應(yīng)度和平均適應(yīng)度trace=avgfitnessbestfitness;%迭代求解最佳初始閥值和權(quán)值%進(jìn)化開(kāi)始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);%計(jì)算適應(yīng)度f(wàn)orj=1:sizepopx=individuals.chrom(j,:);%單碼individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);end%找到最小和最大適應(yīng)度的染色體及它們?cè)诜N群中的位置newbestfitness,newbestindex=min(individuals.fitness);worest

12、fitness,worestindex=max(individuals.fitness);%代替上一次進(jìn)化中最好的染色體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;%記錄每一代進(jìn)化中最好的適應(yīng)度和平均適應(yīng)度end%遺傳算法結(jié)果分析figure(1)rc=size(trace);plot(1:r',trace(:,2),'b-');title('適應(yīng)度曲線''終止代數(shù)='num2str(maxgen);xlabel('進(jìn)化代數(shù));ylabel('適應(yīng)度');legend('平均適應(yīng)度,最佳適應(yīng)度);disp('適應(yīng)度變量);x=bestchrom;%把最優(yōu)初始閥值權(quán)值賦予網(wǎng)絡(luò)預(yù)測(cè)%用遺傳算法優(yōu)化的BP

14、網(wǎng)絡(luò)進(jìn)行值預(yù)測(cè)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)絡(luò)訓(xùn)練%網(wǎng)絡(luò)進(jìn)化參數(shù)net.trainParam.epochs=100;net.trainParam.lr=0.1;%net.trainPa

溫馨提示

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

評(píng)論

0/150

提交評(píng)論