Điều khiển tối ưu – Wikipedia tiếng Việt

Lý thuyết điều khiển tối ưu là một phần mở rộng của phép tính biến phân, là một phương pháp tối ưu hóa cho các lý thuyết điều khiển phát sinh. Phương pháp này phần lớn là do công lao đóng góp của Lev Pontryagin và các cộng tác viên của ông ở Liên Xô [1] cũng như Richard Bellman tại Hoa Kỳ. Điều khiển tối ưu có thể được xem như là một chiến lược điều khiển trong lý thuyết điều khiển tự động.

Phương pháp chung[sửa|sửa mã nguồn]

Điều khiển tối ưu giải quyết bài toán tìm kiếm một quy luật điều khiển cho một hệ thống cho trước như là một tiêu chuẩn tối ưu định đã đạt được. Một bài toán điều khiển bao gồm một hàm chi phí đó là một hàm của trạng thái và các biến điều khiển. Một điều khiển tối ưu là một tập hợp các phương trình vi phân mô tả đường đi của các biến điều khiển cực tiểu hóa hàm chi phí. Điều khiển tối ưu có thể được bắt nguồn từ việc sử dụng nguyên lý cực đại Pontryagin (một điều kiện cần còn được biết đến đó là nguyên lý cực tiểu Pontryagin hoặc chỉ đơn giản là nguyên lý Pontryagin[2]), hoặc bằng cách giải phương trình Hamilton-Jacobi-Bellman (điều kiện đủ).

Chúng ta bắt đầu với một ví dụ đơn giản. Hãy xem xét một chiếc xe đi trên một đường thẳng qua một con đường nhấp nhô. Câu hỏi đặt ra là, người lái xe phải đạp ga như thế nào để tối thiểu hóa tổng thời gian đi lại? Rõ ràng trong ví dụ này, thuật ngữ luật điều khiển chỉ để xác định cách thức trong đó người lái xe tăng ga và chuyển hộp số. Hệ thống bao gồm cả xe và đường, và tiêu chuẩn tối ưu  tối thiểu hóa tổng thời gian đi lại. Các bài toán điều khiển thường bao gồm các ràng buộc bổ sung. Ví dụ, lượng nhiên liệu sẵn có thể bị giới hạn, bàn đạp ga không thể bị đạp xuyên qua sàn xe hơi, tốc độ bị giới hạn,…

Một hàm chi phí thích hợp là một công thức toán học đưa ra thời gian đi lại như một hàm của tốc độ, các xem xét hình học, và các điều kiện ban đầu của hệ thống. Ta thường gặp trường hợp các hạn chế là có thể hoán đổi cho nhau được với hàm chi phí.

Một bài toán khiển tối ưu khác là phải tìm ra cách để lái xe để giảm thiểu mức tiêu thụ nguyên vật liệu của nó, cho rằng nó phải triển khai xong một khóa học được đưa ra không quá một thời hạn xác lập. Tuy nhiên, một bài toán điều khiển khác là để giảm thiểu tổng số tiều phải chi để triển khai xong chuyến đi, giá tiền giả định đưa ra cho thời hạn và nguyên vật liệu .Một khung trừu tượng hơn diễn ra như sau. Tối thiểu hóa hàm ngân sách thời hạn liên tục

J = Φ [ x ( t 0 ), t 0, x ( t f ), t f ] + ∫ t 0 t f L [ x ( t ), u ( t ), t ] d ⁡ t { \ displaystyle J = \ Phi \, [ \, { \ textbf { x } } ( t_ { 0 } ), t_ { 0 }, { \ textbf { x } } ( t_ { f } ), t_ { f } \, ] + \ int _ { t_ { 0 } } ^ { t_ { f } } { \ mathcal { L } } \, [ \, { \ textbf { x } } ( t ), { \ textbf { u } } ( t ), t \, ] \, \ operatorname { d } t }{\displaystyle J=\Phi \,[\,{\textbf {x}}(t_{0}),t_{0},{\textbf {x}}(t_{f}),t_{f}\,]+\int _{t_{0}}^{t_{f}}{\mathcal {L}}\,[\,{\textbf {x}}(t),{\textbf {u}}(t),t\,]\,\operatorname {d} t}

tùy theo các giới hạn động học bậc một (phương trình trạng thái)

x ˙ ( t ) = a [ x ( t ), u ( t ), t ], { \ displaystyle { \ dot { \ textbf { x } } } ( t ) = { \ textbf { a } } \, [ \, { \ textbf { x } } ( t ), { \ textbf { u } } ( t ), t \, ], }{\displaystyle {\dot {\textbf {x}}}(t)={\textbf {a}}\,[\,{\textbf {x}}(t),{\textbf {u}}(t),t\,],}

các giới hạn đường đại số

b [ x ( t ), u ( t ), t ] ≤ 0, { \ displaystyle { \ textbf { b } } \, [ \, { \ textbf { x } } ( t ), { \ textbf { u } } ( t ), t \, ] \ leq { \ textbf { 0 } }, }{\displaystyle {\textbf {b}}\,[\,{\textbf {x}}(t),{\textbf {u}}(t),t\,]\leq {\textbf {0}},}

và những điều kiện kèm theo biên

