Optimal control: Stochastisches optimal control

Definition

Ein Sys­tem ent­hält in gewis­sem Rah­men frei zu wäh­len­de Steue­rungs­in­puts und soll durch die­se sta­bi­li­siert wer­den. Die Dyna­mik des Sys­tems, d.h. der Ein­fluss von Steue­rungs­in­put und momen­ta­nem Zustand auf den zukünf­ti­gen Zustand sei­en bekannt aber der Sys­tem­ver­lauf sei wei­ter­hin von zufäl­li­gen Stör­grös­sen beeinflusst..

Dies ist eine Erwei­te­rung des opti­mal con­trols bei bekann­ter Dyna­mik und bekann­tem Zustand um zufäl­li­ge Stör­grös­sen. Das line­ar-qua­dra­ti­sche Gaus­sche Reg­ler­pro­blem (LQG) ist ein Bei­spiel­pro­blem die­ser Pro­blem­klas­se, bei der die Stör­grös­sen nor­mal­ver­teilt sind.

LQG control

Das dyna­mi­sche Modell beim LQG kann geschrie­ben wer­den als
$$ x_{k+1}=Ax_k+Bu_k+w_k$$
mit \(x_k, x_{k+1}\) typi­scher­wei­se vek­tor­wer­ti­gen Zustän­den zu Zeit­punk­ten \(t=k, k+1\), \(u_k\) den Steue­rungs­in­puts, \(w_k\) den zufäl­li­gen Stör­grös­sen und \(A, B\) Matri­zen. Die Steue­rungs­in­puts sei­en so zu wäh­len, dass eine Sta­bi­li­sie­rung des Sys­te­mes erreicht wird.
Sei­en die die Sys­tem­dy­na­mik beschrei­ben­den Matri­zen \(A, B\) bekannt, die Schwan­kungs­brei­te von \(w\) quan­ti­fi­zier­bar durch die Kova­ri­anz­ma­trix \(W\) und der Steue­rungs­in­put \(u_k, k=1, … T \) sei so zu wäh­len, dass die durch­schnitt­li­che Ener­gie mini­miert wird. For­mal ergibt sich das Optimierungsproblem
$$\min_{x_1, …, x_T, u_1, …, u_T} \lim_{T\rightarrow \infty} \frac{1}{T} E\left[ \sum_{k=0}^T \|x_k\|^2_Q + \|u_k\|^2_R\right] $$
wobei \(\|x_k\|^2_Q=x_k^TQx_k\) und \( \|u_k\|^2_R=u_k^TRu_k\) Mas­se sind für die Kos­ten von Zustand \(x_k\) und Steue­rungs­in­put \(u_k\) und \(E[\cdot]\) ist der Erwartungswert.

SDP Formulierung

Der opti­ma­le Steue­rungs­in­put \(u_k\) ergibt sich nach der Glei­chung [1]  \(u_k=Z_{xu}^T(Z_{xx})^{-1} x_k\) wobei \(Z_{xx}\) und \(Z_{xu}\) die Lösun­gen für das nach­fol­gen­de semi­de­fi­ni­te Pro­gramm sind [2].

$$\begin{align} \min_{Z_{xx}, Z_{xu}, Z_{uu}} ~~~&\operatorname{tr} (QZ_{xx}) + \operatorname{tr} (R Z_{uu}) \\ s.t. ~~~& \begin{bmatrix} Z_{xx} & Z_{xu} \\ Z_{xu}^T & Z_{uu} \end{bmatrix} \succeq 0 \\ & Z_{xx}-AZ_{xx}A^T‑AZ_{xu}B^T — BZ_{xu}^TA^T — B Z_{uu}B^T=W\end{align}$$

Die zu mini­mie­ren­de Funk­ti­on \(\operatorname{tr} (QZ_{xx}) + \operatorname{tr} (R Z_{uu})\)  quan­ti­fi­ziert erwar­te­te Kos­ten (Geld, Zeit, Ener­gie, Feh­ler) über den Zusam­men­hang $$E[X^TQx+u^TRu]=\operatorname{tr}(Q E[xx^T])+\operatorname{tr}(RE[uu^T])=\operatorname{tr}(QZ_{xx})+\operatorname{tr}(RZ_{uu}).$$ \(Z_{xx}\) und \(Z_{uu}\) sind dem­nach inter­pre­tier­bar als Kova­ri­anz­ma­tri­zen  der zufäl­lig ver­teil­ten Grös­sen \(x\) und \(u\) und die Glei­chung \(u_k=Z_{xu}^T(Z_{xx})^{-1}x_k\) ist gera­de der beding­te Erwar­tungs­wert von \(u_k\) gege­ben \(x_k\) und die durch \(Z_{xxx}, Z_{xu}, Z_{uu}\) deter­mi­nier­te ener­gie­mi­ni­mie­ren­de Wahrscheinlichkeitsverteilung.

