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

Lời giải các bài tập Matlab LQR và LQG nhóm 2 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.98 MB, 28 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

BỘ GIAO THÔNG VẬN TẢI

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM
--------- oOo --------

BÁO CÁO GIỮA KỲ
MÔN HỌC: ĐIỀU KHIỂN TỐI ƯU VÀ
BỀN VỮNG

TP.HCM, 2023


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Bài tập LQR
Câu 8.1:
+ Đề bài :

+ Bài giải :
A)
a = -1;
A = a;
B = 1;
C = 1;
D = 0;
sys = ss(A,B,C,D);
Q = eye(1); % trọng lượng trên biến trạng thái


R = 1; % trọng lượng trên biến kiểm soát
[K,S,e] = lqr(sys,Q,R);
rho = 1;
tspan = 0:0.01:10;
x0 = 1;
u = @(t,x) -K*x; % xử lý chức năng cho đầu vào bộđiều
khiển
[t,y] = ode45(@(t,x) A*x + B*u(t,x), tspan, x0); % mơ
phỏng hệ thống vịng kín
2


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

figure;
plot(t,y,'LineWidth',2);
title(' Phản hồi bước đầu vào với điều khiển LQR ');
xlabel('Thời gian (s)');
ylabel('Biến trạng thái');
legend('x');

B)
Để tính tốn vị trí vịng kín dưới dạng hàm của ρ, trước tiên chúng ta cần
xác định hàm truyền của nhà máy và bộ điều khiển. Đối với quy trình bậc
nhất có hằng số thời gian là a, hàm truyền đạt là:
Gp(s) = 1 / (as + 1)
Đối với bộ điều khiển tỷ lệ có độ lợi Kp, hàm truyền đạt là:
Gc(s) = Kp

Hàm truyền tổng thể của hệ thống vịng kín có thể thu được bằng cách
nhân các hàm truyền của nhà máy và bộ điều khiển như sau:
3


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

G(s) = Gc(s)Gp(s)
= Kp / (as + 1)
Phương trình đặc trưng của vịng kín thu được bằng cách đặt mẫu số của
G(s) bằng 0, điều này mang lại cho chúng ta:
as + 1 + Kp = 0
Đây là một phương trình bậc nhất và gốc của nó được cho là:
s = -1/a - Kp/a
Hệ thống vịng kín ổn định nếu phần thực của s âm, nghĩa là Re(s) < 0.
Do đó, chúng ta cần đảm bảo rằng:
-1/a - Kp/a < 0
Điều này đơn giản hóa thành:
Kp > -a
Do đó, vị trí vịng lặp kín được đưa ra là:
s = -1/a - Kp/a
Điều gì xảy ra khi ρ: ρ 0 hoặc ρ ∞.
Trường hợp 1: Khi ρ 0
Khi độ lợi của bộ điều khiển rất nhỏ (gần bằng 0), vị trí vịng kín bị chi
phối bởi động lực học của nhà máy. Nói cách khác, hệ thống vịng kín
hoạt động tương tự như hệ thống vòng hở với hàm truyền là Gp(s). Do đó,
hệ thống vịng kín có khả năng không ổn định nếu nhà máy không ổn
định (a > 0).

Trường hợp 2: Khi ρ ∞.
Khi độ lợi của bộ điều khiển rất lớn (gần đến vô cùng), vị trí của vịng kín
bị chi phối bởi động lực học của bộ điều khiển. Nói cách khác, hệ thống
vịng kín hoạt động tương tự như một bộ tích phân thuần túy với hàm
truyền là Kp/s. Do đó, hệ thống vịng kín có khả năng ổn định đối với bất
kỳ giá trị nào của a. Tuy nhiên, phản hồi của hệ thống có thể trở nên
chậm chạp do độ lợi của bộ điều khiển quá mức.
Câu 8.2 :
+ Đề bài :

4


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

+ Bài giải :
A = [0 1; -3 -1];
B = [0; 4];
C = [1 0];
D = 0;
Q = [1 0; 0 1];
R = 5;
[K, S, poles] = lqr(A, B, Q, R);
display(poles);
sys_cl = ss(A - B*K, B, C, D);
x0 = [1; 1]; % or x0 = [11; 0];
t = linspace(0, 10, 100);
u = initial(sys_cl, x0, t);

