自适应控制实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

k c t t

实验一

一、 可增益Lyapunov-MRAC 算法

1.1 步骤:

已知:

N (s )

D (s )

第一步:选择参考模型,即Gm (s );

第二步:选择输入信号 y r (t )和自适应增益γ;

第三步:采样当前参考模型输出 y m (t )和系统实际输出 y p (t );

第四步:利用公式 &

( )= γe (t ) y r (t ) 和公式 u ( )= k c (t ) y r (t ) ;

第五步:t t+h ,返回第三步,继续循环。

1.2 考虑如下被控方对象模型:

G p (s )=

选择参考模型为:

k p (s + 1) s 2 + 5s + 1 , k p 未知(仿真时取 k p =1)

G m (s )= k m (s + 1) s 2 + 5s + 1

, k m =1

因为 G P (s )、 G m (s )均为严格正实函数。取自适应增益γ=0.2,输入 y r 为 方波信号,幅值r=1,采用可调增益Lyapunov-MRAC 算法,仿真程序以及仿真结 果如下。

二、仿真程序

%可调增益Lyapunov-MRAC

clear all ;close all ;

h=0.1;L=100/h;%数值积分步长和仿真步数

num=[1 1];den=[1 5 1];n=length(den)-1; kp=1;[Ap,Bp,Cp,Dp]=tf2ss(kp*num,den); km=1;[Am,Bm,Cm,Dm]=tf2ss(km*num,den); gamma=0.2;

yr0=0;u0=0;e0=0;

xp0=zeros(n,1);xm0=zeros(n,1); kc0=0;

r=1;yr=r*[ones(1,L/4) -ones(1,L/4) ones(1,L/4) -ones(1,L/4)]; for k=1:L;

time(k)=k*h;

y m (t )、y p (t )

u (t )

xp(:,k)=xp0+h*(Ap*xp0+Bp*u0); yp(k)=Cp*xp(:,k);

xm(:,k)=xm0+h*(Am*xm0+Bm*yr0); ym(k)=Cm*xm(:,k); e(k)=ym(k)-yp(k);

kc=kc0+h*gamma*e0*yr0;%Lyapunov-MRAC 自适应律 u(k)=kc*yr(k); %更新数据

yr0=yr(k);u0=u(k);e0=e(k); xp0=xp(:,k);xm0=xm(:,k); kc0=kc; end

subplot(2,1,1);

plot(time,ym,'r',time,yp,':');

xlabel('t');ylabel('y_m(t)、y_p(t)'); legend('y_m(t)','y_p(t)'); subplot(2,1,2); plot(time,u);

xlabel('t');ylabel('u(t)');

三、仿真结果

2

1 0

-1

2

1

-1

-2y m (t) y p (t)

0 10 20 30 40 50 60 70 80 90 100

t

t

第一步:设置初值 和 ,输入初始数据;( )0θ

( )0P

∧ 参数 ,即 、 和 ;θG

f C 取初值P(0)=

I 、 =0.01,

的下界为 =0.1,期望输出

为610

( )0θ

f min f

( )ky r 第三步: 构造观测数据向量 ,利用递推算法在线实时估计控制器(

)dk -ϕ 实验二

一、最小方差直接自校正控制算法

1.1 步骤:

已知:模型阶次 n a 、 n b 、 n c 及纯延时d 。

第二步:采用当前实际输出 y (k ) 和期望输出 y r (k + d ) ; ∧

∧ ∧ ∧

第四步:计算并实施 u (k );

第五步:k k+h ,返回第二步,继续循环。

1.2 考虑如下被控方对象模型:

y(k)-1.7y(k-1)+0.7y(k-2)=u(k-4)+0.5u(k-5)+ξ(k)+0.2ξ(k-1)

式中,ξ(k)为方差为0.1的白噪声。

∧ ∧

幅值为10的方波信号,采用最小方差直接自校正控制算法,其控制效果如图 1、2.

二、仿真程序

%最小方差直接自校正控制

a=[1 -1.7 0.7];b=[1 0.5];c=[1 0.2];d=4;

na=length(a)-1;nb=length(b)-1;nc=length(c)-1; nf=nb+d-1;ng=na-1; L=400;

uk=zeros(d+nf,1); yk=zeros(d+ng,1); yek=zeros(nc,1); yrk=zeros(nc,1); xik=zeros(nc,1);

yr=10*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4+d,1)]; xi=sqrt(0.1)*randn(L,1); %递推估计初值

thetaek=zeros(na+nb+d+nc,d);

P=10^6*eye(na+nb+d+nc);

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];

%递推增广最小二乘法

phie=[yk(d:d+ng);uk(d:d+nf);-yek(1:nc)];

K=P*phie/(1+phie'*P*phie);

thetae(:,k)=thetaek(:,1)+K*(y(k)-phie'*thetaek(:,1));

P=(eye(na+nb+d+nc)-K*phie')*P;

ye=phie'*thetaek(:,d);

%提取辨识参数

ge=thetae(1:ng+1,k)';fe=thetae(ng+2:ng+nf+2,k)';ce=[1 thetae(ng+nf+3:ng+nf+2+nc,k)'];

if abs(ce(2))>0.9

ce(2)=sign(ce(2))*0.9;

end

if fe(1)<0.1

fe(1)=0.1;

end

u(k)=(-fe(2:nf+1)*uk(1:nf)+ce*[yr(k+d:-1:k+d-

min(d,nc));yrk(1:nc-d)]-ge*[y(k);yk(1:na-1)])/fe(1);%控制量

%更新数据

for i=d:-1:2

thetaek(:,i)=thetaek(:,i-1);

end

thetaek(:,1)=thetae(:,k);

for i=d+nf:-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;

yek(i)=yek(i-1);

相关文档
最新文档