ϕ [ x ( t 0 ), t 0, x ( t f ), t f ] = 0 { \ displaystyle { \ boldsymbol { \ phi } } \, [ \, { \ textbf { x } } ( t_ { 0 } ), t_ { 0 }, { \ textbf { x } } ( t_ { f } ), t_ { f } \, ] = 0 }{\displaystyle {\boldsymbol {\phi }}\,[\,{\textbf {x}}(t_{0}),t_{0},{\textbf {x}}(t_{f}),t_{f}\,]=0}

trong đó 

x

(
t
)

{\displaystyle {\textbf {x}}(t)}

{\displaystyle {\textbf {x}}(t)} là trạng thái,

u

(
t
)

{\displaystyle {\textbf {u}}(t)}

{\displaystyle {\textbf {u}}(t)} là điều khiển,

t

{\displaystyle t}

t là biến độc lập (thường được nói là thời gian),

t

0

{\displaystyle t_{0}}

{\displaystyle t_{0}} là thời gian ban đầu, và 

t

f

{\displaystyle t_{f}}

{\displaystyle t_{f}} là thời gian cuối. Thuật ngữ 

Φ

{\displaystyle \Phi }

\Phi  và 

L

{\displaystyle {\mathcal {L}}}

{\displaystyle {\mathcal {L}}} được gọi tương ứng là chi phí điểm cuối Lagrangian.Hơn nữa, cần lưu ý rằng những đường hạn chế là nằm trong các hạn chế bất phương trình nói chung và do đó có thể không hoạt động (tức là, bằng không) ở giải pháp tối ưu.Cũng cần lưu ý rằng các bài toán điều khiển tối ưu như đã nêu ở trên có thể có nhiều lời giải (tức là, lời giải có thể không phải là duy nhất).Do đó, trường hợp thường xuyên nhất mà bất kỳ lời nào 

[

x

(

t

)
,

u

(

t

)
,

t

]

{\displaystyle [{\textbf {x}}^{*}(t^{*}),{\textbf {u}}^{*}(t^{*}),t^{*}]}

{\displaystyle [{\textbf {x}}^{*}(t^{*}),{\textbf {u}}^{*}(t^{*}),t^{*}]} đối với bài toán điều khiển tối ưu là tối thiểu hóa cục bộ.

Điều khiển tối ưu bình phương tuyến tính[sửa|sửa mã nguồn]

Một trường hợp đặc biệt của bài toán điều khiển tối ưu phi tuyến chung được đưa ra trong phần trước là bài toán điều khiển tối ưu tuyến tính bậc hai (LQ). Bài toán LQ được phát biểu như sau. Cực tiểu hóa hàm chi phí thời gian liên tục thời gian bậc hai

J = 1 2 x ⊤ ( t f ) S f x ( t f ) + 1 2 ∫ t 0 t f [ x ⊤ ( t ) Q. ( t ) x ( t ) + u ⊤ ( t ) R ( t ) u ( t ) ] d ⁡ t { \ displaystyle J = { \ tfrac { 1 } { 2 } } \ mathbf { x } ^ { \ top } ( t_ { f } ) \ mathbf { S } _ { f } \ mathbf { x } ( t_ { f } ) + { \ tfrac { 1 } { 2 } } \ int _ { t_ { 0 } } ^ { t_ { f } } [ \, \ mathbf { x } ^ { \ top } ( t ) \ mathbf { Q } ( t ) \ mathbf { x } ( t ) + \ mathbf { u } ^ { \ top } ( t ) \ mathbf { R } ( t ) \ mathbf { u } ( t ) \, ] \, \ operatorname { d } t }{\displaystyle J={\tfrac {1}{2}}\mathbf {x} ^{\top }(t_{f})\mathbf {S} _{f}\mathbf {x} (t_{f})+{\tfrac {1}{2}}\int _{t_{0}}^{t_{f}}[\,\mathbf {x} ^{\top }(t)\mathbf {Q} (t)\mathbf {x} (t)+\mathbf {u} ^{\top }(t)\mathbf {R} (t)\mathbf {u} (t)\,]\,\operatorname {d} t}

Chịu sự ràng buộc động tuyến tính bậc nhất

x ˙ ( t ) = A ( t ) x ( t ) + B ( t ) u ( t ), { \ displaystyle { \ dot { \ mathbf { x } } } ( t ) = \ mathbf { A } ( t ) \ mathbf { x } ( t ) + \ mathbf { B } ( t ) \ mathbf { u } ( t ), }{\displaystyle {\dot {\mathbf {x} }}(t)=\mathbf {A} (t)\mathbf {x} (t)+\mathbf {B} (t)\mathbf {u} (t),}

và điều kiện kèm theo bắt đầu

x ( t 0 ) = x 0 { \ displaystyle \ mathbf { x } ( t_ { 0 } ) = \ mathbf { x } _ { 0 } }{\displaystyle \mathbf {x} (t_{0})=\mathbf {x} _{0}}

Một hình thức đặc biệt của bài toán LQ mà phát sinh trong nhiều bài toán thống điều khiển là bộ điiều chỉnh toàn phương tuyến tính (LQR), nơi tất cả các ma trận (tức là 

A

{\displaystyle \mathbf {A} }

{\displaystyle \mathbf {A} },

B

{\displaystyle \mathbf {B} }

{\displaystyle \mathbf {B} },

,

Q

{\displaystyle ,\mathbf {Q} }

{\displaystyle ,\mathbf {Q} }, và 

R

{\displaystyle \mathbf {R} }

{\displaystyle \mathbf {R} }) là không đổi, thời gian ban đầu được đặt tùy ý tới zero, và thời gian cuối được lấy từ giới hạn 

