最优控制实验.docx
《最优控制实验.docx》由会员分享,可在线阅读,更多相关《最优控制实验.docx(11页珍藏版)》请在冰豆网上搜索。
最优控制实验
最优化与最优控制实验
班级:
姓名:
学号:
指导教师:
实验一:
M=2kg.m=1kg
L=0.5mg=9.8m/s^2
可以求得A=[0100;00-4.90;0001;0029.40];
B=[0;0.5;0;-1];
C=[1 0 0 0;0 0 1 0];
D=0;
Q=diag([1,0,1,0]);
R=[1];
[K,P,e]=lqr(A,B,Q,R); Ac=A-B*K; Bc=B;
Cc=C;
Dc=D;
T=0:
0.02:
6;
U=ones(size(T));
[Y,X]=lsim(Ac,Bc,Cc,Dc,U,T);
plot(T,Y(:
1),'.-',T,Y(:
2)); xlabel('Time(sec)'); ylabel('Response'); grid;
legend('cart','pendulum')
disp('K='),disp(K);
disp('P='),disp(P);
disp('Q='),disp(Q);
A=[0100;00-4.90;0001;0029.40];
B=[0;0.5;0;-1];
C=[1000;0010];
D=0;
Q=diag([1,1,1,1]);
R=[0.1];
[K,P,e]=lqr(A,B,Q,R);Ac=A-B*K;Bc=B;
Cc=C;
Dc=D;
T=0:
0.02:
6;
U=ones(size(T));
[Y,X]=lsim(Ac,Bc,Cc,Dc,U,T);
plot(T,Y(:
1),'.-',T,Y(:
2));xlabel('Time(sec)');ylabel('Response');grid;
legend('cart','pendulum')
disp('K='),disp(K);
disp('P='),disp(P);
disp('e='),disp(e);
K=
-3.1623-6.6417-82.2581-16.5062
P=
2.10031.70565.21971.1690
1.70563.04979.79402.1890
5.21979.794065.796313.1228
1.16902.189013.12282.7451
e=
-7.3085+0.0000i
-4.0976+0.0000i
-0.8897+0.4933i
-0.8897-0.4933i
将r改为10的图像:
K=
-0.3162-1.5313-64.1858-12.0873
P=
1.0e+03*
0.00480.01120.03820.0088
0.01120.05050.17630.0405
0.03820.17633.80740.7300
0.00880.04050.73000.1411
e=
-5.5827+0.0000i
-5.2675+0.0000i
-0.2357+0.2232i
-0.2357-0.2232i
实验二:
(1)
代码:
A=[0,1;-1,-1];
B=[1;1];
C=[01];
D=0;
Q1=[0,1];
Q=diag(Q1);
N=[0;2];
K=dlqr(A,B,Q,R,N)
Ac=(A-B*K);
Bc=B;
Cc=C;
Dc=D;
T=0:
0.01:
15;
U=ones(size(T));
sys_c=ss(Ac,Bc,Cc,Dc);
[Y,T,X]=lsim(sys_c,U,T);
sys_c=ss(Ac,Bc,Cc,Dc);
[Y,T,X]=lsim(sys_c,U,T);
figure
(1)%½¨Á¢Í¼ÐÎ
plot(T,Y)%ÖÆͼ£¬ÒÔTΪºá×ø±ê£¬YΪ×Ý×ø±ê
xlabel('time(s)');%ºá×ø±ê
ylabel('move(m)');
legend('½Ç¶È','u','dlb2')
K值:
K=
-0.19640.0906
图标:
(2)
代码:
A=[0,1;-1,-1];
B=[1;1];
C=[01];
D=0;
Q1=[1,1];
Q=diag(Q1);
N=[1;1];
K=dlqr(A,B,Q,R,N)
Ac=(A-B*K);
Bc=B;
Cc=C;
Dc=D;
T=0:
0.01:
15;
U=ones(size(T));
sys_c=ss(Ac,Bc,Cc,Dc);
[Y,T,X]=lsim(sys_c,U,T);
sys_c=ss(Ac,Bc,Cc,Dc);
[Y,T,X]=lsim(sys_c,U,T);
figure
(1)%½¨Á¢Í¼ÐÎ
plot(T,Y)%ÖÆͼ£¬ÒÔTΪºá×ø±ê£¬YΪ×Ý×ø±ê
xlabel('time(s)');%ºá×ø±ê
ylabel('move(m)');
legend('½Ç¶È','u','dlb2')
K值:
K=
-0.28170.0000
图像:
(1)Q=[1000;01];R=[1];A=[01;-11];B=[1;1];KX=dlqr(A,B,Q,R);
[K,S]=[-0.0188,0.9904]
用上述方法进行迭代