神經(jīng)網(wǎng)絡遺傳算法函數(shù)極值尋優(yōu)_第1頁
神經(jīng)網(wǎng)絡遺傳算法函數(shù)極值尋優(yōu)_第2頁
神經(jīng)網(wǎng)絡遺傳算法函數(shù)極值尋優(yōu)_第3頁
神經(jīng)網(wǎng)絡遺傳算法函數(shù)極值尋優(yōu)_第4頁
神經(jīng)網(wǎng)絡遺傳算法函數(shù)極值尋優(yōu)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、神經(jīng)網(wǎng)絡遺傳算法函數(shù)極值尋優(yōu) Beijing Jiaotong University 智能控制技術報告神經(jīng)網(wǎng)絡遺傳算法函數(shù)極值尋優(yōu)學 院:電子信息工程學院學 號:姓 名:指導教師:時 間:2014.11.29目錄一、課題背景3二、模型建立32.1 算法流程42.2 BP算法實現(xiàn)42.2.1 數(shù)據(jù)選擇和歸一化42.2.2 BP神經(jīng)網(wǎng)絡訓練52.2.3 BP神經(jīng)網(wǎng)絡預測52.3 遺傳算法實現(xiàn)62.3.1 種群初始化62.3.2 適應度函數(shù)62.3.3 選擇操作62.3.4 交叉操作62.3.5 變異操作6三、編程實現(xiàn)63.1 數(shù)據(jù)準備63.2 BP神經(jīng)網(wǎng)絡主函數(shù)73.3 編碼函數(shù)83.4 適應度函

2、數(shù)93.5 選擇操作93.6 交叉操作103.7 變異操作113.8 遺傳算法主函數(shù)12四、結果分析144.1 BP神經(jīng)網(wǎng)絡擬合結果分析144.2遺傳算法尋優(yōu)結果分析16一、 課題背景在研究中經(jīng)常會遇到一些非常復雜的非線性系統(tǒng),這些系統(tǒng)方程復雜,難以用數(shù)學方法準確建模。在這種情況下,可以建立BP神經(jīng)網(wǎng)絡表達這些非線性系統(tǒng)。該方法把系統(tǒng)看成是一個黑箱,首先用系統(tǒng)輸入輸出數(shù)據(jù)訓練BP神經(jīng)網(wǎng)絡,使網(wǎng)絡能夠表達該未知函數(shù),然后就可以用訓練好的BP神經(jīng)網(wǎng)絡預測系統(tǒng)輸出。對于未知的非線性函數(shù),僅通過函數(shù)的輸入輸出數(shù)據(jù)難以準確尋找函數(shù)極值。遺傳算法通過模擬自然界遺傳機制和生物進化論能夠進行并行隨機搜索最優(yōu)化

3、,所以對非線性函數(shù)極值尋優(yōu)可以通過神經(jīng)網(wǎng)絡結合遺傳算法求解。利用神經(jīng)網(wǎng)絡的非線性擬合能力和遺傳算法的非線性尋優(yōu)能力尋找函數(shù)極值。本文擬合的非線性函數(shù)為:fx=-xx2-3.2x+2.89x-32 x0,3該函數(shù)的圖形如圖所示:圖1-1待擬合函數(shù)圖形從函數(shù)方程和圖形可以看出,該函數(shù)僅有一個全局最大值為0.9655,對應的坐標是(0.537,0.9655)。雖然從函數(shù)方程和圖形中很容易找出函數(shù)及極值對應的坐標,但是在方程未知的條件下函數(shù)極值及極值對應的坐標就很難求到。二、 模型建立2.1 算法流程神經(jīng)網(wǎng)絡遺傳算法函數(shù)極值尋優(yōu)主要分為BP神經(jīng)網(wǎng)絡訓練擬合和遺傳算法極值尋優(yōu)兩步,算法流程如圖所示:圖2

