目录
💥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