自适应控制作业
学 号 0901467 姓 名 王少杰 班 级 09级4班 专 业 控制理论与控制工程 学 院 信息科学与工程学院
2010年05月08日
《自适应控制》(自校正部分)课后作业
(1)选择加权多项式P(z1)和Q(z1)
对象模型:A(z1)y(k)B(z1)u(k)C(z1)(k)
C(z1控制器:u(k))R(z11)w(k)G(z111)y(k)1F(z)B(z)C(z)Q(z)
将控制器方程带入到对象模型得并整理得闭环方程如下: y(k)ZdB(z1)R(z1)w(k)[F(z111)B(z1)C(z11)Q(z1)](k)P(z)B(z)Q(z)A(z)1
将y(k)带入对象模型得控制器得,控制律如下:
A(z1 u(k))R(z11)w(k)G(z111)(k)1P(z)B(z)Q(z)A(z)111
系统的闭环特征方程为:P(z)B(z)Q(z)A(z)0
选择P(z)1,B(z),于是闭环特征方程如下: 0.81.7z解得,z11111(10.29z)0
10.81.70.29
当特征方程以z1为变量的时候,所有根均大于1,即在单位圆外时,闭环系统稳定。
∴|z1|>1,由此得,>0.6977
所以取=1。
(2)模型已知时的广义理想输出的最优预报为:
(kd|k)[G(z)y(k)F(z)B(z)u(k))]/C(z)
G(z),F(z)由Diophantine方程确定
111111 P(z)C(z)A(z)F(z)Z 由对象模型知,纯滞后d=2,na1,故
1111dG(z)
1nfd1,ngmax(na1,npncd)=max(1,0)=1
设G(z)g0,F(z)f0f1z111
又A(z1)10.29z1,C(z1)1带入diophantine方程得 1f0(0.29f0f1)z1(g00.29f1)z2
所以,f01,f10.29,g00.0841 即 F(z1)10.29z1,G(z1)0.0841
1111 所以,(kd|k)[G(z)y(k)F(z)B(z)u(k))]/C(z)
[0.0841y(k)(10.29z1)(0.81.7z1)u(k))] 0.08410.8u(k)1.932u(k1)0.493u(k2) (3)令最优预报=广义理想输出,即(kd|k)y*(kd),可得
C(z1广义最小方差控制律:u(k))R(z11)w(k)G(z111)y(k)1F(z)B(z)C(z)Q(z)R(z1
)w(k)0.0841y(k)1(10.29z)(0.81.7z)0.6977111
(4)模型未知时,广义最小方差控制律的控制器参数由G(z)、H(z)和C(z)组成
控制控制律参数辨识方程为:
(k)(k|kd)F(z)(k)
G(z)y(kd)H(z)u(kd)C(z)(k|kd)F(z)(k)
11*1111 其中,C(z)为C(z)中去掉C0后剩余的多项式。本题中C(z 所以, (k)g0y(kd)(h0h1z(5)参数向量和数据向量如下:
y(ku(k 数据向量:(kd)u(ku(k1*111)=0 )(k)
h2z2)u(kd)F(z1g0hd),参数向量:0
h1d1)d2)h2d) 控制律参数辨识方程得最小二乘形式为:
(k)(kd)F(z)(k)
T1(6)针对模型未知的情况,采用直接自校正算法对上述对象进行广义最小方差自校正控制的仿真,以[1,5]之间的随机数给出对象的初始输入输出数据和参数估计的初始值,仿真区间为:k∈[0,200],
a. 根据给定的条件,w(k)、y(k)和u(k)随时间变化的三条曲线图1所示
ˆ(z1)和Hˆ(z1)的所有参数随时间变化的曲线如下图所示,其中具体参数的含义与(5)中的参数向b. G量含义相同。
为了使自适应调节的效果更加明显,缩短步长,设置为100,仿真结果如下:
图a 图b 附:广义最小方差自校正控制程序
%广义最小方差自校正控制(直接算法)
clear all; close all;
a=[1 0.29];b=[0.8 -1.7];c=1;d=2; %对象参数
na=length(a)-1;nb=length(b)-1;nc=length(c)-1; %多项式A、B、C的阶次 Pw=1;Q=1; %加权多项式P、Q np=length(Pw)-1;nq=length(Q)-1;
nf=d-1;ng=max(na-1,np+nc-d); nh=nf+nb; %多项式F、G、H的阶次 c1=conv(c,Pw);nc1=length(c1)-1;
L=100; %控制步数
%参数的初始化
uk=5*rand(nh+d,1); %输入初值 yk=5*rand(ng+d,1); %输出初值
yek=zeros(nc,1); %最优预测输出的初值 yek1=zeros(nc,1);
sitak=zeros(ng+1+nh+1+nc); %初始化参数向量 P=10^6*eye(ng+1+nh+1+nc);
xik=zeros(nc,1); %初始化噪声信号 xi=0.2*randn(L,1); %白噪声序列
for k=1:L
time(k)=k;
y(k)=-a(2:na+1)*yk(1:na)+b*uk(d:d+nb)+c*[xi(k);xik]; %对象输出
w(k)=6.0; %系统的参考输入
%最小二乘递推算法
phie=[yk(d:d+ng);uk(d:d+nh);-yek(1:nc)]; K=P*phie/(1+phie'*P*phie);
sita(:,k)=sitak(:,1)+K*(y(k)-phie'*sitak(:,1)); P=P-K*phie'*P; ye=phie'*sitak(:,d);
%获得G、H、C的各个参数
ge=sita(1:ng+1,k)';he=sita(ng+2:ng+2+nh,k)';ce=[1;sita(ng+nh+3:ng+nh+nc+2,k)'];
%在线求取R
ge1=sum(ge);he1=sum(he);ce1=sum(ce); R=Q*(ce1-ge1)/he1+1;
%控制律
u(k)=(R*w(k)-ge(1)*y(k)-ge(2:ng+1)*yk(1:ng)-he(2:nh+1)*uk(1:nh)-ce(2:nc+1)*yek1(1:nc))/(Q+he(1));
phie1=[y(k);yk(1:ng);u(k);uk(1:nh);-yek1(1:nc)]; yek0=phie1'*sita(:,k);
%更新数据 for i=d:-1:2
sitak(:,i)=sitak(:,i-1); end
sitak(:,1)=sita(:,k);
for i=d+nh:-1:2 uk(i)=uk(i-1); end
uk(1)=u(k);
for i=d+ng:-1:2 yk(i)=yk(i-1); end
yk(1)=y(k);
for i=nc:-1:2
yek1(i)=yek1(i-1); yek(i)=yek(i-1); xik(i)=xik(i-1); end if nc>0
yek1(1)=yek0; yek(1)=ye; xik(1)=xi(k);
end end
%求解diophantine方程
% [f,g,h]=sdiophantine(a,b,c,d);
ad=[a,zeros(1,ng+nf+1-na)];cd=[c1,zeros(1,ng+d-nc1)];
%求解F的系数 f(1)=1;
for i=2:nf+1 f(i)=0; for j=2:i
f(i)=f(i)+f(i+1-j)*ad(j); end
f(i)=cd(i)-f(i); end
%求解G的系数 for i=1:ng+1 g(i)=0;
for j=1:nf+1
g(i)=g(i)+f(nf+2-j)*ad(i+j); end
g(i)=cd(i+d)-g(i); end
%求解H的系数 h=conv(b,f); %输出 figure(1);
plot(time,w,'r',time,y,'k',time,u); xlabel('k');ylabel('w(k),y(k),u(k)');
legend('参考输入w(k)','实际输出y(k)','控制量u(k)');
figure(2)
plot(time,g(1),time,h(1),time,h(2),time,h(3)); hold on;
plot(time,sita(1:ng+1,:),time,sita(ng+2:ng+2+nh,:)); xlabel('k');ylabel('参数估计'); legend('g0','h0','h1','h2');
模型参考自适应控制系统作业
仿真作业
1) 例4.1(一阶线性) 2) 例4.5(Rohrs例子) 3) 例4.6(“死区”与“回归器替代”修正自适应) 4) 4.4节线性系统输出反馈自适应控制(相对阶=1)
设对象模型为
Wp(s)s1s5s3s2s5s622
参考模型为
Wm(s)
高频增益kp假设已知,设计输出反馈自适应控制系统,在参考信号(a) r(t)0, (b) r(t)10, (c)
r(t)5cost10cos5t三种情况下进行仿真分析。
要求:
仿真报告要求A4纸打印,包括如下内容: a) 给出设计参数;
b) 跟踪误差、估计参数仿真曲线(背景是白色); c) 仿真结果分析; d) 仿真源程序清单。 (1)例4.1一阶线性系统仿真
4s+4Transfer FcnAddStep1sProduct-2Constant1sProduct1Integrator1Product3Scope1Add1IntegratorScopeSine WaveProduct23s-1Transfer Fcn1
图4.1 一阶系统自适应控制MATLAB仿真图
1.521.5110.50.50-0.50-0.5-1-1-1.5-2-1.50 00.511.5 图4.1.1跟踪性能和参数估计,r(t)=4
0.511.522.533.544.5522.533.544.55
1.521.5110.500.50-0.5-1-0.5-1.51234 0 图4.1.2 跟踪性能和参数估计,r(t)=4sin3t r(t)=4 ,从图4.1.1知跟踪误差收敛到零,但参数误差不收敛。 r(t)=4sin3t,从图4.1.2知跟踪误差和参数误差都收敛到零。 (2)例4.5 Rohrs的例子
-10123456710-256710
2Constant13s+2Transfer FcnAdd1Scope1Sine Wave2Adds+1Transfer Fcn12292s +30s+229Transfer Fcn2Add2Scope2Product31sIntegratorProduct-2Scope1sProduct2Integrator1Product1Constant
图4.5 带有未建模动态和量测误差的自适应控制
图4.5.1 失稳
图4.5.2 参数飘移
对于参考输入r(t)=2,图4.5.1和图4.5.2对应控制的结果。可以看到,刚开始输出y(t)收敛到y=2附近,然后由于量测噪声,出现了小的振动,最后发散到无穷。随着时间的推移,参数先发生缓慢漂移,然后突然剧烈发散。
原因:常数参考输入中包含的参数信息不充分,参数自适应机制很难从噪声中区分参数信息。结果是参数沿着使得跟踪误差保持很小的方向漂移。最后可能导致闭环系统的不稳定。
(3)4.6死区的运用
2Constant13s+2Transfer FcnAdd1Scope1Sine Wave2Adds+1Transfer Fcn12292s +30s+229Transfer Fcn2Dead ZoneAdd2Scope2Product31sIntegratorProduct-2Scope1sProduct2Integrator1Product1Constant
图4.6 死区应用的MATLAB仿真
543210-1041020304050607080
3210-1-2-301020304050607080
图4.6.1和图4.6.2有死区的自适应控制响应与参数估计
通过包含大小为0.7的死区来修改其自适应规律。仿真结果见图4.6.1和图4.6.2。可以看到,跟踪误差保持在理想响应y=3附近,而振动是来自量测噪声。没有任何迹象表明参数会发生漂移。
(4)4.4 线性系统输出反馈自适应控制
10Constants+22s +5s+6Transfer FcnScope1Sine Wave1AddGainSine Wave11s+2Transfer Fcn1-10s-3s+2Transfer Fcn3Add1Add2s+12s -5s+3Transfer Fcn2Scope2Add3Scope
图4.4 线性系统输出反馈自适应控制matlab仿真
10.80.6354x 10-130.40.20-0.2-0.4-1210-0.6-0.8-1051015202530354045-2-350 0102030405060708090100
图4.4.1 r(t)=0 图4.4.2 r(t)=10
43210-1-2-3-40102030405060708090100
图4.4.3r(t)=5cost+10cos5t