Tải bản đầy đủ (.pdf) (28 trang)

Lời giải các bài tập Matlab LQR và LQG nhóm 3 môn điều khiển tối ưu và bền vững lớp cao học ngành tự động hóa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.58 MB, 28 trang )

TRƯỜNG ĐẠI HỌC GIAO THƠNG VẬN TẢI TP. HỒ CHÍ MINH
VIỆN ĐÀO TẠO SAU ĐẠI HỌC

BÁO CÁO
HỌC PHẦN: ĐIỀU KHIỂN TỐI ƯU

Giảng viên hướng dẫn : PGS.TS. ĐẶNG XUÂN KIÊN

TP.Hồ Chí Minh - 2023


PHẦN 1: BÀI TẬP THEO PHƯƠNG PHÁP LQR
1. Bài 1:
Đề bài:
Consider the first-order unstable process:
x ( t )  a x ( t )  u ( t ),a  0

a. Design an LQ controller u(t)=- Lx(t) that minimizes the criterion:


J   ( x 2 (t )   u 2 (t ))dt ,   0.
0

b. Calculate the location of the closed-loop as a function of ρ and discuss what
happens when either ρ  0 or ρ  ∞.

Kết quả tính chọn theo matlab:
a. Thiết kế bộ điều khiển thỏa mản chỉ tiêu chất lượng J.
% Đây là kêt quả tính tốn bài 8.1
% Với các hệ số a,p được chọn thỏa a>,p>0:
a=2;


p=1;
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=a;
B=1;
Q=1;
R=p;
% Nghiệm P của phương trình Ricacdo:
[P]=care(A,B,Q,R);
% Hệ số K sẽ được tính:
[K]=lqr(A,B,Q,R);
disp('K computed via LQR')
K

Kết quả:

1


Như vậy, nếu với hệ số a, p >0, nhóm chọn a=2; p=1 thì luật điều khiển:
u = 4.2361x

b. Xét ảnh hưởng tới hệ thống khi p0 và p ∞
- Khi p0 (R0): làm hệ số K ∞:
% Với các hệ số a,p được chọn thỏa a>,p>0:
a=2;
p=0.000001;
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=a;
B=1;
Q=1;

R=p;
% Nghiệm P của phương trình Ricacdo:
[P]=care(A,B,Q,R);
% Hệ số K sẽ được tính:
[K]=lqr(A,B,Q,R);
disp('K computed via LQR')
K

Kết quả:

-

Khi p∞ (R∞): làm hệ thống mất ổn định.

2


% Với các hệ số a,p được chọn thỏa a>,p>0:
a=2;
p=100000;
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=a;
B=1;
Q=1;
R=p;
% Nghiệm P của phương trình Ricacdo:
[P]=care(A,B,Q,R);
% Hệ số K sẽ được tính:
[K]=lqr(A,B,Q,R);
disp('K computed via LQR')


Kết quả:

2. Bài 2:
Đề bài:
Consider the second-order system:

1 0 
2 1
x (t )  
 x(t )  
 u (t )
1 0 
0 0

y (t) 

5

5

x (t )

Design an LQ controller u(t)=- Lx(t) that minimizes the criterion


J   ( y 2 ( t )  5 u1 2 ( t )  5u 2 2 ( t )) dt
0

What are the poles of the closed-loop system? Also calculate the minimal

1
value of J when the initial state is x(0) 
1

Kết quả tính chọn theo matlab:
3

-


Khi thay y(t)= (5 5)x(t) vào phương trình J ta được:


J=

 (x

T

0

0
 25 25 
T 5

x(t )  u 
 u (t ))dt
 25 25 
0 5


