| 5 | 1/1 | 返回列表 |
| 查看: 3266 | 回復: 6 | |||
| 當前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||
丿無鋒丶丶新蟲 (初入文壇)
|
[求助]
遺傳算法優(yōu)化BP神經網絡權值閾值
|
||
|
我從網上下了一個遺傳算法優(yōu)化BP神經網絡的程序,可是運行后總出現(xiàn)錯誤,不知道哪里錯了,請大俠們幫忙給我檢查一下;源代碼如下: 程序一:GA訓練BP權值的主函數(shù) function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遺傳算法對BP網絡權值閾值進行優(yōu)化,再用BP算法訓練網絡 %-------------------------------------------------------------------------- %數(shù)據(jù)歸一化預處理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %創(chuàng)建網絡 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'trainlm'); %下面使用遺傳算法對網絡進行優(yōu)化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隱含層節(jié)點數(shù) S=R*S1+S1*S2+S1+S2;%遺傳算法編碼長度 aa=ones(S,1)*[-1,1]; popu=50;%種群規(guī)模 initPpp=initializega(popu,aa,'gabpEval');%初始化種群 gen=100;%遺傳代數(shù) %下面調用gaot工具箱,其中目標函數(shù)定義為gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,... 'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]); %繪收斂曲線圖 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面將初步得到的權值矩陣賦給尚未開始訓練的BP網絡 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.LW{2,1}=W1; net.LW{3,2}=W2; net.b{2,1}=B1; net.b{3,1}=B2; XX=P; YY=T; %設置訓練參數(shù) net.trainParam.show=1; net.trainParam.lr=1; net.trainParam.epochs=50; net.trainParam.goal=0.001; %訓練網絡 net=train(net,XX,YY); 程序二:適應值函數(shù) function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for **rckian evolution % options - [current_generation] load data2; nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隱含層節(jié)點數(shù) S=R*S1+S1*S2+S1+S2;%遺傳算法編碼長度 for i=1:S, x(i)=sol(i); end; [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x); 程序三:編解碼函數(shù) function [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x) load data2; nntwarn off; XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隱含層節(jié)點數(shù) S=R*S1+S1*S2+S1+S2;%遺傳算法編碼長度 % 前R*S1個編碼為W1 for i=1:S1, for k=1:R, W1(i,k)=x(R*(i-1)+k); end end % 接著的S1*S2個編碼(即第R*S1個后的編碼)為W2 for i=1:S2, for k=1:S1, W2(i,k)=x(S1*(i-1)+k+R*S1); end end % 接著的S1個編碼(即第R*S1+S1*S2個后的編碼)為B1 for i=1:S1, B1(i,1)=x((R*S1+S1*S2)+i); end % 接著的S2個編碼(即第R*S1+S1*S2+S1個后的編碼)為B2 for i=1:S2, B2(i,1)=x((R*S1+S1*S2+S1)+i); end % 計算S1與S2層的輸出 A1=tansig(W1*P,B1); A2=purelin(W2*A1,B2); % 計算誤差平方和 SE=sumsqr(T-A2); val=1/SE; % 遺傳算法的適應值 這些命令流直接復制粘貼到Matlab里面就可以用嗎? |
資源代碼 |
木蟲 (小有名氣)
新蟲 (初入文壇)
新蟲 (初入文壇)
銀蟲 (小有名氣)

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 288資源與環(huán)境專碩求調劑,不限專業(yè),有學上就行 +20 | lllllos 2026-03-30 | 20/1000 |
|
|---|---|---|---|---|
|
[考研] 267求調劑 +7 | uiybh 2026-03-31 | 7/350 |
|
|
[考研] 復試調劑 +7 | 雙馬尾痞老板2 2026-03-31 | 7/350 |
|
|
[考研] 336材料求調劑 +10 | 陳瀅瑩 2026-03-26 | 12/600 |
|
|
[考研] 070300化學354求調劑 +15 | 101次希望 2026-03-28 | 15/750 |
|
|
[考研] 070300一志愿211,312分求調劑院校 +12 | 小黃鴨寶 2026-03-30 | 12/600 |
|
|
[考研] 307分求調劑 +6 | (o~o) 2026-03-31 | 6/300 |
|
|
[考研] 考研調劑求助 +7 | 13287130938 2026-03-31 | 7/350 |
|
|
[考研] 調劑求院校招收 +7 | 鶴鯨鴿 2026-03-28 | 7/350 |
|
|
[考研] 269求調劑 +4 | 我想讀研11 2026-03-31 | 4/200 |
|
|
[考研] 085600材料與化工調劑 +16 | kikiki7 2026-03-30 | 16/800 |
|
|
[考研] 083000學碩274求調劑 +12 | Li李魚 2026-03-26 | 12/600 |
|
|
[考研] 332求調劑 +14 | 032500 2026-03-25 | 14/700 |
|
|
[考研] 求調劑 +10 | 張zz111 2026-03-27 | 11/550 |
|
|
[考研] 調劑考研 +3 | 王杰一 2026-03-29 | 3/150 |
|
|
[考研] 本科新能源科學與工程,一志愿華理能動285求調劑 +3 | AZMK 2026-03-27 | 5/250 |
|
|
[考研] 085602 化工專碩 338分 求調劑 +12 | 路癡小琪 2026-03-27 | 12/600 |
|
|
[考研] 304求調劑 +6 | 曼殊2266 2026-03-27 | 6/300 |
|
|
[考研] 272求調劑 +7 | 腳滑的守法公民 2026-03-27 | 7/350 |
|
|
[考研] 各位老師您好:本人初試372分 +5 | jj涌77 2026-03-25 | 6/300 |
|