CHỈ TIÊU CHẤT LƯỢNG
Chỉ tiêu chất lượng (Hàm mục tiêu):
( )
dtytyISE
r
2
0
)(minmin
∫
−=
∞
Integral of square error
Giới hạn tín hiệu điều khiển : max |u(t)| <= M
Giảm năng lượng tiêu hao
∫
∞
0
2
)(min dttu
Chỉ tiêu chất lượng toàn phương:
( )
dttuteJ
∫
+=
∞
0
22
)()(min
λ
Ví dụ : Tìm K để
cực tiểu ISE
r
e
u
K
1/s y
TỐI ƯU THAM SỐ
Hàm truyền sai số
Ks
s
sR
sE
+
=
)(
)(
Với tín hiệu vào hàm nấc: e(t) = e
- Kt
K
dtteISE
2
1
min)(minmin
2
0
=
∫
=
∞
Kết quả là K phải vô cùng
Dùng chỉ tiêu
( )
22
1
)()(min
0
22
K
K
dttuteJ
+=
∫
+=
∞
J cực tiểu khi suy ra K = 1, J = 1
0)
22
1
(
=+
K
KdK
d
0
1
32
2
>=
∂
∂
K
J
K
ĐIỀU CHỈNH TRẠNG THÁI (LQR)
LINEAR QUADRATIC REGULATOR
Khảo sát vấn đề duy trì trạng thái của hệ thống ở giá trị là 0, chống tác động
nhiễu, đồng thời với cục tiểu tiêu hao năng lượng
[ ]
,
2
1
min
)0(,
0
0
dtRuuQxxJ
Cxy
xxBuAxx
TT
∫
+=
=
=+=
∞
Q là ma trận đối xứng xđd hay bán xđd, thường là ma trận chéo
R là ma trận đối xứng xđd, thường là ma trận chéo
Chọn luật điều khiển hồi tiếp trạng thái u = - Kx, K là hằng số, thay vào biểu
thức của J
∫
+=
∞
0
)(
2
1
xdtRKKQxJ
TT
Tính K dùng phương trình Lyapunov, chọn hàm Lyapunov là J:
PxxxdtRKKQxtxV
T
t
TT
2
1
)(
2
1
))((
=
∫
+=
∞
Đạo hàm theo thời gian
V(x(0)) = J = x
T
(0)Px(0)
∫
+=
∞
0
)(
2
1
xdtRKKQxJ
TT
ĐIỀU CHỈNH TRẠNG THÁI
[ ] [ ]
)()(
2
1
)()(
2
1
|)(
2
1
)(
txRKKQtxxRKKQx
xRKKQxxV
TTTT
t
TT
+−∞+∞=
+=
∞
Gỉa sử chọn K để hệ ổn định, x(∞) →0
[ ]
)()(
2
1
)( txRKKQtxxV
TT
+−=
Mặt khác
( )
[ ]
xBKAPPBKAxxPxPxxxV
TTTT
)()(
2
1
2
1
)(
−+−=+=
Suy ra
[ ]
xRKKQxxBKAPPBKAx
TTTT
)(
2
1
)()(
2
1
+−=−+−
Ma trận P thỏa phương trình Lyapunov
)()()( RKKQBKAPPBKA
TT
+−=−+−
ĐIỀU CHỈNH TRẠNG THÁI
•
Giải phương trình Lyapunov ta được các phần tử của ma trận P theo các phần tử
của ma trận K chưa biết
•
Sau đó ta tính J = V(x(0)) = là hàm theo các phần tử của
ma trận K
)0()0(
2
1
Pxx
T
•
Để J cực tiểu ta giải phương trình hay
0
=
∂
∂
ij
k
J
•
Suy ra ma trận K, luật điều khiển u = - Kx
•
Xét ổn định của ma trận A-BK
•
Nêú muốn điêù chỉnh ngõ ra y=cx ta chọn
Các bước giải bài toán tối ưu
0
=
∂
∂
ij
k
P
∫
+=
∞
0
)(
2
1
xdtRKKQCCxJ
TTT
PHƯƠNG TRÌNH ĐẠI SỐ RICCATI
Đặt R = Γ
T
Γ, Γ là ma trận vuông không suy biến
Phương trình Lyapunov viết lại là:
0])([])([
0)()(
111
=+−Γ−ΓΓ−Γ++
=ΓΓ++−+−
−−−
QPBPBRPBKPBKPAPA
KKQBKAPPBKA
TTTTTTT
TTTTT
Lấy đạo hàm phương trình theo k
ij
và dùng tính chất
0
=
∂
∂
ij
k
P
Ta suy ra
0)])(())([(
11
=Γ−ΓΓ−Γ
∂
∂
−−
PBKPBK
k
TTTTT
ij
Cực tiểu xảy ra khi số hạng trong ngoặc là 0
PBRPBK
PBK
TTT
TT
111
1
)(
)(
−−−
−
=ΓΓ=
Γ=Γ
Phương trình Lyapunov trở thành phương trình đại số Riccati
0
1
=+−+
−
QPBPBRPAPA
TT
VÍ DỤ1
kyu
dtuyJ
uyy
−=
∫
+=
+−=
∞
0
22
)(
Các thông số của bài toán: A = -1, B = 1, Q = 2, R = 2
Phương trình Riccati A
T
P + PA - PBR
-1
B
T
P + Q = 0
-P – P - 0.5 P
2
+ 2 = 0
Giải phương trình bậc hai theo P và chọn nghiệm dương
)12(2
−=
P
Luật điều khiển tối ưu :
)()12()()(
1
tytPyBRtu
T
−−=−=
−
Phương trình hệ
kín:
)(2)( tyty
−=
VÍ DỤ2
[ ]
xy
uxx
01
1
0
00
10
=
+
=
Tìm luật điều khiển u duy trì x
1
= r, x
2
= 0
u = - k
1
(x
1
-r) - k
2
x
2
cực tiểu chỉ tiêu
∫
+−=
∞
0
22
1
))(( dturxJ
Đặt biến mới
22
11
~
~
xx
rxx
=
−=
2;
00
02
=
=
RQ
Phương trình Riccati: A
T
P + PA - PBR
-1
B
T
P + Q = 0
VÍ DỤ2
[ ]
=
+
−
+
00
00
00
02
10
2
1
1
0
00
10
01
00
2212
1211
2212
1211
2212
1211
2212
1211
pp
pp
pp
pp
pp
pp
pp
pp
02
2
0
2
02
2
12
2
22
2212
11
2
12
=+−
=−
=+−
p
p
pp
p
p
Cuối cùng :
2121
1
2)()(
~
2)(
~
)(
~
222
222
xrxtxtxtxPBRu
P
T
−−−=−−=−=
=
−
VÍ DỤ 3
Điều khiển tối ưu với tích phân
Trở lại ví dụ 1 ta muốn thêm vào khâu tích phân để tính chống nhiễu tốt
hơn
kyu
dtuyJ
uyy
−=
∫
+=
+−=
∞
0
22
)(
Đặt biến mới z(t)
2,
20
02
0
1
,
01
01
)(
)()(
21
0
222
=
=
=
−
=
−−=
∫
++=
=
+−=
∞
RQ
BA
zkyku
dtuzyJ
tytz
uyy
VÍ DỤ 3
Điều khiển tối ưu với tích phân
Phương trình Riccati
[ ]
=
+
−
−
+
−
00
00
20
02
01
2
1
0
1
01
01
00
11
2212
1211
2212
1211
2212
1211
2212
1211
pp
pp
pp
pp
pp
pp
pp
pp
02
2
0
2
02
2
22
2
12
1211
2212
2
11
1211
=+−
=−+−
=+−+−
p
pp
pp
p
pp
Kết quả
[ ]
∫
−−=−−=
==
=
−
t
T
dttytytztyu
PBRK
P
0
1
)()()()(
11
42
22
VÍ DỤ 4
Tìm hệ số đệm ζ sao cho cực tiểu
∫
+=
∞
0
22
)( dteeJ
)2(
1
ζ
+
ss
r
y
e
Phương trình liên hệ y và r
ryyy
=++
ζ
2
Phương trình vi phân của e
02
=++
eee
ζ
0)0(;1)0(;
==−=
eeyre
Phương trình trạng thái của e
exex
e
e
e
e
==
−−
=
21
;;
21
10
ζ
=
∫
=+
∫
=
∞∞
20
02
;
2
1
)(
0
2
2
0
2
1
QdtQxxdtxxJ
T
VÍ DỤ 4
Phương trình Riccati: A
T
P + PA + Q = 0
Giải pt
+
=
ζ
ζ
ζ
1
1
12
1
P
ζ
ζ
2
1
)0()0(
2
1
+==
PxxJ
T
Đạo hàm theo ζ suy ra trị tối ưu ứng với
2
1
=
ζ
VÍ DỤ 5
k
1
100/s
2
sk
2
r
y
ue
Tìm k
1
và k
2
cực tiểu
[ ]
dttuteJ
∫
+=
∞
0
22
)(25.0)(
Phương trình trạng thái:
[ ]
211
2211121
~~~
;
~
;
~
0
1
)0(
~
;
100
0
~
00
10
~
kkkK
xKxkkxkuyxryx
xuxx
=
−=−−==−=
−
=
+
=
VÍ DỤ 5
5.0;
00
02
=
=
RQ
GiảI phương trình Riccati
[ ]
1.0;2
2.02
001.001.0
01.02.0
21
==
=
=
kk
K
P
MATLAB
Hàm [K, P, e] = lqr (A, B, Q, R) giải bài toán cực tiểu
[ ]
dtRuuQxxJ
TT
∫
+=
∞
0
min
Phương trình Riccati A
T
P + PA - PBR
-1
B
T
P + Q = 0
u = -Kx
e là nghiệm riêng của ma trận A-BK
Ví dụ 4: Lấy lại ví dụ 2
>> A = [0 1; 0 0];
>> B = [0; 1];
>> C = [1 0];
>> Q = [2 0; 0 0];
>> R = [2];
>> [k ,p, e] = lqr (A, B, Q, R)
k =
1.0000 1.4142
p =
2.8284 2.0000
2.0000 2.8284
e =
-0.7071 + 0.7071i
-0.7071 - 0.7071i
MATLAB
Điều kiện đầu là [5 0], điều khiển sao cho y → 2
>> ptttk = ss (A - B*k, B*k(1,1), C, 0)
>> t = 0:0.1:10;
>> r = 2*ones (size(t));
>> [y, t, x] = lsim (ptttk, r, t, [5 0]);
>> plot (t, y)
>> hold on
>> u = -k*x' + k (1,1) *r;
>> plot(t,u)
0 1 2 3 4 5 6 7 8 9 10
-3
-2
-1
0
1
2
3
4
5
Điều kiện đầu là [5 0], điều khiển sao cho y → 0
>> ptttk = ss (A - B*k,[0; 0], C, 0)
>> [y, t, x] = lsim (ptttk, r, t, [5 0]);
>> plot (t, y)
>> hold on
>> u = -k*x‘;
>> plot (t,u)
0 1 2 3 4 5 6 7 8 9 10
-5
-4
-3
-2
-1
0
1
2
3
4
5
ĐIỀU KHIỂN TỐI ƯU HỆ RỜI RẠC
[ ]
)()(
)()()()(
2
1
)()(
)0();()()1(
0
0
kKxku
kRukukQxkxJ
kCxky
xxkGukFxkx
k
TT
−=
∑
+=
=
=+=+
∞
=
Phương trình Riccati rời rạc
PFGPGGRK
PFGPGGRPGFPFFQP
TT
TTTT
1
1
)(
)(
−
−
+=
+−+=
Dùng Matlab
[K, P, e] = dlqr (F, G, Q, R)
VÍ DỤ 6
K ZOH 1/s
r=1(t) T=1s
Tìm K cực tiểu
[ ]
∑
+=
∞
=
0
22
)(75.0)(
k
kukeJ
Pttt: y(k+1) = y(k) + u(k) ; u(k) = - K[y(k) - r]
[ ]
5.1;2
)(75.0)(
~
)()(
~
)(
~
)();()(
~
)1(
~
0
22
==
∑
+=
−=
−=+=+
∞
=
RQ
kukxJ
rkykx
kxKkukukxkx
k
Giải pt Riccati rời rạc, suy ra
3/2
3
5.1
2
2
=
=
+
−+=
K
P
P
P
PP
VÍ DỤ 7
•
Điêù khiển đối tượng 1/(s+1) với tín hiệu đặt yr = hằng số, cực tiểu
)](
~
)(
~
[
2
1
2
0
2
kukyJ
k
+
∑
=
∞
=
G(z)=0.632/(z-0.368)
y(k+1)=0.368y(k)+0.632u(k)
F=0.368, G=0.632, Q=1, R=1
Phương trình Riccati: P=Q+F
T
PF-F
T
PG (R+G
T
PG)
-1
G
T
PF
=1+0.135P-0.054P
2
/(1+0.4P)
P=1.11
K= (R+GTPG)
-1
G
T
PF=0.18
1/N=-C(F-GK-1)
-1
G
N=1.18
VÍ DỤ 8
•
Điêù khiển con lắc ngược, vơí pttt tuyến tính hóa
[ ]
T
zzx
bA
θθ
=
−
=
−
=
9211.0
0
3947.0
0
,
0005809.0
1000
0004537.4
0010
Tính luật điều khiền trạng thái vớí khâu tích phân, cực tiểu
[ ]
1,
10000
01000
0010000
00010
000010
)()()()(
2
1
0
=
=
∑
+=
∞
=
RQ
kRukukQxkxJ
k
TT
•
clear all
•
close all
•
A=[0, 1, 0, 0;4.4537, 0, 0, 0; 0,0, 0, 1;-0.5809, 0, 0, 0];
•
b=[0; -0.3947; 0; 0.9211];
•
c=[0, 0, 1, 0];
•
sys=ss(A,b,c,0);
•
T=0.1
•
sysd=c2d(sys,T);
•
[F,g,c,d]=ssdata(sysd);
•
FI=[F(1,:) ,0; F(2,:) ,0; F(3,:) ,0; F(4,:) ,0; c*F,1];
•
gI=[g(1);g(2);g(3);g(4);c*g];
•
cI=[c,0];
•
U=ctrb(FI,gI);
•
rankU=rank(U)
•
Q=[10,0,0,0,0;0,1,0,0,0;0,0,100,0,0;0,0,0,1,0;0,0,0,0,1];
•
R=1;
•
K=dlqr(FI,gI,Q,R);
•
Kp=[K(1),K(2),K(3),K(4)]
•
Ki=K(5)
•
FI_cl=FI-gI*K;
•
syscl=ss(FI_cl,[0;0;0;0;-1],cI,0,T);
•
t=[0:0.1:20];
•
[y,t,X]=step(syscl,t);
•
plot(t,y);grid; hold on; plot(t,X)