% Đây là kêt quả tính tốn bài 8.2
% Gia tri khoi tao
x0=[-1
1 ];
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=[1 0;
1 0];
B=[2 1
0 0];
C=[5 5];
Q=[25 25
25 25];
R=[5 0
0 5];
% Hệ số K,P,E sẽ được tính:
[K,P,E]=lqr(A,B,Q,R);
%disp('K computed via LQR')
P;
K;
E;
%Tính chỉ tiêu chất lượng J nhỏ nhất:
x0=[-1 1]';
S =[ 7 5; 5 5];
J =(x0'*S*x0)/2;
disp('J minimin')
J
Kết quả:

4



Như vậy 2 cực cần tìm là -1 và -5.
J nhỏ nhất với điều kiện ban đầu x[1;-1] =1.
3. Bài 3:
Đề bài:
Consider a process:

 1 0 
3 
x (t )  
 x (t )    u (t )
 0 2 
2
Show that u(t)= -Lx(t) with
L  ( 2 3 )
can not be an optimal state feedback designed using linear-quadratic control
theory with the cost function


J   ( xT (t )Q1 x(t )  Q2u 2 (t )) dt
0

where Q1, Q2 >0.

Kết quả tính chọn theo matlab:
% Đây là kêt quả tính tốn bài 8.3
% Với các hệ số Q1,Q2 được chọn thỏa Q1>,Q2>0:
Q1=2;
Q2=1;
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:

A=[-1 0;
0 -2];
B=[3
2];
Q=Q1;
R=Q2;
% Nghiệm P của phương trình Ricacdo:
[P]=care(A,B,Q,R);
% Hệ số K sẽ được tính:
[K]=lqr(A,B,Q,R);
disp('K computed via LQR')
P
K
Kết quả:

5


Luật điều khiển: u = [1.0472 ; 0.4410]x
4. Bài 4
Đề bài:
Consider the system

4
 1 1
x (t )  
 x  ( )u
8
2 4 
y ( 1 1 )x

One wishes to minimize the criterion
T

J (T )   (( xT (t )Q1 x(t )  Q2u 2 (t ))dt
0

JdIs it possible to find positive definite weights Q1 and Q2 such that the cost
function J(T)  ∞ as T  ∞?

Kết quả tính chọn theo matlab:

6


% Đây là kêt quả tính tốn bài 8.4
% Các giá trị Q1,Q2 được chọn thỏa Q1>0:
Q1=2;
Q2=0.01;
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=[1 -1;
2 4];
B=[ -4
8];
C=[1 1];
Q=Q1;
R=Q2;
% Nghiệm P của phương trình Ricacdo:
[P]=care(A,B,Q,R);
% Hệ số K sẽ được tính:
[K]=lqr(A,B,Q,R);

disp('K computed via LQR')
P
K

Kết quả:
Khơng tìm được Q, R thỏa mản để xây dựng hàm chỉ tiêu chất lượng J.
5. Bài 5:
Đề bài:
Consider the double integrator

0
0 1
x (t )  
 x (t )  ( )u (t )
1
 0 0
y  ( 1 0 ) x (t )
A set of LQ controllers u(t)=-Lx(r)+Lr(r) have been designed. L was
calculated to minimize the cost function
T

J (T )   (( xT (t )Q1 x(t )  Q2u 2 (t ))dt
0

and Lr was chosen to give unit static gain from r to y. The four plots in
Figure 8.1 show the step responses of the closed-loop system for four different
combinations of weights, Q1, Q2. Pair the combinations of weights given below
with the step responses in Figure 8.1.
1 0
1. Q1  

 , Q2  0.01
0 0
7


1 0
2. Q1  
 , Q2  1
0 0
1 0
3. Q1  
 , Q2  1
0 1
1 0
4. Q1  
 , Q2  1000
0 0

Kết quả tính chọn theo matlab:
TH1: Với Q= [1 0; 0 0] và R=0.01

8


% Đây là kêt quả tính tốn bài 8.5-A
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=[0 1;
0 0];
B=[ 0
1];

C=[1 0];
D =0;
Q=[1 0;
0 0];
R=0.01;
% Hệ số K sẽ được tính:
[K,P]=lqr(A,B,Q,R);
disp('K computed via LQR')
K
% Vi he thong kin, lien tuc
sys= ss((A-B*K),B,C,D);
% Dieu kien ban dau
t=0:50;
x0=[0 0];
[y,t,x] = initial(sys, x0, t);
step(sys,t);

Đồ thị miêu tả:

Thời gian đáp ứng nhanh tầm 2s.

9


TH2: Với Q= [1 0; 0 0] và R=1
% Đây là kêt quả tính tốn bài 8.5
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=[0 1;
0 0];
B=[ 0

1];
C=[1 0];
D =0;
Q=[1 0;
0 0];
R=1;
% Hệ số K sẽ được tính:
[K,P]=lqr(A,B,Q,R);
disp('K computed via LQR')
K
% Vi he thong kin, lien tuc
sys= ss((A-B*K),B,C,D);
% Dieu kien ban dau
t=0:50;
x0=[0 0];
[y,t,x] = initial(sys, x0, t);
step(sys,t);

Đồ thị miêu tả:

10


TH3: Với Q= [1 0; 0 1] và R=1
% Đây là kêt quả tính tốn bài 8.5
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=[0 1;
0 0];
B=[ 0
1];

C=[1 0];
D =0;
Q=[1 0;
0 1];
R=1;
% Hệ số K sẽ được tính:
[K,P]=lqr(A,B,Q,R);
disp('K computed via LQR')
K
% Vi he thong kin, lien tuc
sys= ss((A-B*K),B,C,D);
% Dieu kien ban dau
t=0:10;
x0=[0 0];
[y,t,x] = initial(sys, x0, t);
step(sys,t);

Đồ thị miêu tả:

11


TH4: Với Q= [1 0; 0 0] và R=1000
% Đây là kêt quả tính tốn bài 8.5-D
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:
A=[0 1;
0 0];
B=[ 0
1];
C=[1 0];

D =0;
Q=[1 0;
0 0];
R=1000;
% Hệ số K sẽ được tính:
[K,P]=lqr(A,B,Q,R);
disp('K computed via LQR')
K
% Vi he thong kin, lien tuc
sys= ss((A-B*K),B,C,D);
% Dieu kien ban dau
t=0:50;
x0=[0 0];
[y,t,x] = initial(sys, x0, t);
step(sys,t);

Đồ thị miêu tả:
12


Như vậy với các Q, R đã cho ta có kết quả hình dạng đồ thị như sau:
1. C
2. A
3. D
4. B
6. Bài 6:
Đề bài:
We would like to control the following process with linear-quadratic optimal control:
1
 1 3

x (t )  
 x(t )  ( )u (t )
0.1
 4 8
y  ( 0 1 ) x (t )

The penalty on x12 (t ) should be 1, and the penalty on x2 2 (t ) should be 2. For
u 2 (t ) we will try different penalty values: ρ = 0.01, 1, 100

a. Determine the cost function for the three different cases.
b. Assume that we want to add reference tracking so that y =r instationarity, using the control
law u(t)=Lr(t)-Lx(t). In Matlab, calculatethe three different resulting controllers, calculate the
resulting closed-looppoles and simulate step responses from r to x2 and from r to u. Verify
thatthere is no static error.
13


Kết quả tính chọn theo matlab:
Với điều kiện đề bài, có thể viết lại hàm J như sau:


0
T 1
T
2
(
x
0  0 2 x(t )  u u (t ))dt
% Đây là kêt quả tính tốn bài 8.6
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt là:

A=[1 3;
4 8];
B=[ 1
0.1];
C=[0 1];
D =0;
Q=[1 0;
0 0];
%Chon R
p=3;
switch p
case 1
R=0.01;
case 2
R=1;
case 3
R=10;
otherwise
error('Unknow method')
end
[K,P,E]= lqr(A,B,Q,R);
disp('K computed via LQR')
R
K
P
E
%Initial condition
t_final=30;
x0=[pi;
-2];


Với R=0.01:

14


Với R=1:

Với R=10:

15


Câu b: Mô phỏng matlab:
A = [1 3; 4 8]; B = [1; 0.1]; C = [0 1];
S = ss(A,B,C,0);
Q = [1 0; 0 2]; R_vector = [0.01 1 100];
for i=1:length(R_vector)
[K,P,E] = lqr(S,Q,R_vector(i));
% Calculating Kr (static gain to output should be 1)
Kr = 1/(C/(B*K-A)*B);
% Closed loop from r to u:
Gur = ss(A-B*K,B*Kr,-K,Kr);
% Closed loop from r to y:
Gyr = ss(A-B*K,B*Kr,C,0);
% Plotting step responses
subplot(3,2,i*2-1)
step(Gur)
axis([0 10 -Inf Inf])
title(['Control signal, R=' num2str(Q2_vector(i))])

subplot(3,2,i*2)
step(Gyr)
axis([0 10 -Inf Inf])
title(['Output signal, R=' num2str(Q2_vector(i))])
poles{i} = E;
end
poles{:}

16


7. Bài 7:
Đề bài:
Consider the double integrator
.  (t )  u (t )
with state-space representation

0
0 1
x (t )  
 x (t )  ( )u (t )
1
 0 0
1 0
y 
 x(t )
0 1
where x  ( (t ), (t )) . You would like to design a controller using the criterion



 (

2

(t )   .u 2 (t )) dt

0

for some   0 .
17


a. Show that

S1  2 1/ 4
S
1
S
2


1/ 2
S 
 with S 2  
 S 2 S3 
S 3  2 3/4
solves the Riccati equation.
b. What are the closed-loop poles of the system when using this optimal state
feedback? What happens with the control signal if η is reduced?


Kết quả tính chọn theo matlab:
Với s thỏa:

Với E thỏa:

% Đây là kêt quả tính tốn bài 8.7
% Cac gia tri khoi tao ban đầu;chọn n>0
n=0.1;
% Các giá trị A,B,Q,R theo phương trinh trạng thái lần lượt
là:
A=[0 1;
0 0];
B=[ 0
1];
C=[1 0
0 1];
D=0;
Q=[1 0;
0 0];
R=n;
% Hệ số K sẽ được tính:
[K,P,E]=lqr(A,B,Q,R);
disp('K computed via LQR')
K
P
E
% Vi he thong kin, lien tuc
sys= ss((A-B*K),B,C,D);
% Dieu kien ban dau
t=0:10;

x0=[0 0];
[y,t,x] = initial(sys, x0, t);
step(sys,t);

18


Kết quả:

19


PHẦN 2: MƠ PHỎNG BÀI TỐN CON LẮC NGƯỢC VỚI PHƯƠNG PHÁP LQR
2.1 Mơ hình và xây dựng phương trình trạng thái
2.1.1. Mơ hình con lắc ngược

Hình 2.1: Mơ hình con lắc ngược khi bỏ qua khối lượng thanh lắc.
Trong đó:
l: chiều dài con lắc ngược (m)

M

M: khối lượng xe (kg)

g: gia tốc trọng trường (m/s2)

u: lực tác động vào xe (N)

m: khối lượng con lắc (kg)


x: vị trí xe (m)

θ: góc giữa con lắc ngược và phương thẳng đứng (rad)
2.1.2. Xây dựng phương trình trạng thái
-

Phương trình của con lắc ngược phi tuyến (đã rút gọn):

20


2.2. Xây dựng mơ hình con lắc ngược trên matlab và mô phỏng với simulink
% Tinh toan mo phong con lac nguoc bang LQR
% Bo qua khoi luong thanh lac
clear all;
clc;
close all;
% Khoi tao cac gia tri ban dau
M=1;
% khoi luong xe con
m=0.1; % khoi luong con lac
l=1;
% chieu dai can lac
g=9.81;% gia toc trong truong
% Thay doi cac gia tri q11, q33, r1 de chon bo thong so Q,R toi uu
q11 = 1;
q33 = 100;
r1 = 1;
% Khoi tao cac gia tri A,B,C,D cua phuong trinh trang thai
A=[0 1 0 0;...

10.78 0 0 0;...
0 0 0 1;...
-0.98 0 0 0];
B= [0;-1;0;1];
R=r1;
Q=[q11 0 0 0;...
0 1 0 0;...
0 0 q33 0;...
0 0 0 1] ;
C= [1 0 0 0;...
0 0 1 0];
D = 0;
[K,P,E] = lqr(A,B,Q,R);
disp('K computed via LQR')
P
K

Hình 2.2: Script tính tốn tìm thơng số K và P.
21


Hình 2.3: Kết nối các khối chức năng trong Simulink.
-function [theta_2dot,x_2dot]= conlac(u,theta,theta_dot)
% Khoi tao cac gia tri cho phuong phap LQR
M=1;
m=0.1;
l=1;
g=9.81;
% Khai bao phuong trinh con lac nguoc phi tuyen
x_2dot=(u+m*l*(sin(theta))*theta_dot*theta_dot-m*g*cos(theta)*sin(theta))/(M+mm*cos(theta)*cos(theta));

theta_2dot=(u*cos(theta)(M+m)*g*sin(theta)+m*l*cos(theta)*sin(theta)*theta_dot)/(m*l*cos(theta)*cos(theta)
-(M+m)*l);

Hình 2.4: Khái báo phương trình của con lắc ngược.
 Kết quả tính tốn tìm K và P trong phương pháp LQR

K computed via LQR
P=
769.1196
243.9052
221.0906
173.7696

243.9052 221.0906 173.7696
77.5354 70.5670 55.4263
70.5670 110.5142 60.5670
55.4263 60.5670 44.3749

K=
-70.1356 -22.1091 -10.0000 -11.0514
22


Hình 2.5: Đồ thị biểu diễn kết quả mơ phỏng simulink.
 NHẬN XÉT:
Khi tiến hành chọn các thông số Q, R cho bộ điều khiển.
- Nếu ta muốn trạng thái đáp ứng nhanh ta tiên hành tăng các thành phần Q
tương ứng. Ở đây Q ta chọn là một ma trận 4x4 ứng với:
 Khi tăng Q11 thì sẽ tăng đáp ứng của góc lệch θ
 Khi tăng Q22 thì tăng đáp ứng của vận tốc góc ω hay θ

 Khi tăng Q33 thì tăng đáp ứng của vị trí xe 𝑥
 Khi tăng Q44 thì tăng đáp ứng của vận tốc xe 𝑣 hay 𝑥̇
- Muốn giảm năng lượng thì ta tăng giá trị R lớn

23


PHẦN 3: MƠ PHỎNG BÀI TỐN CON LẮC NGƯỢC VỚI PHƯƠNG PHÁP LQG
3.1. Mục tiêu phương pháp LQG
Mục tiêu là xây dựng hệ thống điều khiển con lắc ngược, và sử dụng bộ điều khiển LQR
sau đó tiến hành lọc nhiễu bằng cách kết hợp với bộ lọc Kalman để tạo ra bộ điều khiển
cuối cùng là bộ điều khiển LQG sau đó xem kết quả sự khác nhau giữa 2 bộ điều khiển.
LQG = LQR + Lọc Kalman
3.2. Xây dựng mơ hình con lắc ngược trên matlab và mơ phỏng với simulink
% Tinh toan mo phong con lac nguoc bang LQG
% Bo qua khoi luong thanh lac
clear all;
clc;
close all;
% Khoi tao cac gia tri ban dau
M=1;
% khoi luong xe con
m=0.1; % khoi luong con lac
l=1;
% chieu dai can lac
g=9.81;% gia toc trong truong
% Thay doi cac gia tri q11, q33, r1 de chon bo thong so Q,R toi uu
q11 = 1;
q33 = 100;
r1 = 1;

% Khoi tao cac gia tri A,B,C,D cua phuong trinh trang thai
A=[0 1 0 0;...
10.78 0 0 0;...
0 0 0 1;...
-0.98 0 0 0];
B= [0;-1;0;1];
R=r1;
Q=[q11 0 0 0;...
0 1 0 0;...
0 0 q33 0;...
0 0 0 1] ;
C= [1 0 0 0;...
0 0 1 0];
%D = 0;
% phuong pháp LQG
D= zeros(size(C,1),size(B,2));
% QN&RN la phuong sai nhieu do luong ung voi gia tri goc lech con lac & vi
tri xe
QN=0.000001*eye(4);
RN=[0.001 0;0 0.01];
% Tim K lqr
%K=lqr(A,B,Q,R)
[K,P,E] = lqr(A,B,Q,R);
disp('K computed via LQR')
%disp('K computed via LQG')
P
K
% Tim L kalman filter
[L,P] = lqe(A,eye(4),C,QN,RN)


Hình 3.1: Script tính tốn tìm thơng số K, P và L.
24


×