4、-1算法流程圖神經(jīng)網(wǎng)絡訓練擬合根據(jù)尋優(yōu)函數(shù)的特點構建適合的BP神經(jīng)網(wǎng)絡,用非線性函數(shù)的輸入輸出數(shù)據(jù)訓練BP神經(jīng)網(wǎng)絡,訓練后的神經(jīng)網(wǎng)絡就可以預測函數(shù)輸出。遺傳算法極值尋優(yōu)把訓練后的BP神經(jīng)網(wǎng)絡預測結果作為個體適應度值,通過選擇、交叉和變異操作尋找函數(shù)的全局最優(yōu)值及對應的值。2.2 BP算法實現(xiàn)2.2.1 數(shù)據(jù)選擇和歸一化數(shù)據(jù)歸一化是神經(jīng)網(wǎng)絡訓練和預測前對數(shù)據(jù)常做的一種處理方法。數(shù)據(jù)歸一化處理把所有的數(shù)據(jù)都歸一化為0,1之間的數(shù),其目的是取消各維數(shù)據(jù)間數(shù)量級差別,避免因為輸入輸出數(shù)據(jù)數(shù)量級差別較大而造成訓練失敗或者預測誤差較大。數(shù)據(jù)歸一化可以使用MATLAB自帶函數(shù)mapminmax,該函數(shù)有多種

5、形式,常用的方法如下:%樣本輸入輸出數(shù)據(jù)歸一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train);input_train、output_train是訓練輸入、輸出原始數(shù)據(jù),inputn、outputn是歸一化后的數(shù)據(jù),inputps、outputps為數(shù)據(jù)歸一化后得到的結構體,里面包含了數(shù)據(jù)的最大值、最小值和平均值等信息,可以用于測試數(shù)據(jù)歸一化和反歸一化。測試數(shù)據(jù)歸一化和反歸一化程序一般如下:%數(shù)據(jù)歸一化inputn_test=mapminmax(apply,input_test,inpu

6、tps); %網(wǎng)絡輸出反歸一化BPoutput=mapminmax(reverse,an,outputps);input_test是預測輸入數(shù)據(jù),input_test是歸一化后的預測數(shù)據(jù),apply表示根據(jù)inputps進行歸一化;an是網(wǎng)絡預測結果,outputs是訓練輸出數(shù)據(jù)歸一化得到的結構體,BPoutput是反歸一化后的網(wǎng)絡預測輸出,reverse表示對數(shù)據(jù)進行反歸一化。2.2.2 BP神經(jīng)網(wǎng)絡訓練用訓練數(shù)據(jù)訓練神經(jīng)網(wǎng)絡,使網(wǎng)絡對非線性函數(shù)具有預測能力。MATLAB神經(jīng)網(wǎng)絡工具箱中自帶BP神經(jīng)網(wǎng)絡函數(shù),使用時只需要調用相關的子程序即可。BP神經(jīng)網(wǎng)絡訓練主要用到newff、sim兩個函數(shù)

7、。1. newff:BP神經(jīng)網(wǎng)絡參數(shù)設置函數(shù)函數(shù)功能:構建一個BP網(wǎng)絡。函數(shù)形式:net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)2. train:BP神經(jīng)網(wǎng)絡訓練函數(shù)函數(shù)功能:用訓練數(shù)據(jù)訓練BP神經(jīng)網(wǎng)絡。函數(shù)形式:net,tr=train(NET,X,T,Pi,Ai)2.2.3 BP神經(jīng)網(wǎng)絡預測用訓練好的BP神經(jīng)網(wǎng)絡預測非線性函數(shù)輸出,并通過BP神經(jīng)網(wǎng)絡預測輸出和期望輸出分析BP網(wǎng)絡的分析能力。MATLAB神經(jīng)網(wǎng)絡工具箱提供的BP神經(jīng)網(wǎng)絡預測函數(shù)是sim。1. sim:BP神經(jīng)網(wǎng)絡預測函數(shù)函數(shù)功能:用訓練好的BP神經(jīng)網(wǎng)絡預測函數(shù)輸出函數(shù)形式:y=sim(n

8、et,y)以上三個函數(shù)的具體用法可以參考其自帶的幫助,本文不作詳述。根據(jù)需要擬合的函數(shù)有1個輸入?yún)?shù)、1個輸出參數(shù),確定BP神經(jīng)網(wǎng)絡為1-5-1。取函數(shù)的4000組輸入輸出數(shù)據(jù),從中隨機選取3900組訓練網(wǎng)絡,100組數(shù)據(jù)測試網(wǎng)絡性能,網(wǎng)絡訓練好后用于非線性函數(shù)輸出。2.3 遺傳算法實現(xiàn)2.3.1 種群初始化個體編碼方法為實數(shù)編碼,每個個體均為一個實數(shù)串,由輸入層與隱含層連接權值、隱含層閾值、隱含層與輸出層連接權值以及輸出層閾值4部分組成。個體包含了神經(jīng)網(wǎng)絡全部權值和閾值,在網(wǎng)絡結構已知的情況下,就可以構成一個結構、權值、閾值確定的神經(jīng)網(wǎng)絡。2.3.2 適應度函數(shù)根據(jù)個體得到的BP神經(jīng)網(wǎng)絡的初

