Hệ thống tuyến tính – dừng (LTI)

Một phần của tài liệu Giải bài toán tối ưu trong điều khiển dự báo có điều kiện ràng buộc bằng phương pháp quy hoạch nhiều tham số (Trang 35)

Hệ thống tuyến tính – dừng có thể đƣợc mô tả bằng hệ phƣơng trình sau:

{ ( ) ( ) ( ) ( ) ( ) ( ) (3.1)

với ( ) ( ) ( ) tƣơng ứng là các véc tơ trạng thái, véc tơ đầu

Chƣơng 3: Multi-Parametric Toolbox

28 Khai báo các ma trận của hệ thống nhƣ sau:

sysStruct.A = A sysStruct.B = B sysStruct.C = C sysStruct.D = D Trƣờng hợp hệ thống có nhiễu sysStruct.noise = W 3.1.2 Hệ thống affine từng phần (PWA)

Cho hệ PWA có mô hình sau:

{ ( ) ( ) ( ) ( ) ( ) ( ) (3.2)

Nếu [ ( ) ( )] Vi (3.3)

Chỉ số i = 1…NPWA, với NPWAlà tổng số vùng PWA đƣợc định nghĩa trong vùng đa diện V. Chiều của các ma trận đƣợc biểu diễn trong bảng sau

Ma trận Chiều A B f 1 C D g 1

(3.3) định nghĩa vùng partition đa diện của không gian trạng thái và đầu vào có các miền động học khác nhau. Các miền động học này đƣợc gọi là các guard-line, ví dụ là ràng buộc các biến trạng thái và đầu vào. Nói chung, các guard-line đƣợc mô tả bằng các ràng buộc sau:

( ) ( ) (3.4)

Bảng 3.1: Chiều của các ma trận trong mô hình hệ PWA

Chƣơng 3: Multi-Parametric Toolbox

29

Vùng động học i đƣợc đại diện bằng bộ các ma trận [Ai, Bi, fi, Ci, Di, gi] là một phần của không gian biến trạng thái – điều khiển thỏa mãn ràng buộc (3.4). Nếu tại một thời điểm khác trong tƣơng lai, trạng thái x(k+T) hoặc đầu vào u(k+T)

chuyển sang miền khác ( ) ( ) , vùng động học sẽ có bộ ma trận mới [Aj, Bj, fj, Cj,Dj,gj].

Trong MPT, hệ thống PWA đƣợc khai báo nhƣ sau

sysStruct.A = {A1, A2, ..., An} sysStruct.B = {B1, B2, ..., Bn} sysStruct.f = {f1, f2, ..., fn} sysStruct.C = {C1, C2, ..., Dn} sysStruct.D = {D1, D2, ..., Cn} sysStruct.g = {g1, g2, ..., gn} sysStruct.A = {A1, A2, ..., An}

sysStruct.guardX = {Gx1, Gx2, ..., Gxn} sysStruct.guardU = {Gu1, Gu2, ..., Gun} sysStruct.guardC = {Gc1, Gc2, ..., Gcn}

Chúng ta có thẻ bỏ qua khai báo sysStruct.f, sysStruct.g nếu ma trận f, g bằng 0, còn lại tất cả các ma trận khác đều phải đƣợc khai báo.

Nếu hệ thống có nhiễu tác động, ta sẽ khai báo theo cấu trúc

sysStruct.noise = W

3.1.3 Nhập mô hình từ các nguồn bên ngoài

MPT có thể thiết kế các luật điều khiển cho các hệ tuyến tính có ràng buộc rời rạc, hệ đƣợc chuyển sang tuyến tính hay các hệ thống lai. Các hệ lai có thể đƣợc mô tả ở dạng PWA hoặc MLD và có các giải thuật để chuyển từ dạng này sang dạng khác và ngƣợc lại. Để tăng tính thuận tiện cho ngƣời sử dụng, mô hình hệ thống có thể đƣợc lấy từ các nguồn khác nhau:

- Mô hình hệ lai đƣợc thiết kế bằng ngôn ngữ HYSDEL - Cấu trúc MLD từ mpt_pwa2mld

Chƣơng 3: Multi-Parametric Toolbox

30

- Đối tƣợng hàm truyền và không gian trạng thái của Control toolbox - Các đối tƣợng của Toolbox nhận dạng

- Các đối tƣợng của Toolbox MPC (adsbygoogle = window.adsbygoogle || []).push({});

Để nhập một hệ thống động, sử dụng lệnh sau:

Model = mpt_sys(object,Ts)

Với Object: là đối tƣợng có thể là một chuỗi ký tự (trong trƣờng hợp mô hình nhập từ file HYSDEL tƣơng ứng) hoặc có thể là biến của một trong những loại đối tƣợng đƣợc đề cập ở phần trên. Ts là thời gian trích mẫu. Trong trƣờng hợp ngƣời lập trình không nhập giá trị Ts thì hệ thống sẽ mặc định Ts = 1.

3.2 Các ràng buộc

- Khai báo ràng buộc đầu ra

sysStruct.ymax = outmax sysStruct.ymin = outmin

với outmax, outmin lần lƣợt là giới hạn trên và giới hạn dƣới của đầu ra - Khai báo ràng buộc trạng thái

sysStruct.xmax = xmax sysStruct.xmin = xmin

với xmax, xmin lần lƣợt là giới hạn trên và giới hạn dƣới của biến trạng thái - Khai báo ràng buộc biến điều khiển

sysStruct.umax = inpmax sysStruct.umin = inpmin

với inpmax, inpmin lần lƣợt là giới hạn trên và giới hạn dƣới của biến điều khiển - Khai báo ràng buộc độ biến thiên biến điều khiển

Độ biên thiên biếnđiều khiển δu = u(k) − u(k − 1)

sysStruct.dumax = slewmax sysStruct.dumin = slewmin

Chú ý: Trong trƣờng hợp các ràng buộc trên không đƣợc khai báo, hệ thống sẽ mặc định các giới hạn bằng .

Chƣơng 3: Multi-Parametric Toolbox

31

3.3 Thiết kế điều khiển

3.3.1 Tính toán bộ điều khiển

Với các hệ tuyến tính hoặc hệ lai có ràng buộc, MPT có thể thiết kế các luật điều khiển tối ƣu hoặc cận tối ƣu ở dạng không tƣờng minh khi bài toán tối ƣu có kích thƣớc giới hạn đƣợc giải online tại mỗi thời điểm trích mẫu, sử dụng phƣơng pháp Receding Horizon Control (RHC) hoặc luật điều khiển dƣới dạng hàm tƣờng minh khi giải bài toán theo phƣơng pháp quy hoạch nhiều tham số.

Nghiệm của bài toán thu đƣợc từ việc gọi hàm điều khiển mpt. Cấu trúc chung để thu đƣơc luật điều khiển tƣờng minh nhƣ sau:

ctrl = mpt_control(sysStruct, probStruct)

Bộ điều khiển MPC on-line có thể thu đƣợc từ

ctrl = mpt_control(sysStruct, probStruct, ‘online’)

Khi luật điều khiển đƣợc tính toán, kết quả (ở đây là ctrl) đƣợc trả về đối tƣợng mptctrl. Cấu trúc của đối tƣợng này đƣợc mô tả ở phần sau, và có thể truy cập trực tiếp. Ví dụ lệnh Pn = ctrl.Pn sẽ cho kết quả là các miền đa diện của bộ điều khiển tƣờng minh. Tín hiệu điều khiển thu đƣợc phụ thuộc vào thuộc tính của mô hình hệ thống và bài toán tối ƣu. Những dạng bài toán sau có thể đƣợc giải quyết:

A. Bài toán điều khiển tối ƣu thời gian hữu hạn có ràng buộc (CFTOC) B. Bài toán điều khiển tối ƣu thời gian vô hạn có ràng buộc (CITOC) C. Bài toán điều khiển tối ƣu thời gian tối thiểu có ràng buộc (CMTOC) D. Cài đặt độ phức tạp thấp

Bài toán đƣợc giải phụ thuộc vào tham số và cấu trúc của hệ thống: đặt tên theo loại hệ thống (LTI hay PWA), tầm dự báo (cố định hay vô hạn) và mức độ cận tối ƣu (nghiệm tối ƣu, thời gian tối thiểu, độ phức tạp thấp). Tổ hợp khác nhau của 3 tham số này dẫn tới các phƣơng pháp tối ƣu hóa khác nhau nhƣ trong bảng dƣới đây

Chƣơng 3: Multi-Parametric Toolbox

32

Bảng 3.2: Các hàm tính toán bộ điều khiển cho các bài toán tối ƣu khác nhau

Hệ thống N Độ cận tối (adsbygoogle = window.adsbygoogle || []).push({});

ƣu

Bài toán Hàm

LTI Cố định 0 CFTOC mpt_optControl

LTI Vô hạn 0 CITOC mpt_optInfControl

LTI Vô hạn 1 CMTOC mpt_iterative

LTI Vô hạn 2 LowComp mpt_oneStepCtrl

PWA Cố định 0 CFTOC mpt_optControlPWA

PWA Vô hạn 0 CITOC mpt_optInfControlPWA

PWA Vô hạn 1 CMTOC mpt_iterativePWA

PWA Vô hạn 2 LowComp mpt_iterativePWA

3.3.2 Trƣờng của đối tƣợng mptctrl

Đối tƣợng bộ điều khiển bao gồm tất cả kết quả thu đƣợc từ nghiệm của bài toán điều khiển tối ƣu đã cho. Nhìn chung, nó mô tả luật điều khiển và có thể sử dụng để phân tích cũng nhƣ thực thi luật điều khiển. Trƣờng của đối tƣợng đƣợc tổng hợp trong bảng 3.3. Mọi trƣờng có thể truy cập bằng cách sử dụng cấu trúc: tên chuẩn.toán tử đi kèm. Ví dụ:

Pn = ctrl.Pn; Fi = ctrl.Fi;

runtime = ctrl.details.runtime;

Bảng 3.3: Các trƣờng của đối tƣợng bộ điều khiển MPC

Tên trường Mô tả

Pn Vùng đa diện mà luật điều khiển đƣợc xác định đƣợc trả về trƣờng này. Nhìn chung nó là một mảng

Fi, Gi Luật điều khiển cho miền biến trạng thái x(k) cho trƣớc u = Fi{r} x(k) + Gi{r}. Fi và Gi là các phần tử mảng

Chƣơng 3: Multi-Parametric Toolbox

33

+ Bi{r}x(k) + Ci{r} với r là chỉ số vùng đang xét. Ví dụ vùng thuộc Pn chứa biến trạng thái x(k) cho trƣớc.

Pfinal Trả về tập khả vi lớn nhất . Nhìn chung nó tƣơng đƣơng với hợp tất cả các miền trong Pn

dynamics Vector chỉ vùng động học đƣợc xét trong Pn (chỉ quan trong với các hệ PWA)

details Thông tin chi tiết về nghiệm của bài toán. Ví dụ thời gian tính toán…

overlaps Biến Boolean biểu thị các vùng của bộ điều khiển có trùng lên nhau hay không

sysStruct Mô tả cấu trúc hệ thống

probStruct Mô tả bài toán dƣới probStruct

3.3.3 Một số hàm đƣợc sử dụng cho đối tƣợng mptctrl

Sau khi thu đƣợc luật điều khiển tƣờng minh ta có thể thực hiện các hàm sau:

- Analyze: Phân tích bộ điều khiển đã có và gợi ý tác động để hoàn thiện bộ điều khiển. (adsbygoogle = window.adsbygoogle || []).push({});

>> analyze(ctrl)

The controller can be simplified:

ctrl = mpt_simplify(ctrl) will reduce the number of regions.

% Bộ điều khiển có thể tối giản hơn, số vùng có thể giảm xuống ctrl = mpt_invariantSet(ctrl) will identify the invariant subset.

The closed-loop system may not be invariant:

ctrl = mpt_invariantSet(ctrl) will identify the invariant subset.

% Hệ thống vòng kín có thể không bất biến, dùng lệnh ctrl = mpt_invariantSet(ctrl)

sẽ xác định tính bất biến của các tập con

- Isexplicit: Trả về giá trị 1 nếu bộ điều khiển là tƣờng minh

% compute an explicit controller

Chƣơng 3: Multi-Parametric Toolbox

34

% compute an on-line controller

>> onlc = mpt_control(sysStruct, probStruct, ’online’); >> isexplicit(expc) ans = 1 >> isexplicit(onlc) ans = 0

- isinvariant: Trả về giá trị 1 nếu bộ điều khiển tƣờng minh là bất biến >> isinvariant(ctrl)

ans = 1

- isstabilizable: Trả về giá trị 1 nếu bộ điều khiển đảm bảo ổn định vòng kín >> isstabilizable(ctrl)

ans = 1

- length :Kết quả là số lƣợng các vùng mà luật điều khiển tƣờng minh đƣợc xác định

>> length(ctrl) ans =

25

- plot: Vẽ các vùng trạng thái của bộ điều khiển tƣờng minh

>> plot(ctrl)

- runtime: Trả về thời gian cần thiết để tính toán bộ điều khiển tƣờng minh >> runtime(ctrl)

ans = 0.5910

Chƣơng 3: Multi-Parametric Toolbox

35

>> [X, U, Y] = sim(ctrl, x0, number_of_steps) - Simplot :Vẽ quỹ đạo của hệ kín

>> simplot(ctrl, x0, number_of_steps)

- Tính giá trị điều khiển: Để thu đƣợc tác động điều khiển tƣơng ứng với trạng thái ban đầu x0, sử dụng hàm sau (adsbygoogle = window.adsbygoogle || []).push({});

>> u = ctrl(x0)

3.4 Thực thi luật điều khiển

3.4.1 Tính toán luật điều khiển tƣờng minh

Nhƣ đã trình bày trong 3.3.2 luật điều khiển tƣờng minh thu đƣợc là một hàm affine từng phần dạng

U(k) = x(k) + (3.5)

Trong cấu trúc bộ điều khiển, các ma trận Fi và Gi là các phần tử mảng, ví dụ:

ctrl.Fi = { Fi{1} Fi{2} ... Fi{n} } ……… ctrl.Gi = { Gi{1} Gi{2} ... Gi{n} }

Các vùng không gian trạng thái mà các hàm điều khiển affine trong (3.5) xác định đƣợc cất trong các mảng vùng trong trƣờng sau

ctrl.Pn = [ Pn(1) Pn(2) ... Pn(n)]

Hơn nữa, biểu thức của hàm mục tiêu đƣợc lƣu trữ trong

ctrl.Ai = { Ai{1} Ai{2} ... Ai{n} } ctrl.Bi = { Bi{1} Bi{2} ... Bi{n} } ctrl.Ci = { Ci{1} Ci{2} ... Ci{n} }

Vì thế giá trị tƣơng ứng với trạng thái x(k) cho trƣớc có thể dễ dàng tính đƣợc từ tính biểu thức sau

J = x(k)T x(k) + ( ) (3.6)

Vậy nên phƣơng pháp để thu đƣợc tác động điều khiển khi có trạng thái x(k) mà giảm đƣợc việc kiểm tra trực thuộc vùng đó là: Xác định số vùng hoạt động r. Do các partition đa diện là các đối tƣợng nhiều vùng, hàm sẽ trả về chỉ số của vùng chứa trạng thái x(k) cho trƣớc. Do loại bài toán tối ƣu tạo ra các vùng chồng lấn,

Chƣơng 3: Multi-Parametric Toolbox

36

vùng hoạt động tƣơng ứng sẽ là vùng mà hàm mục tiêu (3.6) là nhỏ nhất. Khi vùng hoạt động đƣợc xác định, tín hiệu điều khiển đƣợc tính toán theo (3.5) và đƣớc áp dụng vào hệ thống. Nếu bài toán điều khiển tối ƣu đƣợc giải sau tầm dự báo N cố định, việc tính toán (3.5) sẽ thu đƣợc vectơ điều khiển làm tối thiểu hóa hàm cho trƣớc

U [ u(0)T u(1)T…u(N)T

]T (3.7)

Khi áp dụng luật điều khiển thu đƣợc vào hệ kín, chỉ tín hiệu u(0) đƣợc lấy từ dãy U và nạp cho hệ thống. Các bƣớc tiếp theo đƣợc lặp lại tƣơng tự.

3.4.2 Thực thi

Luật điều khiển đƣợc xác định bằng hàm mpt_getInput. Cấu trúc của hàm nhƣ sau

[U, feasible, region, cost] = mpt_getInput(ctrl, x0) [U, feasible, region, cost] = mpt_getInput(ctrl, x0, Options)

Với

U luật điều khiển thu đƣợc từ (3.5)

feasible Biến Boolean (0/1) chỉ ra có có ít nhất một vùng chứa x(0)

region Chỉ số của vùng đang xét trong ctr.Pn cost Giá trị tƣơng ứng với trạng thái x(0) ctrl Cấu trúc bộ điều khiển

x0 Biến trạng thái

Options Đối số lựa chọn thêm

Hàm trả về bộ tối ƣu U tƣơng ứng với một vùng sao cho biểu thức (3.6) là nhỏ nhất. Nếu không có vùng nào chứa x0 thì biến khả vi feasible sẽ là 0, ngƣợc lại hàm getInput sẽ chả chỉ một giá trị phần tử đầu tiên của dãy U (3.7), ví dụ U = u(0) giá trị này có thể đƣa trực tiếp vào hệ thống để thu đƣợc trạng thái x(k+1). Nếu ta muốn có đầy đủ dãy U thì Options.openloop đặt lên 1. (adsbygoogle = window.adsbygoogle || []).push({});

Hàm sim tính toán sự phát triển của trạng thái vòng hở hoặc vòng kín từ điểm ban đầu x0. Mỗi bƣớc, tác động điều khiển đƣợc tính toán bằng cách gọi làm mpt_getInput sau đó tín hiệu này đƣợc đƣa vào hệ thống để xác định trạng thái nối

Chƣơng 3: Multi-Parametric Toolbox

37

tiếp x(k+1). Quá trình tiếp tục cho đến khi quỹ đạo trạng thái về tới gốc. Do vấn đề số học nên một vùng nhỏ có tâm là gốc đƣợc tạo ra (kích thƣớc có thể đƣợc định nghĩa bởi ngƣời sử dụng). Quỹ đạo sẽ dừng ngay khi tất cả các trạng thái vào vùng này. Với bài toán điều khiển bám, quỹ đạo sẽ dừng khi tất cả trạng thái đạt đƣợc giá trị tín hiệu mẫu mong muốn.

Cấu trúc của hàm nhƣ sau:

[X,U,Y]=sim(ctrl,x0) [X,U,Y]=sim(ctrl,x0,N)

[X,U,Y]=sim(ctrl,x0,N,Options) [X,U,Y,cost,feasible]=sim(ctrl,x0,N)

[X,U,Y,cost,feasible]=sim(ctrl,x0,N,Options)

Chú ý: Nếu số các bƣớc mà quỹ đạo cần tính N là rỗng (N = []), quỹ đạo sẽ tự động dừng lại khi trạng thái hệ thống (hoặc đầu ra) đạt giá trị đặt với sai số cho trƣớc.

Quỹ đạo đƣợc vẽ bằng hàm simplot

simplot(ctrl) simplot(ctrl, x0) simplot(ctrl, x0, N)

Nếu chƣa cho trƣớc x0 và vùng của bộ điều khiển là R2, ngƣời sử dụng có thể xác định trạng thái đầu tiên bằng cách kích chuật vào vùng của bộ điều khiển.

3.5 Xuất bộ điều khiển dƣới dạng code C

Bộ điều khiển tƣờng minh có thể đƣợc xuất ra dƣới dạng code độc lập bằng cách sử dụng lệnh sau:

mpt_exportc(ctrl)

mpt_exportc(ctrl, filename)

Nếu hàm đƣợc gọi với chỉ một đối số, một file mà gọi mpt getInput.h sẽ đƣợc tạo trong thƣ mục làm việc. Chúng ta có thể thay đổi tên file bằng cách thêm đối số thứ hai vào lệnh mpt exportc. Khi đó tiêu đề của file đƣợc biên dịch cùng với mpt getInput.c và ứng dụng đích.

Chƣơng 3: Multi-Parametric Toolbox

38

3.6 Biểu diễn tín hiệu và các miền trạng thái dƣới dạng hình ảnh

Toolbox MPT giúp chúng ta có thể quan sát đồ thị của các polytope, polyhedral partition, luật điều khiển, hàm mục tiêu, các hàm PWA, PWQ đƣợc xác định trong các miền đa diện polyhedral partition.

3.6.1 Đồ thị của các polyhedral partition

Nghiệm tƣờng minh của bài toán điều khiển tối ƣu là luật điều khiển dạng PWA đƣợc xác định trong miền polyhedral partition. Nếu nghiệm thu đƣợc bằng cách gọi mpt control thì kết quả đƣợc trả về dƣới dạng đối tƣợng của bộ điều khiển ctrl. Tùy thuộc vào dạng nghiệm mà các vùng không gian trạng thái đƣợc vẽ ra với các màu sắc khác nhau giúp chúng ta dễ dàng quan sát trạng thái của tín hiệu điều khiển. Cấu trúc của lệnh vẽ các miển đƣợc chia của không gian trạng thái là

plot(ctrl)

Ví dụ trong trƣờng hợp bộ điều khiển của bài toán tối ƣu vô hạn có ràng buộc hoặc bài toán điều khiển tối ƣu thời gian ràng buộc, các vùng đƣợc mô tả bằng màu đỏ và xanh. Nói chung, các vùng màu đỏ gần gốc hơn, trong khi các vùng càng nhiều màu xanh thì cần phải nhiều bƣớc hơn để về tới điểm mong muốn là gốc tọa độ.

3.6.2 Biểu diễn quỹ đạo hệ hở và hệ kín

Để quan sát quỹ đạo đƣợc tính toán ta sử dụng lệnh sau

simplot(ctrl)

Lệnh này cho phép ta chọn điểm xuất phát x(0) bằng cách click chuột phải vào miền trạng thái. Sau đó, quỹ đạo trạng thái của hệ sẽ đƣợc vẽ từ điểm x(0) về tới gốc tọa độ.

Trong trƣờng hợp muốn quỹ đạo hệ thống về gốc sau khoảng thời gian cho trƣớc ta sử dụng lệnh (adsbygoogle = window.adsbygoogle || []).push({});

simplot(ctrl, x0, horizon)

3.6.3 Quan sát hàm PWA, PWQ

Hàm affine từng phần đƣợc mô tả nhƣ sau:

Chƣơng 3: Multi-Parametric Toolbox

39

với r là chỉ số của mỗi phân vùng polyhedral Hàm toàn phƣơng từng phần đƣợc mô tả bởi

f(x) = xT Mrx + Lrx+ Crnếu x (3.9) Có thể biểu diễn dƣới dạng đồ thị cả hai dạng này bằng các lệnh sau

mpt_plotPWA(Pn,L,C), vẽ hàm PWA (3.8) xác định trên Pn. Từ đây ta có thể vẽ đƣợc luật điều khiển và hàm mục tiêu thu đƣợc là nghiệm của bài toán điều khiển tối ƣu đã cho. Ta có thể dùng hàm sau để vẽ tín hiệu điều khiển.

Một phần của tài liệu Giải bài toán tối ưu trong điều khiển dự báo có điều kiện ràng buộc bằng phương pháp quy hoạch nhiều tham số (Trang 35)