t

f


{\displaystyle t_{f}\rightarrow \infty }

{\displaystyle t_{f}\rightarrow \infty } (giả thiét cuối cùng này được gọi là đường chân trời vô tận). Bài toán LQR được phát biểu như sau. Tối thiểu hóa hàm chi phí thời gian liên tục bậc hai đường chân trời vô hạn

J = 1 2 ∫ 0 ∞ [ x ⊤ ( t ) Q x ( t ) + u ⊤ ( t ) R u ( t ) ] d ⁡ t { \ displaystyle J = { \ tfrac { 1 } { 2 } } \ int _ { 0 } ^ { \ infty } [ \, \ mathbf { x } ^ { \ top } ( t ) \ mathbf { Q } \ mathbf { x } ( t ) + \ mathbf { u } ^ { \ top } ( t ) \ mathbf { R } \ mathbf { u } ( t ) \, ] \, \ operatorname { d } t }{\displaystyle J={\tfrac {1}{2}}\int _{0}^{\infty }[\,\mathbf {x} ^{\top }(t)\mathbf {Q} \mathbf {x} (t)+\mathbf {u} ^{\top }(t)\mathbf {R} \mathbf {u} (t)\,]\,\operatorname {d} t}

Chịu sự ràng buộc động học bậc nhất tuyến tính không bao giờ thay đổi theo thời hạn

x ˙ ( t ) = A x ( t ) + B u ( t ), { \ displaystyle { \ dot { \ mathbf { x } } } ( t ) = \ mathbf { A } \ mathbf { x } ( t ) + \ mathbf { B } \ mathbf { u } ( t ), }{\displaystyle {\dot {\mathbf {x} }}(t)=\mathbf {A} \mathbf {x} (t)+\mathbf {B} \mathbf {u} (t),}

Và điều kiện kèm theo bắt đầu

x ( t 0 ) = x 0 { \ displaystyle \ mathbf { x } ( t_ { 0 } ) = \ mathbf { x } _ { 0 } }

Trong trường hợp đường chân trời giới hạn, các ma trận bị giới hạn trong

Q

{\displaystyle \mathbf {Q} }

{\displaystyle \mathbf {Q} } và 

R

{\displaystyle \mathbf {R} }

 tương ứng là nửa xác định dương và xác định dương. Trong trường hợp đường chân trời vô hạn, tuy nhiên ma trận 

Q

{\displaystyle \mathbf {Q} }

 và 

R

{\displaystyle \mathbf {R} }

 không chỉ là tương ứng với nửa xác định dương và xác định dương, mà còn là hằng số. Những giới hạn thêm vào trên 

Q

{\displaystyle \mathbf {Q} }

 và 

R

{\displaystyle \mathbf {R} }

 trong trường hợp đường chân trời vô hạn được thực thi để đảm bảo rằng hàm chi phí vẫn dương.Hơn nữa, để đảm bảo hàm chi phí là được bao, hạn chế bổ sung được áp đặt mà cặp 

(

A

,

B

)

{\displaystyle (\mathbf {A} ,\mathbf {B} )}

{\displaystyle (\mathbf {A} ,\mathbf {B} )} là có thể điều khiển được. Lưu ý rằng hàm chi phí LQ hoặc LQR có thể được nghĩ một cách vật lý như là cố gắng để giảm thiểu năng lượng điều khiển (đo như một dạng bậc hai).

Bài toán đường chân trời vô hạn ( tức là, LQR ) có vẻ như quá hạn chế và cơ bản vô dụng vì nó cho rằng người quản lý và vận hành đang điều khiển hệ tới trạng thái zero và do đó đang lái đầu ra của mạng lưới hệ thống về không. Đây thực sự là đúng chuẩn. Tuy nhiên bài toán lái đầu ra đến một mức độ khác không mong ước hoàn toàn có thể được xử lý sau khi một đầu ra zero được giải. Trong trong thực tiễn, nó hoàn toàn có thể được chứng tỏ rằng bài toán LQR thứ cấp này hoàn toàn có thể được xử lý một cách rất đơn thuần. Nó đã được chỉ ra trong triết lý điều khiển tối ưu cổ xưa rằng điều khiển tối ưu LQ ( hoặc LQR ) có dạng phản hồi

u ( t ) = − K ( t ) x ( t ) { \ displaystyle \ mathbf { u } ( t ) = – \ mathbf { K } ( t ) \ mathbf { x } ( t ) }{\displaystyle \mathbf {u} (t)=-\mathbf {K} (t)\mathbf {x} (t)}

trong đó 

K

(
t
)

{\displaystyle \mathbf {K} (t)}

{\displaystyle \mathbf {K} (t)} là ma trận có chiều hợp lý, cho bởi

K ( t ) = R − 1 B ⊤ S ( t ), { \ displaystyle \ mathbf { K } ( t ) = \ mathbf { R } ^ { – 1 } \ mathbf { B } ^ { \ top } \ mathbf { S } ( t ), }{\displaystyle \mathbf {K} (t)=\mathbf {R} ^{-1}\mathbf {B} ^{\top }\mathbf {S} (t),}