9、始權值和閾值,用訓練數(shù)據(jù)訓練BP神經(jīng)網(wǎng)絡后預測系統(tǒng)輸出,把訓練好的BP神經(jīng)網(wǎng)絡預測輸出作為個體適應度的值。2.3.3 選擇操作遺傳算法選擇操作有輪盤賭法、錦標賽法等多種方法,本文采用采用輪盤賭法,即基于適應度比例的選擇策略,每個個體i的選擇pi為:pi=fij=0nfi其中,fi為個體i的適應度值,N為種群的個體數(shù)目。2.3.4 交叉操作由于個體采用實數(shù)編碼,所以交叉操作方法采用實數(shù)交叉法,d第k個染色體ak和第l個染色體al在j位的交叉操作方法如下:akj=akj1-b+aijbaij=aij1-b+akjb其中,b是0,1間的隨機數(shù)。2.3.5 變異操作選取第i個個體的第j個基因aij進行

10、變異,變異操作方法如下:aij=aij+(aij-amax)*f(g) r0.5aij+(amin-aij)*f(g) r0.5式中,amax為基因aij的上界;amin為基因aij的下界;fg=r2(1-g/Gmax);r2為一個隨機數(shù);g為當前迭代次數(shù);amax是最大進化次數(shù);r為0,1之間的隨機數(shù)三、 編程實現(xiàn)3.1 數(shù)據(jù)準備根據(jù)擬合函數(shù)得到4000組輸入input和輸出數(shù)據(jù)output,存入data中。for i=1:4000 input(i,:)=3*rand; output(i)=-input(i)*(input(i)2-3.2*input(i)+2.89)*(input(i)-3

11、)/2;endoutput=output;save data input output3.2 BP神經(jīng)網(wǎng)絡主函數(shù)對于4000組數(shù)據(jù),采用其中3900組用來訓練神經(jīng)網(wǎng)絡,最后100組用來測試網(wǎng)絡擬合性能。%清空環(huán)境變量clccleardata;tic% 訓練數(shù)據(jù)預測數(shù)據(jù)提取及歸一化%下載輸入輸出數(shù)據(jù)load data output input %從1到4000間隨機排序k=rand(1,4000);m,n=sort(k); %找出訓練數(shù)據(jù)和預測數(shù)據(jù)input_train=input(n(1:3900),:);output_train=output(n(1:3900),:);input_test=

12、input(n(3901:4000),:);output_test=output(n(3901:4000),:); %選連樣本輸入輸出數(shù)據(jù)歸一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train); %BP網(wǎng)絡訓練%初始化網(wǎng)絡結構net=newff(inputn,outputn,5); net.trainParam.epochs=100;net.trainParam.lr=0.1;net.trainParam.goal=0.0000004; %網(wǎng)絡訓練net=train(net,inputn

13、,outputn); %BP網(wǎng)絡預測%預測數(shù)據(jù)歸一化inputn_test=mapminmax(apply,input_test,inputps); %網(wǎng)絡預測輸出an=sim(net,inputn_test); %網(wǎng)絡輸出反歸一化BPoutput=mapminmax(reverse,an,outputps); %結果分析 figure(1)plot(BPoutput,:og)hold onplot(output_test,-*);legend(預測輸出,期望輸出,fontsize,12)title(BP網(wǎng)絡預測輸出,fontsize,12)xlabel(樣本,fontsize,12)ylab

