神经网络自适应控制.docx
- 文档编号:4987
- 上传时间:2022-09-30
- 格式:DOCX
- 页数:6
- 大小:66.31KB
神经网络自适应控制.docx
《神经网络自适应控制.docx》由会员分享,可在线阅读,更多相关《神经网络自适应控制.docx(6页珍藏版)》请在冰豆网上搜索。
神经网络自适应控制
学院:
电气工程与自动化学院专业:
控制科学与工程
姓名:
兰利亚学号:
1430041009
日期:
2015年6月25日
6/6
神经网络间接自适应控制
摘要:
自适应模糊控制系统对参数变化和环境变化不敏感,能用于非线性和多变量复杂对象,不仅收敛速度快,鲁棒性好,而且可以在运行中不断修正自己的控制规则来改善控制性能,因而受到广泛重视。
间接自适应控制是通过在线辨识的到控制对象的模型。
神经网络作为自适应控制器,具有逼近任意函数的能力。
关键词:
神经网络间接自适应控制系统辨识
一、引言
自适应控制系统必须完成测量性能函数、辨识对象的动态模型、决定控制器如何修改以及如何改变控制器的可调参数等功能。
自适应控制有两种形式:
一种是直接自适应控制,另一种是间接自适应控制。
直接自适应控制是根据实际系统性能与理想性能之间的偏差,通过一定的方法来直接调整控制器的参数。
二、间接自适应系统分析与建模
2.1系统的分析
系统过程动态方程:
y(k+1)=-0.8y(k)/(1+y2(k))+u(k),参考系统模型由三阶差分方程描述:
ym(k+1)=0.8ym(k)+1.2ym(k-1)+0.2ym(k-2)+r(k)
式中,r(k)是一个有界的参考输入。
如果输出误差ec(k)定义为ec(k)=y(k)-ym(k),则控制的目的就是确定一个有界的控制输入u(k),当k趋于正无穷时,ec(k)=0.那么在k阶段,u(k)可以从y(k)和它的过去值中计算得到:
u(k)=0.8y(k)/(1+y2(k))+0.8y(k)+1.2y(k-1)+0.2y(k-2)+r(k)
(1)
于是所造成的误差方程为:
ec(k+1)=0.8ec(k)+1.2ec(k-1)+0.2ec(k-2)
(2)因为参考模型是渐进稳定的,所以对任意的初始条件,它服从当k趋于无穷,ec(k)=0。
在任何时刻k,用神经元网络N2计算过程的输入控制,即
u(k)=-N[y(k)]+0.8y(k)+1.2y(k-1)+0.2y(k-2)+r(k) (3)
由此产生非线性差分方程:
y(k+1)=-0.8y(k)/(1+y2(k))+N[y(k)]+0.8y(k)+1.2y(k-1)+0.2y(k-2)+r(k) (4)
故设计的要点是设计一个神经网络来逼近0.8y(k)/(1+y2(k))。
2.2系统的建模设计过程
第一步,用BP神经网络逼近,神经网络的结构包含三层:
输入层、隐含层和输出层。
BP网络的训练过程如下:
正向传播是输入信号从输入层经隐层传向输出层,若输出层得到了期望的输出,则学习算法结束;否则,转至反向传
播。
第二步,输入测试样本,对神经网络的逼近程度进行测试,将测试后的期
望输出与实际输出的曲线画出。
第三步,控制器设计。
将控制器设计为
u(k)=-N[y(k)]+0.8y(k)+1.2y(k-1)+0.2y(k-2)+r(k)。
系统的原理框图如下图所示。
参考模
型
e
神
经
r
控制器
过程
y
系统的原理框图若将控制器设计成u(k),则可得到相应曲线。
三、系统的MATLAB编程
clearall;closeall;
x=[-10:
1:
10]; %训练样本输入fori=1:
21
d(i)=0.8*x(i)/(1+x(i)^2); %目标函数,期望输出end
nx1=length(x); %样本的大小y=zeros(1,nx1); %输出初始化nx2=8; %隐含层的神经元个数times=20000; %学习次数
w1=0.05*rand(nx2,1); %第一层的连接权值theta1=0.05*rand(nx2,1);%第一层的阈值w2=0.05*rand(1,nx2); %第二层的连接权值theta2=0.05*rand
(1); %第二层的阈值ux=0.2; %学习率
forn=1:
times
Epx=0; %误差初始化fori=1:
nx1
s1=w1*x(i)-theta1;%隐含层输入x1=1./(1+exp(-s1));%隐含层输出s2=w2*x1-theta2;%输出层输入y(i)=s2; %输出层输出error=d(i)-y(i);
delta1=(error*(w2)').*x1.*(1-x1);delta2=error;
w1=w1+ux*delta1*x(i);%第一层权值修正w2=w2+ux*delta2*(x1)';%第二层权值修正theta1=theta1-ux*delta1;%第一层阈值修正theta2=theta2-ux*delta2;%第二层阈值修正Epx=Epx+0.5*error^2; %误差输出
endError(n)=Epx;epoch(n)=n;ifEpx<=0.01
break;endend
n,figure
(1);
subplot(221);
plot(x,d,'b-',x,y,'r--');title('训练完后的期望输出与实际输出');gridon;
subplot(222);
plot(epoch,Error);title('训练误差输出');xlabel('epoch');ylabel('误差E');gridon;
xt=[0:
1:
20];n3=length(xt);%dt=sin(xt);fori=1:
21
dt(i)=0.8*xt(i)/(1+xt(i)^2);%目标函数,期望输出
end
fork=1:
n3
s1=w1*xt(k)-theta1;x1=1./(1+exp(-s1));s2=w2*x1-theta2;yt(k)=s2;Et(k)=dt(k)-yt(k);
endsubplot(223);
plot(xt,dt,'b-',xt,yt,'r:
');legend('期望输出','实际输出');title('测试时的实际输出与期望输出');
gridon;subplot(224);
plot(xt,Et);title('测试误差输出');xlabel('测试样本'),ylabel('误差
E');gridon;
%control
%u(k)=0.8*yf(k)+1.2*yf(k-1)+0.2*yf(k-2)+r(k);
%final_y(k+1)=-0.8*final_y(k)/(1+final_y(k)^2)+u(k);xf=[0:
1:
20];n=length(xf);
fori=1:
21
d(i)=0.8*xf(i)/(1+xf(i)^2);%目标函数,期望输出fc(i)=0.8*xf(i)/(1+xf(i)^2);%目标函数,期望输出
end
fork=1:
n3
s1=w1*xt(k)-theta1;x1=1./(1+exp(-s1));s2=w2*x1-theta2;yf(k)=s2;end
u
(1)=0.8*yf
(1)+sin(2*pi/25);u
(2)=0.8*yf
(2)+1.2*yf
(1)+sin(4*pi/25);fork=3:
21
u(k)=0.8*yf(k)+1.2*yf(k-1)+0.2*yf(k-2)+sin(2*pi*k/25);
end
fork=1:
21
yt(k)=-fc(k)+u(k);final_y(k)=yt(k);if(k<21)
fc(k+1)=0.8*yt(k)/(1+yt(k)^2);end
end
figure
(2);
plot(xf,fc,'--',xf,d,'r--');gridon;
%n1=length(fc)
%n2=length(d)figure(3);
plot(xf,u,'b-',xf,final_y,'r:
',xf,fc,'r--',xf,(u-final_y),':
');gridon;
四、matlab仿真结果如下:
训练完后的期望输出与实际输出
训练误差输出
0.4
0.4
0.2
0.3
0 E
误
0.2
-0.2
0.1
下图所示的是利用神经网络训练后得到的仿真图:
差
-0.4
-10 -5 0 5 10
测试时的实际输出与期望输出
期望输出实际输出
0.4
0.3
差
0.2 E
误
0.1
0
0.05
0
0 100 200 300
epoch
测试误差输出
0
0 5 10 15 20
-0.05
0 5 10 15 20
测试样本
训练后的结果图
测试时和训练时的目标函数期望输出:
0.4
0.3
0.2
0.1
0
-0.1
-0.2
-0.3
-0.4
0 2 4 6 8 10 12 14 16 18 20
当
时得到的最后控制响应曲线为:
1.5
1
0.5
0
-0.5
-1
0 2 4 6 8 10 12 14 16 18 20
五、结论
由上述仿真结果可以看出,间接自适应控制的神经网络,可以对复杂的非线性和不确定系统进行智能控制,神经网络的逼近能力起了重要的作用。
神经网络对未知的过程进行离线辨识,再根据辨识结果以及参考模型进行控制器的设计,达到预期的效果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 神经网络 自适应 控制