Beispiel: Pendelsteuerung

Im fol­gen­den aus­führ­li­chen Bei­spiel wird das Ziel ver­folgt, ein von zufäl­li­gen Effek­ten beein­fluss­tes Pen­del zu sta­bi­li­sie­ren. Wir gehen davon aus, ein Pen­del star­tet in zufäl­li­ger (aber klei­ner) Aus­len­kung \(\varphi\) aus der Gleichgewichtslage. 

Die Pen­del­be­we­gung folgt dann nor­ma­len phy­si­ka­li­schen Gesetz­mäs­sig­kei­ten mit der Aus­nah­me, dass zusätz­lich noch zufäl­li­ge und von uns weder vor­her­seh­ba­re noch kon­trol­lier­ba­re Effek­te eine Kraft und somit auch eine Beschleu­ni­gung auf das Pen­del bewirken.

Drawing_OC_zufaellige_Effekte_1
Abbil­dung 1: Illus­tra­ti­on der Pen­del­dy­na­mik durch Anga­be der zeit­li­chen Ent­wick­lung des Aus­len­kungs­win­kels \(\varphi\) und sei­ner zeit­li­chen Ablei­tun­ge \(\dot{\varphi}\) und \(\ddot{\varphi}\). Die ers­ten bei­den Gra­fi­ken (a) zei­gen die Sys­te­me­vo­lu­ti­on in Abwe­sen­heit von Zufalls­ef­fek­ten, die letz­ten Gra­fi­ken (b) zei­gen die Sys­te­me­vo­lu­ti­on in Anwe­sen­heit von Zufalls­ef­fek­ten auf \(\ddot{\varphi}\).

Man beach­te, dass die Gra­fik das für ein Pen­del­schwin­gen erwar­te­te Ver­hal­ten zeigt. Ist die Aus­len­kung \(\varphi\) maxi­mal, dann ist die Geschwin­dig­keit \(\dot{\varphi}=0\) und die Beschleu­ni­gung \(\ddot{\varphi}\) mini­mal. Ist die Aus­len­kung \(\varphi=0\), so ist die Geschwin­dig­keit \(\dot{\varphi}\) maxi­mal und die Beschleu­ni­gung \(\ddot{\varphi}\) wech­selt von posi­tiv zu nega­tiv bzw. umgekehrt.

Pendelgleichungen

Die von der Gewichts­kraft \(g\) indu­zier­te Beschleu­ni­gung in Schwing­rich­tung ist \(-g\sin(\varphi)\). Wei­ter­hin wir­ken die zufäl­li­gen Effek­te \(w\) und wir neh­men an, der von uns wähl­ba­re Steue­rungs­in­put \(u\) beein­flusst direkt die beschleu­ni­gung, sodass gilt 

$$\ddot{\varphi}_k = ‑g \sin(\varphi_k) + w_k + u_k ~~~~~~~k=0, …, T .$$

Die Zustands­glei­chung kop­pelnd ver­schie­de­ne Grös­sen über suk­zes­si­ve Zeit­schrit­te hin­weg kann geschrie­ben wer­den als 

$$ \underbrace{\begin{bmatrix} \varphi_{k+1} \\ \dot{\varphi}_{k+1} \\ \ddot{\varphi}_{k+1} \\ \sin(\varphi_{k+1}) \\ \cos(\varphi_{k+1}) \end{bmatrix}}_{x_{k+1}} = \underbrace{\begin{bmatrix} 1 & \Delta t & 0 & 0& 0 \\ 0 & 1 & \Delta t & 0 & 0 \\ 0& 0& 0& ‑g & 0 \\ 0 & \Delta t & 0 & 1 & 0 \\ 0&0&0&0&0\end{bmatrix}}_{A}\underbrace{\begin{bmatrix} \varphi_{k} \\ \dot{\varphi}_{k} \\
\ddot{\varphi}_{k} \\ \sin(\varphi_{k}) \\ \cos(\varphi_{k})
\end{bmatrix}}_{x_{k}} + \underbrace{\begin{bmatrix} 0 \\ 0\\ 1 \\ 0\\0 \end{bmatrix}}_{B} \underbrace{\begin{bmatrix} u_k\end{bmatrix}}_{u_k} + \underbrace{\begin{bmatrix} 0\\0\\w_k\\0\\0 \end{bmatrix}}_{w_k}.$$

Dabei wer­den die für klei­ne Win­kel gül­ti­gen Approximationen 

