




免費(fèi)預(yù)覽已結(jié)束,剩余4頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
根據(jù)他人的代碼,稍微改進(jìn)后,并附上個(gè)人對(duì)代碼的理解情況。采用遺傳算法(GA)對(duì)BP網(wǎng)絡(luò)的權(quán)值進(jìn)行優(yōu)化。其思路如下:(1)根據(jù)BP的輸入值和目標(biāo)值,確定好BP網(wǎng)絡(luò)的輸入層單元數(shù)、隱層單元數(shù)(本例只處理1個(gè)隱層的情況;多個(gè)隱層的方法類似,主要是在構(gòu)造GA種群基因時(shí)有所差異)、以及輸出層的單元個(gè)數(shù)。(2)根據(jù)BP網(wǎng)絡(luò)的各層單元數(shù)來(lái)確定其輸入層與隱層之間的權(quán)值w12,和隱層輸出值b1,以及隱層到輸出層的權(quán)值w23,和輸出層輸出b2。這四個(gè)值各個(gè)元素的組合就組成了一個(gè)基因,即根據(jù)他們來(lái)確定基因長(zhǎng)度。這一步非常重要!可根據(jù)以下代碼進(jìn)行理解。 % 權(quán)值矩陣分配 % 輸入到隱層用w_he表示,3x4,3表示輸入層個(gè)數(shù),4表示輸出層個(gè)數(shù)% w_he=chrom(i,1) chrom(i,5) chrom(i,9) chrom(i,13);% chrom(i,2) chrom(i,6) chrom(i,10) chrom(i,14);% chrom(i,3) chrom(i,7) chrom(i,11) chrom(i,15);%以下for循環(huán)的作用是將某個(gè)基因,分別轉(zhuǎn)換為bp網(wǎng)絡(luò)所對(duì)應(yīng)的權(quán)值或輸出值。% 其中chrom(i,:)表示第i個(gè)基因的所有元素% in_num表述輸入層單元個(gè)數(shù)% n表示基本的元素個(gè)數(shù)% w_he表示輸入層到輸出層權(quán)值;w_out表示因此到輸出層的權(quán)值% b_he表示隱層輸出向量;b_out表示輸出層的輸出向量。 for j=1:n w_he(:,j)=chrom(i,(j-1)*(in_num+1)+1:j*(in_num+1)-1); w_out(j)=chrom(i,(in_num+1)*n+j); b_he(j)=chrom(i,(in_num+1)*j); end b_out=chrom(i,len); % 隱層到輸出層用w_out表示,4x1% w_out=chrom(i,17) chrom(i,18) chrom(i,19) chrom(i,20);% b_he=chrom(i,4) chrom(i,8) chrom(i,12) chrom(i,16);% b_out=chrom(i,21); (3)確定好權(quán)值與基因的對(duì)應(yīng)關(guān)系后。利用GA對(duì)BP網(wǎng)絡(luò)權(quán)值進(jìn)行優(yōu)化,也即尋找GA中最佳的適應(yīng)度的基因。適應(yīng)度函數(shù)則是利用BP網(wǎng)絡(luò)構(gòu)造,即把基因轉(zhuǎn)換成bp權(quán)值,再輸入樣本值查看其誤差大小。(4)尋找最優(yōu)基因就是GA的基本步驟,選擇、交叉、變異,這里就不詳述了。下面附上代碼。如果看懂了代碼,請(qǐng)根據(jù)自己的需要進(jìn)行調(diào)整,以達(dá)到最佳效果。按照GA流程來(lái)看代碼,真的很簡(jiǎn)單!通過(guò)調(diào)用此函數(shù)即可實(shí)現(xiàn)其訓(xùn)練BP_GA(p,aim,n)function net=BP_GA(p,aim,n)% p,訓(xùn)練樣本列向量矩陣% aim,目標(biāo)值列向量% n隱層單元個(gè)數(shù)% 源程序?yàn)榉抡嫖鞅睅煼洞髮W(xué)學(xué)報(bào)的遺傳主程序 %計(jì)算的染色體均方誤差 fitness=8/sum(error.2)% 經(jīng)過(guò)簡(jiǎn)單改造% ticPopsize=100;%種群規(guī)模P_mutation=0.1;%變異系數(shù)P_cross=0.6;% 交叉系數(shù)m=2; %權(quán)值和閾值的初始化范圍% p= 0 0 0 0 1 1 1 1;% 0 0 1 1 0 0 1 1;% 1 0 1 0 1 0 1 0; %輸入值% aim=0 1 1 0 1 0 0 1; % 輸出值num=size(p,1)*n+2*n+1;chrom=2*m.*rand(Popsize,num)-m; % 產(chǎn)生初始種群 40x21矩陣,范圍【-m,m】% temchrom=zeros(size(chrom);ecope=100;% 迭代次數(shù)currentbest=zeros(ecope,num);% 每一步迭代的最優(yōu)數(shù)組currentbest_value=zeros(ecope,1);fitness_gene=fitness(chrom,p,aim,n);%計(jì)算的染色體均方誤差 fitness=8/sum(error.2) c_value c_order=max(fitness_gene); for k=1:ecope %保留當(dāng)前最好染色體 c_value c_order=max(fitness_gene); currentbest(k,:)=chrom(c_order,:); currentbest_value(k)=c_value; % 選擇過(guò)程 fit=cumsum(fitness_gene)/sum(fitness_gene); N=Popsize; s=select(fit,N); temchrom=chrom(s,:);% 將選擇的儲(chǔ)存到臨時(shí)變量中 %交叉 P=rand(1,N); prob=find(PP_cross); crosschrom=temchrom(prob,:);% 從臨時(shí)變量中選擇部分進(jìn)行交叉 crosschrom=cross_over(crosschrom); temchrom(prob,:)=crosschrom;%臨時(shí)變量中只有部分進(jìn)行了交叉 %變異 temchrom=mutation(temchrom,P_mutation); chrom=temchrom; % 計(jì)算交叉變異之后的染色體的適應(yīng)度 fitness_gene=fitness(chrom,p,aim,n); fit=cumsum(fitness_gene)/sum(fitness_gene); N=Popsize; s=select(fit,N-1); s_value s_order=max(fitness_gene); if s_valuecurrentbest_value(k) %精因選擇 chrom=chrom(s,:);currentbest(k,:); fitness_gene=fitness_gene(s);currentbest_value(k); else s=s s_order(1); chrom=chrom(s,:); fitness_gene=fitness_gene(s); endendi=100;in_num=size(p,1); for j=1:n w_he(:,j)=currentbest(i,(j-1)*(in_num+1)+1:j*(in_num+1)-1); w_out(j)=currentbest(i,(in_num+1)*n+j); b_he(j)=currentbest(i,(in_num+1)*j); end samples=size(p,2); b_out=currentbest(i,num); out=zeros(size(aim);for j=1:size(p,2) for s=1:n % 隱層的輸入與輸出 in_he(s)=sum(w_he(:,s).*p(:,j)+b_he(s);%隱層的輸入 out_he(s)=(1-exp(in_he(s)/(1+exp(in_he(s); %隱層的輸出 end % 輸出層的輸入與輸出 in_out=w_out*out_he+b_out; out_out=1/(1+exp(-in_out); out(j)=out_out;endnet=currentbest(ecope,:);% figure% plot(aim,-o)% hold on% plot(out,r-*)end %圖表顯示% i=1:k;% y=1./currentbest_value(1:k,:);% % plot(i,y,r:);% title( sum root mean square error);% % toc% y(k) function y=fitness(chrom,p,aim,n)% global P_cross P_mutation% chrom,基因種群矩陣% p,樣本矩陣% aim,目標(biāo)矩陣,暫時(shí)只支持向量,即網(wǎng)絡(luò)輸出層只有一個(gè)單元% n,隱層的單元個(gè)數(shù)Popsize len=size(chrom);in_num,samples=size(p);%樣本數(shù)fitness_gene=zeros(Popsize,1);in_he=zeros(n,1);out_he=zeros(n,1);in_out=0;out_out=0;w_he=zeros(in_num,n);% 3x4w_out=zeros(1,n);% 1x4b_he=zeros(1,n);% b_out=zeros(1,1);% 權(quán)值和閾值的分配設(shè)置for i=1:Popsize % 權(quán)值矩陣分配 % 輸入到隱層用w_he表示,3x4,3表示輸入層個(gè)數(shù),4表示輸出層個(gè)數(shù)% w_he=chrom(i,1) chrom(i,5) chrom(i,9) chrom(i,13);% chrom(i,2) chrom(i,6) chrom(i,10) chrom(i,14);% chrom(i,3) chrom(i,7) chrom(i,11) chrom(i,15); for j=1:n w_he(:,j)=chrom(i,(j-1)*(in_num+1)+1:j*(in_num+1)-1); w_out(j)=chrom(i,(in_num+1)*n+j); b_he(j)=chrom(i,(in_num+1)*j); end b_out=chrom(i,len); % 隱層到輸出層用w_out表示,4x1% w_out=chrom(i,17) chrom(i,18) chrom(i,19) chrom(i,20);% b_he=chrom(i,4) chrom(i,8) chrom(i,12) chrom(i,16);% b_out=chrom(i,21); error=zeros(samples,1); for j=1:samples for s=1:n % 隱層的輸入與輸出 in_he(s)=sum(w_he(:,s).*p(:,j)+b_he(s);%隱層的輸入 out_he(s)=(1-exp(in_he(s)/(1+exp(in_he(s); %隱層的輸出 end % 輸出層的輸入與輸出 in_out=w_out*out_he+b_out; out_out=1/(1+exp(-in_out); % 計(jì)算各個(gè)樣本誤差 error(j)=aim(j)-out_out; end fitness_gene(i)=samples/sum(error.2); % 染色體均方誤差 % 誤差越小,fitness_gene越大end y=fitness_gene;function y=cross_over(chrom)% m,n=size(chrom);% temchrom=zeros(1,n);% for i=1:2:m-1% % c=rand(1);% % temchrom=chrom(i,:);% % chrom(i,:)=c.*chrom(i,:)+(1-c).*chrom(i+1,:);% % chrom(i+1,:)=(1-c).*temchrom+c.*chrom(i+1,:);% c=rand(1);% temchrom=chrom(i,:);% chrom(i,:)=c.*chrom(i,:)+(1-c).*chrom(i+1,:);% chrom(i+1,:)=(1-c).*temchrom+c.*chrom(i+1,:);% end% y=chrom;m,n=size(chrom); %兩點(diǎn)交叉for i=1:2:m-1 c=1+fix(n*rand(1,2); c_a=min(c); c_b=max(c); % 第i個(gè)與第i+1個(gè)交叉 temchrom=chrom(i,c_a:c_b); chrom(i,c_a:c_b)=chrom(i+1,c_a:c_b); chrom(i+1,c_a:c_b)=temchrom;endy=chrom;function y=mutation(chrom,P_mutation,m) %均勻變異if nargi
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)標(biāo)準(zhǔn)化達(dá)標(biāo)創(chuàng)建方案
- 每年應(yīng)組織制定安全生產(chǎn)標(biāo)準(zhǔn)化自評(píng)工作方案
- 有機(jī)硅單體安全生產(chǎn)規(guī)范
- 魚(yú)糜制品建設(shè)項(xiàng)目規(guī)劃設(shè)計(jì)方案
- 2025至2030嬰兒食品機(jī)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)沙灘巾和浴巾行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)汽車(chē)轉(zhuǎn)向柱罩行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)棗產(chǎn)品行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)有線驅(qū)動(dòng)行業(yè)市場(chǎng)深度研究及發(fā)展前景投資可行性分析報(bào)告
- 2025至2030中國(guó)月子中心行業(yè)市場(chǎng)發(fā)展分析及發(fā)展戰(zhàn)略與前景預(yù)測(cè)報(bào)告
- 胃早癌-經(jīng)典課件
- 2024IPv6 技術(shù)要求 第2部分:基于 IPv6 段路由(SRv6)的 IP 承載網(wǎng)絡(luò)
- 5WHY分析法培訓(xùn)課件
- 幕墻工安全技術(shù)交底
- 集裝箱七點(diǎn)檢查表
- 2023年湖北省高中學(xué)業(yè)水平合格性考試數(shù)學(xué)試題試卷及答案解析
- 保定一中1+3物理試卷
- 弟子規(guī)注音A4直接打印版
- 金融學(xué)原理重點(diǎn)總結(jié)彭興韻
- Cmk設(shè)備能力指數(shù)分析表
- J17J177 鋼絲網(wǎng)架珍珠巖復(fù)合保溫外墻板建筑構(gòu)造
評(píng)論
0/150
提交評(píng)論