và 

S

(
t
)

{\displaystyle \mathbf {S} (t)}

{\displaystyle \mathbf {S} (t)}  là lời giải của phương trình vi phân Riccati. Phương trình vi phân Riccati có dạng

S ˙ ( t ) = − S ( t ) A − A ⊤ S ( t ) + S ( t ) B R − 1 B ⊤ S ( t ) − Q { \ displaystyle { \ dot { \ mathbf { S } } } ( t ) = – \ mathbf { S } ( t ) \ mathbf { A } – \ mathbf { A } ^ { \ top } \ mathbf { S } ( t ) + \ mathbf { S } ( t ) \ mathbf { B } \ mathbf { R } ^ { – 1 } \ mathbf { B } ^ { \ top } \ mathbf { S } ( t ) – \ mathbf { Q } }{\displaystyle {\dot {\mathbf {S} }}(t)=-\mathbf {S} (t)\mathbf {A} -\mathbf {A} ^{\top }\mathbf {S} (t)+\mathbf {S} (t)\mathbf {B} \mathbf {R} ^{-1}\mathbf {B} ^{\top }\mathbf {S} (t)-\mathbf {Q} }

Đối với bài toán LQ đường chân trời hữu hạn, phương trình Riccati được tích hợp ngược lại trong thời hạn sử dụng điều kiện kèm theo biên cuối

S ( t f ) = S f { \ displaystyle \ mathbf { S } ( t_ { f } ) = \ mathbf { S } _ { f } }{\displaystyle \mathbf {S} (t_{f})=\mathbf {S} _{f}}

Đối với bài toán LQR đường chân trời vô hạn, phương trình vi phân Riccati được sửa chữa thay thế bằng phương trình Riccati đại số ( ARE ) như sau

0 = − S A − A ⊤ S + S B R − 1 B ⊤ S − Q { \ displaystyle \ mathbf { 0 } = – \ mathbf { S } \ mathbf { A } – \ mathbf { A } ^ { \ top } \ mathbf { S } + \ mathbf { S } \ mathbf { B } \ mathbf { R } ^ { – 1 } \ mathbf { B } ^ { \ top } \ mathbf { S } – \ mathbf { Q } }{\displaystyle \mathbf {0} =-\mathbf {S} \mathbf {A} -\mathbf {A} ^{\top }\mathbf {S} +\mathbf {S} \mathbf {B} \mathbf {R} ^{-1}\mathbf {B} ^{\top }\mathbf {S} -\mathbf {Q} }

Hiểu rằng ARE phát sinh từ bài toán đường chân trời vô hạn, các ma trận 

A

{\displaystyle \mathbf {A} }

,

B

{\displaystyle \mathbf {B} }

,

Q

{\displaystyle \mathbf {Q} }

, và 

R

{\displaystyle \mathbf {R} }

 tất cả đều là hằng số. Nói chung có nhiều cách giải cho phương trình đại số Riccati và lời giải xác định dương (hoặc nửa xác định dương) là một lời giải trong đó được sử dụng để tính toán độ lợi phản hồi. Bài toán LQ (LQR) đã được giải quyết một cách tao nhã bởi Rudolf Kalman.[3]

Các giải pháp số cho điều khiển tối ưu[sửa|sửa mã nguồn]

Các bài toán điều khiển tối ưu thường là phi tuyến và do đó, thường không có lời giải phân tích (ví dụ như bài toán điều khiển tối ưu tuyến tính bậc hai). Kết quả là, cần phải áp dụng các phương pháp số để giải các bài toán điều khiển tối ưu. Trong những năm đầu của điều khiển tối ưu (khoảng những năm 1950 tới 1980) hướng tiếp cận ưa thích đối với các bài toán điều khiển tối ưu là các phương pháp gián tiếp. Trong một phương pháp gián tiếp, phép tính biến phân được sử dụng để có được các điều kiện tối ưu bậc nhất. Những điều kiện này đạt được trong một bài toán giá trị-biên hai điểm (hoặc, trong trường hợp của một bài toán phức, đa điểm). Bài toán giá trị-biên này thực sự có một cấu trúc đặc biệt bởi vì nó phát sinh từ việc lấy đạo hàm của một hàm Hamilton. Vì vậy, kết quả là hệ thống động học là một hệ thống Hamilton có dạng

x ˙ = ∂ H / ∂ λ λ ˙ = − ∂ H / ∂ x { \ displaystyle { \ begin { array } { lcl } { \ dot { \ textbf { x } } } và = và \ partial H / \ partial { \ boldsymbol { \ lambda } } \ \ { \ dot { \ boldsymbol { \ lambda } } } và = và – \ partial H / \ partial { \ textbf { x } } \ end { array } } }{\displaystyle {\begin{array}{lcl}{\dot {\textbf {x}}}&=&\partial H/\partial {\boldsymbol {\lambda }}\\{\dot {\boldsymbol {\lambda }}}&=&-\partial H/\partial {\textbf {x}}\end{array}}}

Trong đó

H = L + λ T a − μ T b { \ displaystyle H = { \ mathcal { L } } + { \ boldsymbol { \ lambda } } ^ { \ text { T } } { \ textbf { a } } – { \ boldsymbol { \ mu } } ^ { \ text { T } } { \ textbf { b } } }{\displaystyle H={\mathcal {L}}+{\boldsymbol {\lambda }}^{\text{T}}{\textbf {a}}-{\boldsymbol {\mu }}^{\text{T}}{\textbf {b}}}