$$\begin{align} \sin (\varphi+\Delta \varphi)&\approx \sin\varphi+\Delta \varphi \cos \varphi\approx \sin \varphi + \Delta t \dot{\varphi} \cos \varphi \approx \sin \varphi + \Delta t \dot{\varphi} \\ \cos(\varphi+\Delta\varphi) &\approx \cos \varphi — \Delta \varphi \sin \varphi \approx \cos \varphi — \Delta t \dot{\varphi} \sin \varphi \approx \cos \varphi \end{align}$$

benutzt, um die letz­ten zwei Rei­hen der Glei­chung zu erstellen. 

Optimierungslösung

Möch­ten wir nun eine matrix \(K\) fin­den, sodass der Steue­rungs­in­put \(u_k=Kx_k\) das Sys­tem sta­bi­li­siert, so ist das Optimierungsproblem

$$\begin{align} \min_{Z_{xx}, Z_{xu}, Z_{uu}} ~~~& \sum_{i=1}^3 (Z_{xx})_{ii} +(Z_{uu})_{ii} \\ s.t. ~~~& \begin{bmatrix} Z_{xx} & Z_{xu} \\ Z_{xu}^T & Z_{uu} \end{bmatrix} \succeq 0 \\ & Z_{xx}-AZ_{xx}A^T‑AZ_{xu}B^T — BZ_{xu}^TA^T — B Z_{uu}B^T=W\end{align}$$

zu lösen. Dabei sind \(A\) und \(B\) wie im vori­gen Abschnitt beschrie­ben, \(w\) ist eine \(5 \times 5\) Matrix von \(0\) en mit Aus­nah­me des Ein­tra­ges \(W_{33}=\sigma_w^2\) der Vari­anz des Zufalls­ef­fek­tes auf die Beschleu­ni­gung und das resul­tie­ren­de Steu­er­si­gnal ist \(u_k= Kx_k=Z_{xu}^T(Z_{xx})^{-1}x_k\).

Abbil­dung 2: Die Resul­ta­te der Opti­mie­rung sind die Matri­zen \(Z_{XU}, Z_{XX}, K\) zur Ablei­tung des opti­ma­len Steu­er­si­gna­les \(u_k\) gege­ben den Zustand \(x_k\). Die bei­den Gra­fi­ken zei­gen die Evo­lu­ti­on eines nach die­sem Sche­ma kon­trol­lier­ten und von Zufalls­ef­fek­ten beein­fluss­ten Pendels.

Praktisches

Soll das obi­ge Lösungs­vor­ge­hen auf ande­re Sys­te­me über­tra­gen wer­den, sind eini­ge Hin­wei­se zu beach­ten. Die Sys­tem­dy­na­mik muss line­ar sein und somit for­mu­lier­bar als $$x_{k+1}=Ax_k+Bu_k+w_k$$ wobei die \(w_k\) unab­hän­gi­ge Zufalls­va­ria­blen mit bekann­ter Kova­ri­anz­ma­trix sein müs­sen. Sind die \(w_k\) unter­ein­an­der kor­rel­liert, muss die gesam­te Opti­mie­rungs­glei­chung in einen höher­di­men­sio­na­len Raum ein­ge­bet­tet wer­den, in den die \(x_1, …, x_k\) und \(w_1, …, w_k\) gleich­zei­tig ein­be­zo­gen werden.

Schon beim Pen­del­bei­spiel war der Zustand \(x_k\) 5‑dimensional mit zwei Hilfs­di­men­sio­nen, die \(\sin \varphi_k\) und \(\cos \varphi_k\) doku­men­tiert haben. Die Defi­ni­ti­on des Zustands­vek­tors muss vom Anwen­den­den sel­ber durhge­führt wer­den und kann durch­aus kom­pli­ziert wer­den. Oft sind Tricks und Appro­xi­ma­tio­nen nötig, um nicht­li­nea­re Glei­chun­gen in eine sinn­voll ver­wend­ba­re linea­ri­sier­te Form zu überführen.

Code & Quellen

Bei­spiel­code: OC_stochastic_control_1.py , OC_stochastic_control_2.py  in unse­rem Tuto­ri­al­fol­der.

[1] Bal­a­krish­n­an, V.,  & Van­den­berg­he, L. (2003). Semi­de­fi­ni­te pro­gramming dua­li­ty and line­ar time-inva­ri­ant sys­tems. IEEE Tran­sac­tions on Auto­ma­tic Con­trol, 48,(1),  30–41.

[2] Kam­gar­pour, M., Sum­mers, T. (2017). On infi­ni­te dimen­sio­nal line­ar pro­gramming approach to sto­cha­stic con­trol. 20th IFAC World Con­gress (IFAC 2017), Tou­lou­se, France, July 9–14. IFAC-Paper­sOn­Line, 50, (1), 6148 — 6153.