14、el(輸出,fontsize,12)print -dtiff -r600 4-3%預測誤差error=BPoutput-output_test; figure(2)plot(error,-*)title(神經(jīng)網(wǎng)絡預測誤差) figure(3)plot(output_test-BPoutput)./BPoutput,-*);title(神經(jīng)網(wǎng)絡預測誤差百分比) errorsum=sum(abs(error) toc save data net inputps outputps3.3 編碼函數(shù)function ret=Code(lenchrom,bound)% lenchrom input : 染

15、色體長度% bound input : 變量的取值范圍% ret output: 染色體的編碼值flag=0;while flag=0pick=rand(1,length(lenchrom); %線性插值,編碼結果以實數(shù)向量存入ret中ret=bound(:,1)+(bound(:,2)-bound(:,1).*pick; flag=test(lenchrom,bound,ret); %檢驗染色體的可行性end3.4 適應度函數(shù)function fitness = fun(x)% x input 個體% fitness output 個體適應度值load data net inputps ou

16、tputps %數(shù)據(jù)歸一化x=x;inputn_test=mapminmax(apply,x,inputps); %網(wǎng)絡預測輸出an=sim(net,inputn_test); %網(wǎng)絡輸出反歸一化fitness=mapminmax(reverse,an,outputps);3.5 選擇操作function ret=select(individuals,sizepop)% individuals input : 種群信息% sizepop input : 種群規(guī)模% ret output : 經(jīng)過選擇后的種群 fitness1=individuals.fitness;sumfitness=sum

17、(fitness1);sumf=fitness1./sumfitness;index=; for i=1:sizepop %轉sizepop次輪盤 pick=rand; while pick=0 pick=rand; end for i=1:sizepop pick=pick-sumf(i); if pickpcross continue; end flag=0; while flag=0 %隨機選擇交叉位 pick=rand; while pick=0 pick=rand; end pos=ceil(pick.*sum(lenchrom); pick=rand; %交叉開始 v1=chrom

18、(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),:);%檢驗染色體1可行性 flag2=test(lenchrom,bound,chrom(index(2),:);%檢驗染色體2可行性 if flag1*flag2=0 flag=0; else flag=1; end %如果兩個染色體不是都可行,則重新交叉

19、end endret=chrom;3.7 變異操作function ret=Mutation(pmutation,lenchrom,chrom,sizepop,pop,bound)% pcorss input : 變異概率% lenchrom input : 染色體長度% chrom input : 染色體群% sizepop input : 種群規(guī)模% opts input : 變異方法的選擇% pop input : 當前種群的進化代數(shù)和最大的進化代數(shù)信息% ret output : 變異后的染色體for i=1:sizepop % 隨機選擇一個染色體進行變異 pick=rand; whi

20、le pick=0 pick=rand; end index=ceil(pick*sizepop); % 變異概率決定該輪循環(huán)是否進行變異 pick=rand; if pickpmutation continue; end flag=0; while flag=0 % 變異位置 pick=rand; while pick=0 pick=rand; end pos=ceil(pick*sum(lenchrom); v=chrom(i,pos); v1=v-bound(pos,1); v2=bound(pos,2)-v; pick=rand; %變異開始 if pick0.5 delta=v2*(

21、1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v+delta; else delta=v1*(1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v-delta; end %變異結束 flag=test(lenchrom,bound,chrom(i,:); %檢驗染色體的可行性 endendret=chrom;3.8 遺傳算法主函數(shù)%清空環(huán)境變量clcclear %初始化遺傳算法參數(shù)%初始化參數(shù)maxgen=50; %進化代數(shù),即迭代次數(shù)sizepop=30; %種群規(guī)模pcross=0.4; %交叉概率選擇,0和1之間pmutatio

22、n=0.2; %變異概率選擇,0和1之間 lenchrom=1; %每個變量的字串長度,如果是浮點變量,則長度都為1bound=0 3; %數(shù)據(jù)范圍 individuals=struct(fitness,zeros(1,sizepop), chrom,);%將種群信息定義為一個結構體avgfitness=; %每一代種群的平均適應度bestfitness=; %每一代種群的最佳適應度bestchrom=; %適應度最好的染色體 %初始化種群計算適應度值%初始化種群for i=1:sizepop %隨機產(chǎn)生一個種群 individuals.chrom(i,:)=Code(lenchrom,bou

23、nd); x=individuals.chrom(i,:); %計算適應度 individuals.fitness(i)=fun(x); %染色體的適應度end%找最好的染色體bestfitness bestindex=max(individuals.fitness);bestchrom=individuals.chrom(bestindex,:); %最好的染色體avgfitness=sum(individuals.fitness)/sizepop; %染色體的平均適應度%記錄每一代進化中最好的適應度和平均適應度trace=avgfitness bestfitness; %迭代尋優(yōu)%進化開始

24、for i=1:maxgen i %選擇 individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop; %交叉 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); %變異 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i maxgen,bound); %計算適應度 for j=1:sizepop

25、 x=individuals.chrom(j,:); %解碼 individuals.fitness(j)=fun(x); end %找到最小和最大適應度的染色體及它們在種群中的位置 newbestfitness,newbestindex=max(individuals.fitness); worestfitness,worestindex=min(individuals.fitness); %代替上一次進化中最好的染色體 if bestfitnessnewbestfitness bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,:); end individuals.chrom(worestindex,:)=bestchrom; individuals.fitness

溫馨提示

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

評論

0/150

提交評論