1 理论介绍
BP网络逼近的结构如图7-6所示,图中k为网络的迭代步骤,u(k)和y(k)为逼近器的输入。BP为网络逼近器,y(k)为被控对象的实际输出,y(k)为BP网络的输出。将系统输出y(k)及输入(k)的值作为逼近器BP的输人,将系统输出与网络输出的误差作为逼近器的调整信号。
BP算法的学习过程由正向传播和反向传播组成。在正向传播过程中,输入信息从输入层经隐层逐层处理,并传向输出层,每层神经元(节点)的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转至反向传播,将误差信号(理想输出与实际输出之差)按连接通路反向计算,由梯度下降法调整各层神经元的权值,使误差信号减小。
(1)前向传播:计算网络的输出隐层神经元的输入为所有输入的加权之和,即
(2)反向传播:采用δ学习算法,调整各层间的权值
根据梯度下降法,权值的学习算法如下:
输出层及隐层的连接权值2学习算法为
2 算例
3 运行结果
1)跟踪轨迹
2)跟踪误差
3)敏感度
4 matlab程序
%% 基于BP神经网络的轨迹跟踪
clc
clear
close all;
%% 参数
%学习效率
xite=0.50;
%动量因子
alfa=0.05;
%权重值
w2=rands(6,1);
w2_1=w2;
w2_2=w2_1;
w1=rands(2,6);
w1_1=w1;
w1_2=w1;
dw1=0*w1;
%初始状态
x=[0,0]';
u_1=0;
y_1=0;
I=[0,0,0,0,0,0]';
Iout=[0,0,0,0,0,0]';
FI=[0,0,0,0,0,0]';
%采样周期
ts=0.001;
for k=1:1:1000
%时间
time(k)=k*ts;
%% 输入层
%BP输入1
u(k)=0.50*sin(3*2*pi*k*ts);
%控制对象输出,BP输入2
y(k)=u_1^3+y_1/(1+y_1^2);
%% 隐含层
for j=1:1:6
I(j)=x'*w1(:,j);
Iout(j)=1/(1+exp(-I(j)));
end
%% 输出层
yn(k)=w2'*Iout; % Output of NNI networks
%% 跟踪误差
e(k)=y(k)-yn(k); % Error calculation
%% 反向传播
w2=w2_1+(xite*e(k))*Iout+alfa*(w2_1-w2_2);
for j=1:1:6
FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;
end
for i=1:1:2
for j=1:1:6
dw1(i,j)=e(k)*xite*FI(j)*w2(j)*x(i);
end
end
w1=w1_1+dw1+alfa*(w1_1-w1_2);
%% 敏感度
%%%%%%%%%%%%%%Jacobian%%%%%%%%%%%%%%%%
yu=0;
for j=1:1:6
yu=yu+w2(j)*w1(1,j)*FI(j);
end
dyu(k)=yu;
%% 迭代更新
x(1)=u(k);
x(2)=y(k);
............。。。。。略