Hamilton tăng cường và trong một phương pháp gián tiếp, bài toán giá trị-biên sẽ được giải (sử dụng biên thích hợp hoặc các điều kiện gác ngang). Vẻ đẹp của việc sử dụng một phương pháp gián tiếp là trạng thái và liên hợp (cụ thể,

λ

{\displaystyle {\boldsymbol {\lambda }}}

{\displaystyle {\boldsymbol {\lambda }}}) sẽ được giải và lời giải cuối cùng sẽ được kiểm tra để trở thành quỹ đạo cực trị. Nhược điểm của các phương pháp gián tiếp là bài toán giá trị-biên thường rất khó để giải (đặc biệt đối với các bài toán mở rộng trong khoảng thời gian lớn hoặc các bài toán với các giới hạn điểm bên trong). Một chương trình phần mềm nổi tiếng thực hiện các phương pháp gián tiếp đó là BNDSCO.[4]

Cách tiếp cận này đã làm tăng sự nổi bật trong điều khiển tối ưu phương pháp số hơn hai thập kỷ qua (tức là, từ những năm 1980 đến nay) của cái gọi là các phương pháp trực tiếp. Trong một phương pháp trực tiếp, trạng thái và/hoặc điều khiển được xấp xỉ bằng cách sử dụng một xấp xỉ hàm thích hợp (ví dụ, xấp xỉ đa thức hoặc thông số hóa hằng số từng mảnh). Đồng thời, chi phí chức năng được xấp xỉ như là một hàm chi phí. Sau đó, các hệ số của các xấp xỉ hàm được xử lý như các biến tối ưu hóa và bài toán này được “sao chép lại” cho một bài toán tối ưu hóa phi tuyến có dạng:

Cực tiểu hóa

F ( z ) { \ displaystyle F ( { \ textbf { z } } ) \, }{\displaystyle F({\textbf {z}})\,}

tùy theo những ràng buộc đại số

g ( z ) = 0 h ( z ) ≤ 0 { \ displaystyle { \ begin { array } { lcl } { \ textbf { g } } ( { \ textbf { z } } ) và = và { \ textbf { 0 } } \ \ { \ textbf { h } } ( { \ textbf { z } } ) và \ leq và { \ textbf { 0 } } \ end { array } } }{\displaystyle {\begin{array}{lcl}{\textbf {g}}({\textbf {z}})&=&{\textbf {0}}\\{\textbf {h}}({\textbf {z}})&\leq &{\textbf {0}}\end{array}}}

Tùy thuộc vào loại phương pháp trực tiếp nào được áp. áp dụng, kích thước của bài toán tối ưu hóa phi tuyến có thể khá nhỏ (ví dụ, trong phương pháp xấp xỉ tuyến tính hóa hoặc direct shooting), trung bình (ví dụ điều khiển tối ưu pseudospectral[5]) hoặc có có thể khá lớn (Ví dụ, phương pháp sắp xếp trực tiếp[6]). Trong trường hợp cuối cùng (ví dụ, là một phương pháp sắp xếp), bài toán tối ưu hóa phi tuyến có nghĩa là hàng ngàn đến hàng chục ngàn biến và hạn chế. Do kích thước của nhiều NLP phát sinh từ một phương pháp trực tiếp, có vẻ phần nào khác thường để giải bài toán tối ưu hóa phi tuyến là dễ hơn so với giải bài toán giá trị-biên. Tuy nhiên, thực tế NLP dễ giải hơn bài toán giá trị-biên.Để giảm bớt tính toán, đặc biệt là phương pháp sắp xếp trực tiếp, NLP là rất ít và rất nhiều các chương trình phần mềm nổi tiếng tồn tại (ví dụ, SNOPT[7]) để giải các bài toán NLP lớn. Kết quả là phạm vi của các bài toán có thể được giải quyết thông qua các phương pháp trực tiếp (đặc biệt là các phương pháp sắp xếp trực tiếp là rất phổ biến hiện nay) là lớn hơn đáng kể so với phạm vi của các bài toán có thể được giải bằng các phương pháp gián tiếp. Trong thực tế, các phương pháp trực tiếp đã trở nên quá phổ biến hiện nay đến nỗi nhiều người đã viết các chương trình phần mềm phức tạp sử dụng những phương pháp này. Đặc biệt, rất nhiều các chương trình như vậy bao gồm DIRCOL,[8] SOCS,[9] OTIS,[10] GESOP/ASTOS,[11] DITAN.[12] và PyGMO/PyKEP.[13] Những năm gần đây, do sự ra đời của ngôn ngữ lập trình MATLAB, phần mềm điều khiển tối ưu trong MATLAB đã trở nên phổ biến hơn. Ví dụ về phát triển hàn lâm các công cụ cho phần mềm MATLAB đang triển khai thực hiện các phương pháp trực tiếp bao gồmRIOTS,[14]DIDO,[15] DIRECT,[16] và GPOPS Lưu trữ 2011-07-24 tại Wayback Machine,[17] một ví dụ công cụ công nghiệp được phát triển cho MATLAB là PROPT.[18] Những công cụ phần mềm này đã tăng đáng kể cơ hội cho mọi người khám phá những bài toán điều khiển tối ưu phức tạp cả cho nghiên cứu hàn lâm và cả công nghiệp. Cuối cùng, cần ghi nhận rằng các môi trường tối ưu hóa MATLAB đa năng như TOMLAB đã thực hiện mã hóa bài toán điều khiển tối ưu phức tạp dễ dàng hơn đáng kể so với các ngôn ngữ như C, FORTRAN trước đây.

