資源簡介
內容包括:實例,文檔分析,設計過程和MATLAB仿真程序。首先利用BP網絡對以下非線性系統進行辨識,然后利用模型參考自適應方法,設計NNMARC控制器

代碼片段和文件信息
%?2018年11月19日?by?zhangyaokun
%?BP?identification
clear?all;
close?all;
%%?BP網絡參數初始化
xite=0.30;??%學習速率
alfa=0.05;??%動量因子
w2=rands(91);??%隨機初始化網絡權值
w2_1=w2;w2_2=w2_1;??%網絡結構,4-9-1
w1=rands(49);
w1_1=w1;w1_2=w1;
dw1=0*w1;
I=[000000000]‘;
Iout=[000000000]‘;
FI=[000000000]‘;
%%?訓練網絡,對非線性系統進行辨識
for?count=1:100
????x=[0000]‘;%網絡的初始輸入為0
?%???x=[000]‘;%網絡的初始輸入為0
????u_1=0;y_1=0;y_2=0;
????
????for??k=1:1:500???%使用500個樣本點訓練數據
????????time(k)=k;
????????u(k)=sin(2*pi/3*k)?+?1/3*sin(2*pi/6*k);
????????y(k)?=?u_1+?y_1?*?(2*y_2?+?1)?/?(1+?y_1^2?+?y_2^2);??%非線性系統
????????for??j=1:1:9
?????????????I(j)=x‘*w1(:j);??
??%???????????Iout(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));
?????????????Iout(j)=1/(1+exp(-I(j)));?%網絡隱含層輸出,使用sigmod函數
????????end???
????????yn(k)=w2‘*Iout;?????????%?網絡的輸出層輸出
????????e(k)=y(k)-yn(k);????%?辨識誤差
????????%網絡權值修正
????????w2=w2_1+(xite*e(k))*Iout+alfa*(w2_1-w2_2);??%反向傳播,梯度法算輸出層權值修正值
????????for?j=1:1:9
??????????FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;??%隱含層網絡的導數
%?????????????FI(j)=4/((exp(I(j))+exp(-I(j)))^2);
????????end
????????for?i=1:1:4
???????????for?j=1:1:9
??????????????dw1(ij)=xite*e(k)*FI(j)*w2(j)*x(i);
???????????end
????????end
????????w1=w1_1+dw1+alfa*(w1_1-w1_2);
????????for?j=1:1:9
???????????yu=w2(j)*w1(1j)*FI(j);????%Jacobian
????????end
????????dyu(k)=yu;
????????%各參數更新
????????x(1)=u(k);
????????x(2)=y(k);
?????????x(3)=y_1;
?????????x(4)=y_2;
????????w1_2=w1_1;w1_1=w1;
????????w2_2=w2_1;w2_1=w2;
????????u_1=u(k);
????????y_2=y_1;
????????y_1=y(k);
????end
end
%%?網絡訓練情況曲線顯示
figure(1);
plot(timey‘r‘timeyn‘b‘);
xlabel(‘times‘);ylabel(‘y?and?yn‘);
figure(2);
plot(timee‘r‘);
xlabel(‘times‘);ylabel(‘error‘);
figure(3);
plot(timedyu);
xlabel(‘times‘);ylabel(‘dyu‘);
%%?使用新的數據測試網絡
x=[0000]‘;??%網絡初始輸入為0
u_1=0;y_1=0;y_2=0;??%系統初始輸出輸入重新初始化為0
I=[0000000]‘;
Iout=[0000000]‘;
for?k=1:1:200???%使用200個樣本點
????time1(k)=k;???
???uc(k)=sin(2*pi/4*k)?+?1/5*sin(2*pi/7*k);???%新的測試函數
?%???uc(k)=sin(2*pi/3*k*ts)?+?1/3*sin(2*pi/6*k*ts);
????yc(k)?=?u_1+?y_1?*?(2*y_2?+?1)?/?(1+?y_1^2?+?y_2^2);??%非線性系統
????
????for??j=1:1:9???
?????????I(j)=x‘*w1(:j);???
??%????????Iout(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));
?????????Iout(j)=1/(1+exp(-I(j)));?%網絡隱含層輸出,使用sigmod函數
????end???
????ync(k)=w2‘*Iout;?????????%?網絡的輸出層輸出
????ec(k)=yc(k)-ync(k);????%?辨識誤差
????
????%各參數更新
????x(1)=uc(k);
????x(2)=yc(k);
?????x(3)=y_1;
?????x(4)=y_2;
????
????u_1=uc(k);
????y_2=y_1;
????y_1=yc(k);
end
figure(4);
plot(time1yc‘r‘time1ync‘b‘);
xlabel(‘times‘);ylabel(‘y?and?yn‘);
figure(5);
plot(time1ec‘r‘);
xlabel(‘times‘);ylabel(‘error‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-04-25?02:21??BP_identification\
?????文件????????7563??2018-12-10?21:35??BP_identification\aaa.mat
?????文件???????41089??2018-12-11?15:40??BP_identification\BP_identification_MRAC.vsdx
?????文件???????77484??2018-12-10?19:52??BP_identification\error.jpg
?????文件????????2983??2018-12-10?17:01??BP_identification\Identification_BP.m
?????文件????????2463??2018-12-11?15:33??BP_identification\Identification_BP_offline.m
?????文件???????52318??2018-12-11?11:24??BP_identification\MRAC-E.jpg
?????文件???????26199??2018-12-11?11:52??BP_identification\MRAC-E1.jpg
?????文件???????53017??2018-12-11?11:24??BP_identification\MRAC-U.jpg
?????文件???????28280??2018-12-11?11:52??BP_identification\MRAC-U1.jpg
?????文件???????72799??2018-12-11?11:24??BP_identification\MRAC-Y.jpg
?????文件???????36841??2018-12-11?11:51??BP_identification\MRAC-Y1.jpg
?????文件????????2437??2018-12-11?14:34??BP_identification\MRAC_BP_offline.m
?????文件??????105888??2018-12-10?19:51??BP_identification\output.jpg
?????文件????????4039??2018-12-10?19:18??BP_identification\testdata.mat
?????文件????????3891??2018-12-10?19:18??BP_identification\traindata.mat
?????文件??????448203??2019-03-12?18:58??神經網絡非線性系統辨識與模型參考自適應控制器設計.docx
評論
共有 條評論