lsim(sys_cl, u, t, x0);

Xác định các ma trận hệ thống `A`, `B`, `C`, và `D`, và các ma trận trọng
số `Q` và `R` cho bộ điều khiển LQ. Sau đó, sử dụng hàm `lqr()` để tính
tốn độ lợi của bộ điều khiển tối ưu `K`, nghiệm của phương trình Riccati
`S` và các cực của hệ thống vịng kín.
Các cực của hệ thống vịng kín là:
poles =
-0.5984 + 1.3324i
-0.5984 - 1.3324i
Để tính giá trị tối thiểu của J, có thể mơ phỏng hệ thống vịng kín bằng
cách sử dụng các hàm `ss()` và `initial()`, sau đó sử dụng hàm `lsim()` để
vẽ biểu đồ phản hồi. Giả sử trạng thái ban đầu là `x0 = [11; 0]`, mã xuất
ra biểu đồ sau:
J_min = trapz(t, yd.^2 + 5*u.^2);
display(J_min);
Giá trị nhỏ nhất của J là:
J_min =44.7173
Câu 8.3 :
+ Đề bài :
5


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

+ Bài giải:
A = [-1 0; 0 -2];
B = [3;2];

Q1=12;
Q2=5;
[L]

= lqr(A,B,Q1,Q2)

Giả sử cho Q1=12, Q2=5, ta tính ra được L= [1.1678 0.4967]
Thử thêm 1 vài trường hợp khác với Q1,Q2>0, ta thấy L2 luôn >0
=> L (2 -3) không thỏa
Câu 8.4 :
+ Đề bài:

6


Môn học: Điều khiển tối ưu và bền vững

+ Bài giải:
A = [1,

-1;

2,

4];

B = [-4;
8];
C = [1, 1];
D = 0;

Q1 = [0.00001 0;0 0.00001];
Q2 = 0.00001;
K = lqr(A,B,Q1,Q2)
sys = ss((A-B*K),B,C,D);
step(sys)

Khi giả sử các trường hợp cho Q1,Q2:
+ Q1, Q2 vô cùng bé
+ Q1, Q2 vô cùng lớn
7

PGS TS. Đặng Xuân Kiên


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

+ Q1, Q2 là số bất kì dương
Thì đều cho ra kết quả không thực hiện được
=> Không có Q1, Q2 thỏa điều kiện đề cho
Câu 8.5 :
+ Đề bài :

+ Bài giải:
Thay các giá trị Q1, Q2 đề cho vào code, ta được các đồ thị sau:
A) Q1 = [1 0;0 0]; Q2 = 0.01
A = [0 1; 0 0];
B = [0; 1];
C = [1 0];

D = 0;
Q1=[1 0;0 0];
8


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Q2= 0.01;
[K, S, e] = lqr(A, B, Q1, Q2);
L = -K;
Ac = [(A+B*L)];
Bc = [B];
Cc = [C];
Dc = [D];
sys_cl = ss(Ac, Bc, Cc, Dc);
t = 0:0.01:10;
r = ones(size(t));
[y, t, x] = lsim(sys_cl,r,t);
plot(t,y);
xlabel('Time (sec)');
ylabel('Output');
title('Phản ứng từng bước của Hệ thống được Kiểm soát
bởi LQR');

9


Môn học: Điều khiển tối ưu và bền vững


PGS TS. Đặng Xuân Kiên

B) Q1 = [1 0;0 0]; Q2 = 1
A = [0 1; 0 0];
B = [0; 1];
C = [1 0];
D = 0;
Q1=[1 0;0 0];
Q2= 1;
[K, S, e] = lqr(A, B, Q1, Q2);
L = -K;
Ac = [(A+B*L)];
Bc = [B];
Cc = [C];
Dc = [D];
sys_cl = ss(Ac, Bc, Cc, Dc);
t = 0:0.01:10;
r = ones(size(t));
[y, t, x] = lsim(sys_cl,r,t);
plot(t,y);
xlabel('Time (sec)');
ylabel('Output');
title('Phản ứng từng bước của Hệ thống được Kiểm soát
bởi LQR');

10


Môn học: Điều khiển tối ưu và bền vững


C) Q1 = [1 0;0 1]; Q2 = 1
A = [0 1; 0 0];
B = [0; 1];
C = [1 0];
D = 0;
Q1=[1 0;0 1];
Q2= 1;
[K, S, e] = lqr(A, B, Q1, Q2);
L = -K;
Ac = [(A+B*L)];
Bc = [B];
Cc = [C];
Dc = [D];
sys_cl = ss(Ac, Bc, Cc, Dc);
t = 0:0.01:10;
r = ones(size(t));
[y, t, x] = lsim(sys_cl,r,t);
11

