当前位置:文档之家› 基于RBFNN的直接模型参考自适应控制

基于RBFNN的直接模型参考自适应控制

自动化专业综合设计报告
设计题目:
基于RBFNN的直接模型参考自适应控制所在实验室:matlab仿真实验室
指导教师:杜
学生姓名
班级文自112-2 学号201190
成绩评定:
仿真截图
三角输入
clear all;
close all;
u_1=0;
y_1=0;
ym_1=0;
x=[0,0,0]';
c=[-3 -2 -1 1 2 3;
-3 -2 -1 1 2 3;
-3 -2 -1 1 2 3];
b=2*ones(6,1);
w=[ 0.8283
0.3887
-0.8872
-0.3668
0.8233
0.8274];
xite=0.45;
alfa=0.05;
h=[0,0,0,0,0,0]';
c_1=c;c_2=c;
b_1=b;b_2=b;
w_1=w;w_2=w;
ts=0.001;
for k=1:1:4000
time(k)=k*ts;
r(k)=0.2*sawtooth(2*pi*k*ts,0.5);
ym(k)=0.6*ym_1+r(k);
y(k)=(-0.1*y_1+u_1)/(1+y_1^2); %Nonlinear plant
for j=1:1:6
h(j)=exp(-norm(x-c(:,j))^2/(2*b(j)*b(j)));
end
u(k)=w'*h;
ec(k)=ym(k)-y(k);
dyu(k)=sign((y(k)-y_1)/(u(k)-u_1));
d_w=0*w;
for j=1:1:6
d_w(j)=xite*ec(k)*h(j)*dyu(k);
end
w=w_1+d_w+alfa*(w_1-w_2);
d_b=0*b;
for j=1:1:6
d_b(j)=xite*ec(k)*w(j)*h(j)*(b(j)^-3)*norm(x-c(:,j))^2*dyu(k);
end
b=b_1+d_b+alfa*(b_1-b_2);
d_c=0*c;
for j=1:1:6
for i=1:1:3
d_c(i,j)=xite*ec(k)*w(j)*h(j)*(x(i)-c(i,j))*(b(j)^-2)*dyu(k);
end
end
c=c_1+d_c+alfa*(c_1-c_2);
u_1=u(k);
y_1=y(k);
ym_1=ym(k);
x(1)=r(k);
x(2)=ec(k);
x(3)=y(k);
w_2=w_1;w_1=w;
c_2=c_1;c_1=c;
b_2=b_1;b_1=b;
end
figure(1);
plot(time,ym,'r',time,y,'b');
xlabel('time(s)');ylabel('ym,y');
figure(2);
plot(time,u);
xlabel('time(s)');ylabel('Control input');
锯齿波输入
clear all;
close all;
u_1=0;
y_1=0;
ym_1=0;
x=[0,0,0]';
c=[-3 -2 -1 1 2 3;
-3 -2 -1 1 2 3;
-3 -2 -1 1 2 3];
b=2*ones(6,1);
w=[
0.7721
-0.9147
-0.3252
0.7526
1.2318
0.6602];
xite=0.13;
alfa=0.1;
h=[0,0,0,0,0,0]';
c_1=c;c_2=c;
b_1=b;b_2=b;
w_1=w;w_2=w;
ts=0.001;
for k=1:1:5000
time(k)=k*ts;
r(k)=0.29*sawtooth(2*pi*k*ts,1);
ym(k)=0.6*ym_1+r(k);
y(k)=(-0.1*y_1+u_1)/(1+y_1^2);
for j=1:1:6
h(j)=exp(-norm(x-c(:,j))^2/(2*b(j)*b(j)));
end
u(k)=w'*h;
ec(k)=ym(k)-y(k);
dyu(k)=sign((y(k)-y_1)/(u(k)-u_1));
d_w=0*w;
for j=1:1:6
d_w(j)=xite*ec(k)*h(j)*dyu(k);
end
w=w_1+d_w+alfa*(w_1-w_2);
d_b=0*b;
for j=1:1:6
d_b(j)=xite*ec(k)*w(j)*h(j)*(b(j)^-3)*norm(x-c(:,j))^2*dyu(k);
end
b=b_1+d_b+alfa*(b_1-b_2);
d_c=0*c;
for j=1:1:6
for i=1:1:3
d_c(i,j)=xite*ec(k)*w(j)*h(j)*(x(i)-c(i,j))*(b(j)^-2)*dyu(k);
end
end
c=c_1+d_c+alfa*(c_1-c_2);
%Return of parameters
u_1=u(k);
y_1=y(k);
ym_1=ym(k);
x(1)=r(k);
x(2)=ec(k);
x(3)=y(k);
w_2=w_1;w_1=w;
c_2=c_1;c_1=c;
b_2=b_1;b_1=b;
end
figure(1);
plot(time,ym,'r',time,y,'b');
xlabel('time(s)');ylabel('ym,y');
figure(2);
plot(time,u);
xlabel('time(s)');ylabel('Control input');
阶跃信号输入
clear all;
close all;
u_1=0;
y_1=0;
ym_1=0;
x=[0,0,0]';
c=[-3 -2 -1 1 2 3;
-3 -2 -1 1 2 3;
-3 -2 -1 1 2 3];
b=2*ones(6,1);
w=[-0.6418
0.9776
0.0093
0.1179
0.8851
0.5034];
xite=0.45;
alfa=0.05;
h=[0,0,0,0,0,0]';
c_1=c;c_2=c;
b_1=b;b_2=b;
w_1=w;w_2=w;
ts=0.001;
for k=1:1:4000
time(k)=k*ts;
r(k)=0.2*heaviside(2*pi*k*ts);
ym(k)=0.6*ym_1+r(k);
y(k)=(-0.1*y_1+u_1)/(1+y_1^2); %Nonlinear plant for j=1:1:6
h(j)=exp(-norm(x-c(:,j))^2/(2*b(j)*b(j))); end
u(k)=w'*h;
ec(k)=ym(k)-y(k);
dyu(k)=sign((y(k)-y_1)/(u(k)-u_1));
d_w=0*w;
for j=1:1:6
d_w(j)=xite*ec(k)*h(j)*dyu(k);
end
w=w_1+d_w+alfa*(w_1-w_2);
d_b=0*b;
for j=1:1:6
d_b(j)=xite*ec(k)*w(j)*h(j)*(b(j)^-3)*norm(x-c(:,j))^2*dyu(k);
end
b=b_1+d_b+alfa*(b_1-b_2);
d_c=0*c;
for j=1:1:6
for i=1:1:3
d_c(i,j)=xite*ec(k)*w(j)*h(j)*(x(i)-c(i,j))*(b(j)^-2)*dyu(k);
end
end
c=c_1+d_c+alfa*(c_1-c_2);
%Return of parameters
u_1=u(k);
y_1=y(k);
ym_1=ym(k);
x(1)=r(k);
x(2)=ec(k);
x(3)=y(k);
w_2=w_1;w_1=w;
c_2=c_1;c_1=c;
b_2=b_1;b_1=b;
end
figure(1);
plot(time,ym,'r',time,y,'b');
xlabel('time(s)');ylabel('ym,y');
figure(2);
plot(time,u);
xlabel('time(s)');ylabel('Control input');。

相关主题