Điều khiển tối ưu thời hạn rời rạc[sửa|sửa mã nguồn]

Các ví dụ như vậy đến nay đã cho thấy các hệ thống thời gian liên tục và các giải pháp điều khiển. Trong thực tế, như các giải pháp điều khiển tối ưu hiện nay thường được thực hiện bằng kỹ thuật số, lý thuyết điều khiển hiện đại hiện nay chủ yếu là liên quan với các hệ thống và giải pháp thời gian rời rạc. Lý thuyết Xấp xỉ Vững[19] quy định những điều kiện theo các lời giải với tới một loạt bài toán điều khiển tối ưu rời rạc hóa tăng độ chín xác hội tụ về lời giải của bài toán thời gian liên tục, nguyên thủy. Không phải tất cả các. phương pháp rời rạc hóa đều có tính chất này, ngay cả đối với những phương pháp dễ hình dung. Ví dụ, sử dụng một biến làm tròn theo bước để tích hợp các phương trình động học của bài toán đó có thể tạo ra một gradient không hội tụ về zero (hoặc điểm trong hướng dương) như cách giải muốn hướng đến. Phương pháp trực tiếp RIOTS dựa trên Lý thuyết về Xấp xỉ Bền vững.

Các ví dụ[sửa|sửa mã nguồn]

Một chiến thuật trong nhiều bài toán điều khiển tối ưu để giải gần đúng (đôi khi được gọi là shadow price)

λ
(
t
)

{\displaystyle \lambda (t)}

{\displaystyle \lambda (t)}. Tóm tắt trong một số giá trị biên độ của biến trạng thái mở rộng hoặc thu gọn ở lần tiếp theo. Giá trị biên độ này không chỉ là độ lợi tích lũy cho lần kế tiếp mà còn liên quan tới thời gian thực hiện của chương trình. Thật tuyệt khi

λ
(
t
)

{\displaystyle \lambda (t)}

có thể được giải bằng giải tích, nhưng thường ta chỉ có thể mô tả nó đủ tốt để trực giác có thể nắm bắt được tính chất của lời giải và một chương trình giải phương trình có thể giải bằng phương pháp số cho các giá trị.

Khi đã đạt được λ ( t ) { \ displaystyle \ lambda ( t ) }, giá trị tối ưu lần thứ t cho điều khiển hoàn toàn có thể thường được giải như thể một phương trình vi phân có điều kiện kèm theo đã biết về λ ( t ) { \ displaystyle \ lambda ( t ) }. Một lần nữa khá ít khi, đặc biệt quan trọng trong những bài toán thời hạn liên tục, ta thu được giá trị của điều khiển hoặc trạng thái một cách rõ ràng. Thường giải pháp này là để giải những ngưỡng và vùng mà miêu tả điều khiển tối ưu và sử dụng một chương trình giải bằng giải pháp số để cô lập những giá trị được chọn thực tiễn theo thời hạn .

Thời gian hữu hạn[sửa|sửa mã nguồn]

Xem xét bài toán một chủ mỏ, người phải quyết định phải đãi quặng từ mỏ của mình tại phần trăm nào. Ông ta nắm quyền đối với lượng quặng nói trên từ ngày 

0

{\displaystyle 0}

{\displaystyle 0} đến ngày 

T

{\displaystyle T}

T. Tại ngày 

0

{\displaystyle 0}

 có 

x

0

{\displaystyle x_{0}}

{\displaystyle x_{0}} lượng quặng dưới mặt đất, và lượng quặng tức thời là 

x
(
t
)

{\displaystyle x(t)}

{\displaystyle x(t)} suy giảm tỉ lệ chủ mỏ trích xuất nó u(t). Chủ mỏ trích xuất qựng tại chi phí 

u
(
t

)

2

/

x
(
t
)

{\displaystyle u(t)^{2}/x(t)}

{\displaystyle u(t)^{2}/x(t)} và bán quặng tại một giá không đổi 

p

{\displaystyle p}

p. Ông ta không tính giá trị quặng nằm lại dưới mặt đất tại thời điểm 

T

{\displaystyle T}

(không có “giá trị bỏ đi” ở đây). Ông ta chọn tốc độ trích xuất theo thời gian u(t) để tối đa hóa lợi nhuận trong thời kỳ làm chủ với thời gian chiết khấu bằng không.

1. phiên bản thời gian rời rạc

Người quản lý tối đa hóa lợi nhuận 

Π

{\displaystyle \Pi }

{\displaystyle \Pi }:

Π = ∑ t = 0 T − 1 [ p u t − u t 2 x t ] { \ displaystyle \ Pi = \ sum _ { t = 0 } ^ { T-1 } \ left [ pu_ { t } – { \ frac { u_ { t } ^ { 2 } } { x_ { t } } } \ right ] }{\displaystyle \Pi =\sum _{t=0}^{T-1}\left[pu_{t}-{\frac {u_{t}^{2}}{x_{t}}}\right]}

