💥1 概述
包含用于实现在线顺序学习算法、元认知神经网络和用于自适应识别和控制的前馈神经网络的代码。这些方法还用于解决分类和时间序列预测问题。
📚2 运行结果
🎉3 参考文献
[1]谭永红.基于BP神经网络的自适应控制[J].控制理论与应用,1994(01):84-88.
👨💻4 Matlab代码
主函数部分代码:
clc;clear; k=1:50000; yp=[0 0 zeros(1,length(k))]; yphat=[0 0 zeros(1,length(k))]; NNclass=[1 20 1]; in=NNclass(1);n1=NNclass(2);out=NNclass(3); W1=randn(in+1,n1); W2=zeros(n1+1,out); eta=0.1; e1=0.1; e2=1.2; u=-1+2*rand(1,length(k)+2); f=@(u)((u-0.8)*u*(u+0.5)); error_train=zeros(1,length(k)); difftanh=@(x)(sech(x)); for i=3:length(k)+2 yp(i)=0.8*yp(i-1)+f(u(i-1)); A1=[1 u(i-1)]*W1; y1=tanh(A1); A2=[1 y1]*W2; N=A2; yphat(i)=0.8*yphat(i-1)+N; e=-(yphat(i)-yp(i)); if(abs(e)<e1) continue; elseif(abs(e)>e1 && abs(e)<e2) del2=e; del1=difftanh(A1).*(del2*W2(2:end,:)'); Jw2=[1 y1]'*del2; Jw1=[1 u(i-1)]'*del1; W2=W2+eta*Jw2; W1=W1+eta*Jw1; error_train(i-2)=e; else W1=[W1 randn(2,1)]; W2=[W2;0]; A1=[1 u(i-1)]*W1; y1=tanh(A1); A2=[1 y1]*W2; N=A2; del2=e; del1=difftanh(A1).*(del2*W2(2:end,:)'); Jw2=[1 y1]'*del2; Jw1=[1 u(i-1)]'*del1; W2=W2+eta*Jw2; W1=W1+eta*Jw1; error_train(i-2)=e; end end