PGS TS. Đặng Xuân Kiên


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

plot(t,y);
xlabel('Time (sec)');
ylabel('Output');

title('Phản ứng từng bước của Hệ thống được Kiểm soát
bởi LQR');

D) Q1 = [1 0;0 0]; Q2 = 1000
A = [0 1; 0 0];
B = [0; 1];
C = [1 0];
D = 0;
Q1=[1 0;0 0];
Q2= 1000;
[K, S, e] = lqr(A, B, Q1, Q2);
L = -K;
Ac = [(A+B*L)];
Bc = [B];
Cc = [C];
12


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Dc = [D];
sys_cl = ss(Ac, Bc, Cc, Dc);
t = 0:0.01:10;
r = ones(size(t));
[y, t, x] = lsim(sys_cl,r,t);
plot(t,y);
xlabel('Time (sec)');
ylabel('Output');

title('Phản ứng từng bước của Hệ thống được Kiểm soát
bởi LQR');

Câu 8.6 :
+ Đề bài:

13


Môn học: Điều khiển tối ưu và bền vững

+ Bài giải :
A)
Ta có: Q = [ 1 0; 0 2]
R=p= 0.01 , 1, 100
Phương trình có được:

Với p = 0.01, p = 10, p = 1000
B)
A = [1 3; 4 8];
14

PGS TS. Đặng Xuân Kiên


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

B = [1; 0.1];

C = [0 1];
P = ss(A,B,C,0);
Q1 = [1 0;
0 2];
Q2_vector = [0.01 1 100];
clf
for i=1:length(Q2_vector)
[L,S,E] = lqr(P,Q1,Q2_vector(i));
% Tính tốn Lr:
Lr = 1/(C/(B*L-A)*B);
% Vịng lặp từ r đến u :
Gur = ss(A-B*L,B*Lr,-L,Lr);
% Vòng lặp từ r đến y :
Gyr = ss(A-B*L,B*Lr,C,0);
% Vẽ sơ đồ
subplot(3,2,i*2-1)
step(Gur)
axis([0 10 -Inf Inf])
title(['Control signal, Q_2=' num2str(Q2_vector(i))])
subplot(3,2,i*2)
step(Gyr)
axis([0 10 -Inf Inf])
title([' Output signal, Q_2=' num2str(Q2_vector(i))])
poles{i} = E;
end
poles{:}

Thay đổi các giá trị của p = 0.01, 1, 100 vào code bằng vòng lặp for, ta
xuất được 3 đồ thị theo từng giá trị
15



Môn học: Điều khiển tối ưu và bền vững

Câu 8.7 :
+ Đề bài :

16

PGS TS. Đặng Xuân Kiên


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

+ Bài giải:
Giả sử cho n=1
n=1;
A=[0 1;0 0];
B= [0;1];
C= [1 0;0 1];
Q= [1 0; 0 0];
R=n;
[K,P,E] = lqr(A,B,Q,R);
K
P
E

Bài tập: Mơ phỏng LQR cần trục 2D (gantry crane)