tùy thuộc vào định luật tiến hóa cho biến trạng thái

x

t

{\displaystyle x_{t}}

{\displaystyle x_{t}}

x t + 1 − x t = − u t { \ displaystyle x_ { t + 1 } – x_ { t } = – u_ { t } \ ! }{\displaystyle x_{t+1}-x_{t}=-u_{t}\!}

Hình thành công thức Hamilton và vi phân :

H = p u t − u t 2 x t − λ t + 1 u t { \ displaystyle H = pu_ { t } – { \ frac { u_ { t } ^ { 2 } } { x_ { t } } } – \ lambda _ { t + 1 } u_ { t } }{\displaystyle H=pu_{t}-{\frac {u_{t}^{2}}{x_{t}}}-\lambda _{t+1}u_{t}}

∂ H ∂ u t = p − λ t + 1 − 2 u t x t = 0 { \ displaystyle { \ frac { \ partial H } { \ partial u_ { t } } } = p – \ lambda _ { t + 1 } – 2 { \ frac { u_ { t } } { x_ { t } } } = 0 }{\displaystyle {\frac {\partial H}{\partial u_{t}}}=p-\lambda _{t+1}-2{\frac {u_{t}}{x_{t}}}=0}
λ t + 1 − λ t = − ∂ H ∂ x t = − ( u t x t ) 2 { \ displaystyle \ lambda _ { t + 1 } – \ lambda _ { t } = – { \ frac { \ partial H } { \ partial x_ { t } } } = – \ left ( { \ frac { u_ { t } } { x_ { t } } } \ right ) ^ { 2 } }{\displaystyle \lambda _{t+1}-\lambda _{t}=-{\frac {\partial H}{\partial x_{t}}}=-\left({\frac {u_{t}}{x_{t}}}\right)^{2}}

Khi người chủ mỏ không định giá quặng còn lại tại thời gian T { \ displaystyle T } ,

λ T = 0 { \ displaystyle \ lambda _ { T } = 0 \ ! }{\displaystyle \lambda _{T}=0\!}

Sử dụng các phương trình ở trên, ta dễ dàng tìm ra các chuỗi

x

t

{\displaystyle x_{t}}

λ

t

{\displaystyle \lambda _{t}}

{\displaystyle \lambda _{t}}

λ t = λ t + 1 + ( p − λ t + 1 ) 2 4 { \ displaystyle \ lambda _ { t } = \ lambda _ { t + 1 } + { \ frac { ( p – \ lambda _ { t + 1 } ) ^ { 2 } } { 4 } } }{\displaystyle \lambda _{t}=\lambda _{t+1}+{\frac {(p-\lambda _{t+1})^{2}}{4}}}
x t + 1 = x t 2 − p + λ t + 1 2 { \ displaystyle x_ { t + 1 } = x_ { t } { \ frac { 2 – p + \ lambda _ { t + 1 } } { 2 } } }{\displaystyle x_{t+1}=x_{t}{\frac {2-p+\lambda _{t+1}}{2}}}

và sử dụng các điều kiện đầu và turn-T, các chuỗi

x

t

{\displaystyle x_{t}}

có thể được tìm ra rõ ràng, cho bởi

u

t

{\displaystyle u_{t}}

{\displaystyle u_{t}}.

2. phiên bản thời gian liên tục
Người quản trị tối đa hóa doanh thu Π { \ displaystyle \ Pi } :

Π = ∫ 0 T [ p u ( t ) − u ( t ) 2 x ( t ) ] d t { \ displaystyle \ Pi = \ int _ { 0 } ^ { T } \ left [ pu ( t ) – { \ frac { u ( t ) ^ { 2 } } { x ( t ) } } \ right ] dt }{\displaystyle \Pi =\int _{0}^{T}\left[pu(t)-{\frac {u(t)^{2}}{x(t)}}\right]dt}

tùy thuộc vào định luật tiến hóa cho biến trạng thá x ( t ) { \ displaystyle x ( t ) }

x ˙ ( t ) = − u ( t ) { \ displaystyle { \ dot { x } } ( t ) = – u ( t ) }{\displaystyle {\dot {x}}(t)=-u(t)}

Hình thành công thức Hamilton và vi phân :

H = p u ( t ) − u ( t ) 2 x ( t ) − λ ( t ) u ( t ) { \ displaystyle H = pu ( t ) – { \ frac { u ( t ) ^ { 2 } } { x ( t ) } } – \ lambda ( t ) u ( t ) }{\displaystyle H=pu(t)-{\frac {u(t)^{2}}{x(t)}}-\lambda (t)u(t)}

∂ H ∂ u = p − λ ( t ) − 2 u ( t ) x ( t ) = 0 { \ displaystyle { \ frac { \ partial H } { \ partial u } } = p – \ lambda ( t ) – 2 { \ frac { u ( t ) } { x ( t ) } } = 0 }{\displaystyle {\frac {\partial H}{\partial u}}=p-\lambda (t)-2{\frac {u(t)}{x(t)}}=0}
λ ˙ ( t ) = − ∂ H ∂ x = − ( u ( t ) x ( t ) ) 2 { \ displaystyle { \ dot { \ lambda } } ( t ) = – { \ frac { \ partial H } { \ partial x } } = – \ left ( { \ frac { u ( t ) } { x ( t ) } } \ right ) ^ { 2 } }{\displaystyle {\dot {\lambda }}(t)=-{\frac {\partial H}{\partial x}}=-\left({\frac {u(t)}{x(t)}}\right)^{2}}