- Tính toán:
clc, clear all;
x1=0,x2=0,x3=0,x4=0,Fx=0;
A =[0,1,0,0;
0, 0,- (x4^2*cos(x3) + (981*cos(x3)^2)/100 (981*sin(x3)^2)/100)/(cos(x3)^2 - 349/100) 17


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

(2*cos(x3)*sin(x3)*(sin(x3)*x4^2 + Fx +
(981*cos(x3)*sin(x3))/100))/(cos(x3)^2 - 349/100)^2,
-(2*x4*sin(x3))/(cos(x3)^2 - 349/100);
0,0,0,1;
0,(x4^2*cos(x2)*cos(x3))/(cos(x3)^2 - 349/100),
(2*cos(x3)*sin(x3)*(cos(x3)*sin(x2)*x4^2 +
(60230191438406621*sin(x3))/1759218604441600 +
Fx*cos(x3)))/(cos(x3)^2 - 349/100)^2 (sin(x2)*sin(x3)*x4^2 (60230191438406621*cos(x3))/1759218604441600 +
Fx*sin(x3))/(cos(x3)^2 - 349/100),
(2*x4*cos(x3)*sin(x2))/(cos(x3)^2 - 349/100)];
B =[ 0;
-1/(cos(x3)^2 - 349/100);
0;
cos(x3)/(cos(x3)^2 - 349/100)];
Q=[1 0 0 0;0 1 0 0; 0 0 1 0; 0 0 0 1]; % co the thay
doi gia tri Q1,Q2,Q3,Q4 de tim ma tran trong so hieu
qua
R=1; % co the thay doi gia tri R
K=lqr(A,B,Q,R)


- Thông số mô phỏng:
clc,clear all;
x_init=0;
x_dot_init=0;
teta_init=0.03;
teta_dot_init=0;
K =[1.0000

2.8432

-0.5087

KẾT QUẢ THU ĐƯỢC:
1. DAO ĐỘNG TẠI VỊ TRÍ BAN ĐẦU

18

-0.2412]


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Mô phỏng hệ cần trục trên simulink

Kết quả teta thu được

19



Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Kết quả x thu được
2. DI CHUYỂN CẦN TRỤC 1 KHOẢNG 20CM VỀ BÊN PHẢI
GÓC TỌA ĐỘ BAN ĐẦU

20


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Kết quả teta thu được

Kết quả x thu được
21


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

3. DI CHUYỂN CẦN TRỤC 1 KHOẢNG VỀ BÊN TRÁI 30 CM SO
VỚI GÓC TỌA ĐỘ BAN ĐẦU


Kết quả teta thu được
22


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Kết quả x thu được

Bài tập LQG
Ví dụ 1:
A = [0 1 0;0 0 1;1 0 0];
B = [0.3 1;0 1;-0.3 0.9];
C = [1.9 1.3 1];
D = [0.53 -0.61];
sys = ss(A,B,C,D);
nx = 3; %Số trạng thái
ny = 1; %Số ngõ ra
Qn = [4 2 0;2 1 0; 0 0 1];
23


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Q = 1;
Rn = 0.7;
R = [1 0;0 2]

QXU = blkdiag(0.1*eye(nx),R); %Ma trận trọng số
QWV = blkdiag(Qn,Rn);

%Ma trận phương sai nhiễu

QI = eye(ny);
Kr = lqr(A,B,Q,R);
KLQG = lqg(sys,QXU,QWV)

Mô phỏng simulink

Kết quả thu được
24


Môn học: Điều khiển tối ưu và bền vững

PGS TS. Đặng Xuân Kiên

Ví dụ 2 : BÀI TẬP CON LẮC NGƯỢC
Bài giải :
clc
clear
M = 1;
m = 0.1;
l = 1;
g = 9.81;
theta_init = 0.1;
theta_dot_init = 0;
x_init = 0;

x_dot_init = 0;
A = [0 1 0 0;10.78 0 0 0;0 0 0 1;-0.98 0 0 0];
B = [0;-1;0;1];
C = [1 0 0 0;0 0 1 0];
D = 0;
%Q = C'*C;
Q = [10 0 0 0;0 1 0 0;0 0 100 0;0 0 0 1];
R = 1;
G = diag([1 1 1 1]);
Qn = diag([0.000001 100 0 10000]);
P = care(A,B,Q,R);
K = lqr(A,B,Q,R);
Rn = [0.001 0;0 1];
L = lqe(A,G,C,Qn,Rn)

25


×