Khi người chủ mỏ không định giá quặng còn lại tại thời gian T { \ displaystyle T } ,

λ ( T ) = 0 { \ displaystyle \ lambda ( T ) = 0 }{\displaystyle \lambda (T)=0}

Sử dụng các phương trình ở trên, ta dễ dàng giải được các phương trình vi phân có nghiệm

u
(
t
)

{\displaystyle u(t)}

{\displaystyle u(t)}

λ
(
t
)

{\displaystyle \lambda (t)}

λ ˙ ( t ) = − ( p − λ ( t ) ) 2 4 { \ displaystyle { \ dot { \ lambda } } ( t ) = – { \ frac { ( p – \ lambda ( t ) ) ^ { 2 } } { 4 } } }{\displaystyle {\dot {\lambda }}(t)=-{\frac {(p-\lambda (t))^{2}}{4}}}
u ( t ) = x ( t ) p − λ ( t ) 2 { \ displaystyle u ( t ) = x ( t ) { \ frac { p – \ lambda ( t ) } { 2 } } }{\displaystyle u(t)=x(t){\frac {p-\lambda (t)}{2}}}

và sử dụng những điều kiện kèm theo đầu và lần thứ-T, những hàm hoàn toàn có thể được giải bằng chiêu thức số .

  1. ^ L. S. Pontryagin, 1962 .
  2. ^ I. M. Ross, 2009 .
  3. ^ Kalman, Rudolf .
  4. ^ Oberle, H. J. and Grimm, W., ” BNDSCO-A Program for the Numerical Solution of Optimal Control Problems, ” Institute for Flight Systems Dynamics, DLR, Oberpfaffenhofen, 1989
  5. ^ Ross, I. M.; Karpenko, M. (2012). “A Review of Pseudospectral Optimal Control: From Theory to Flight”. Annual Reviews in Control. 36 (2): 182–197. doi:10.1016/j.arcontrol.2012.09.002.
  6. ^

    Betts, J. T., Practical Methods for Optimal Control Using Nonlinear Programming, SIAM Press, Philadelphia, Pennsylvania, 2001

  7. ^

    Gill, P. E., Murray, W. M., and Saunders, M. A., User’s Manual for SNOPT Version 7: Software for Large-Scale Nonlinear Programming, University of California, San Diego Report, ngày 24 tháng 4 năm 2007

  8. ^

    von Stryk, O., User’s Guide for DIRCOL (version 2.1): A Direct Collocation Method for the Numerical Solution of Optimal Control Problems, Fachgebiet Simulation und Systemoptimierung (SIM), Technische Universität Darmstadt (2000, Version of November 1999).

  9. ^

    Betts, J.T. and Huffman, W. P., Sparse Optimal Control Software, SOCS, Boeing Information and Support Services, Seattle, Washington, July 1997

  10. ^

    Hargraves, C. R. and Paris, S. W., “Direct Trajectory Optimization Using Nonlinear Programming and Collocation”, Journal of Guidance, Control, and Dynamics, Vol. 10, No. 4., 1987, pp. 338–342

  11. ^ Gath, P.F., Well, K.H., ” Trajectory Optimization Using a Combination of Direct Multiple Shooting and Collocation “, AIAA 2001 – 4047, AIAA Guidance, Navigation, and Control Conference, Montréal, Québec, Canada, 6 – ngày 9 tháng 8 năm 2001
  12. ^ Vasile M., Bernelli-Zazzera F., Fornasari N., Masarati P., ” Design of Interplanetary and Lunar Missions Combining Low-Thrust and Gravity Assists “, Final Report of the ESA / ESOC Study Contract No. 14126 / 00 / D / CS, September 2002
  13. ^ Izzo, Dario .
  14. ^

    Schwartz, Adam, Theory and Implementation of Methods based on Runge–Kutta Integration for Solving Optimal Control Problems, University of California at Berkeley, PhD Dissertation, 1996.

  15. ^

    Ross, I. M. and Fahroo, F., User’s Manual for DIDO: A MATLAB Package for Dynamic Optimization, Dept. of Aeronautics and Astronautics, Naval Postgraduate School Technical Report, 2002

  16. ^

    Williams, P., User’s Guide to DIRECT, Version 2.00, Melbourne, Australia, 2008

  17. ^

    Rao, A. V., Benson, D. A., Huntington, G. T., Francolin, C., Darby, C. L., and Patterson, M. A., User’s Manual for GPOPS: A MATLAB Package for Dynamic Optimization Using the Gauss Pseudospectral Method, University of Florida Report, August 2008.

  18. ^

    Rutquist, P. and Edvall, M. M, PROPT – MATLAB Optimal Control Software,” 1260 S.E. Bishop Blvd Ste E, Pullman, WA 99163, USA: Tomlab Optimization, Inc.

  19. ^

    E. Polak, On the use of consistent approximations in the solution of semi-infinite optimization and optimal control problems Math.

Liên kết ngoài[sửa|sửa mã nguồn]

Alternate Text Gọi ngay