Optimal control: Planungsprobleme

Problemstellung

Ein Sys­tem erhält in gewis­sem Rah­men frei zu wäh­len­de Steue­rungs­in­puts und soll in einen vor­de­fi­nier­ten Zustand gebracht wer­den oder eine bestimm­te Ver­lauf­st­ra­jek­to­rie nach­voll­zie­hen. In die­ser völ­li­gen Gene­ra­li­tät ist das Pro­blem jedoch nur schwer zu handhaben.

Ver­kom­pli­zie­ren­de Fak­to­ren wie Nicht­li­nea­ri­tä­ten, unbe­kann­te Sys­tem­dy­na­mik, und Zufäl­lig­kei­ten in den Wech­sel­wir­kun­gen zwi­schen Steue­rungs­in­put und Sys­tem­re­ak­ti­on kön­nen das Pro­blem sogar zu einer kom­plett unlös­ba­ren Ange­le­gen­heit wer­den lassen.

Im sim­pels­ten Fall kom­plet­ter Vor­her­sag­bar­keit des Sys­te­mes jedoch han­delt es sich um ein sta­ti­sches Pla­nungs­pro­blem und eine Lösung kann auf die Suche einer Sequenz von Steue­rungs­in­puts redu­ziert wer­den. Die­se Suche kann mit Hil­fe dedi­zier­ter Such­al­go­rith­men wie der Mon­te-Car­lo-Tree-Search durch­ge­führt wer­den oder sie wird als Opti­mie­rungs­pro­blem for­mu­liert, in wel­chem die Sys­tem­dy­na­mik die Rol­le von Neben­be­din­gun­gen einnimmt.

Mathematisches Modell

Hängt der Zustand \(x_{k+1}\) zum Zeit­punkt \(k+1\) line­ar ab vom vor­he­ri­gen Zustand \(x_k\) und dem Steue­rungs­in­put \(u_k\), so lässt sich die Sys­tem­dy­na­mik schrei­ben als

$$x_{k+1}=Ax_k+Bu_k $$

wobei \(x_{k+1}, x_k \in \mathbb{R}^d, u_k\in \mathbb{R}^m\) typi­scher­wei­se mehr­di­men­sio­na­le Vek­to­ren sind. \(A\) und \(B\) sind Sys­tem­ma­tri­zen, die den Ein­fluss von Zustand und Steue­rungs­si­gnal auf den zukünf­ti­gen Zustand codie­ren. Soll das Sys­tem so gesteu­ert wer­den, dass es einer Tra­jek­to­rie \(f_1, …, f_n \in \mathbb{R}^d\) folgt bei mög­lichst klei­nem Steue­rungs­in­put, so kann das for­mu­liert wer­den als das Optimierungsproblem

$$ \begin{align} \min_{x_1, …, x_n, u_1, …, u_n}  ~~~& \sum_{k=1}^n \|x_k-f_k\|_1+\|u_k\| \\ \text{s.t.} ~~~&x_{k+1}=Ax_k+Bu_k~~~ k=1, …, n \\ ~~~& x_1=x_{start} \end{align}$$

wobei \(x_1\) als Start­zu­stand \(x_{start}\) fest­ge­legt sei. Die Opti­mie­rungs­va­ria­blen sind die \(n\) Steue­rungs­in­puts \(u_1, …, n_n\) und die durch die dyna­mi­schen cons­traints beschränk­ten Zustän­de \(x_1, …, x_n\). Es han­delt sich um ein Opti­mie­rungs­pro­blem mit \(nd+nm\)  Variablen.

Es kann refor­mu­liert wer­den als linea­res Pro­gramm mit der Ziel­funk­ti­on \(\|x‑f\|_1+\|u\|_1=\|v^{\Delta}\|_1+\|v^u\|_1\) wobei \(x=[x_1^T, …, x_n^T]^T\) und \(u=[u_1^T, …, u_n^T]^T\) mit \(v^{\Delta} \in \mathbb{R}^{nd}\) und \(v^u\in \mathbb{R}^{nm}\) den Vek­to­ren der Abso­lut­be­trä­ge der Ele­men­te von \(x‑f\) und \(u\).

$$ \begin{align} \min_{x_1, …, x_n, u_1, …, u_n, v^{\Delta}, v^u}  ~~~& \sum_{k=1}^n\sum_{l=1}^d v^{\Delta}_{kl}+ \sum_{k=1}^n \sum_{l=1}^m v^u_{kl} \\ \text{s.t.} ~~~&x_{k+1}=Ax_k+Bu_k~~~ k=1, …, n \\ ~~~& v^{\Delta} \ge x‑f ~~~ v^{\Delta}\ge -(x‑f) \\ ~~~& v^u\ge u ~~~~~~~~~~~ v^u \ge ‑u \end{align}$$

Die ers­te Unglei­chung reprä­sen­tiert die Dyna­mik des Sys­te­mes wäh­rend die letz­ten zwei Paa­re von die Posi­ti­vi­tät der Abso­lut­re­si­du­en \(v^{\Delta}\) und \(v^u\) sicher­stel­len [1, p. 294].

Beispiel: Antriebssteuerung

Eine Droh­ne sei so zu steu­ern, dass sie von ihrer jet­zi­gen 3‑dimensionalen Posi­ti­on \(pos_1=[x_{start}, y_{start}, z_{start}]\) aus inner­halb von \(n\) Zeit­schrit­ten an der Ziel­po­si­ti­on \(pos_n=[x_{Ziel}, y_{Ziel}, z_{Ziel}]\) mit einer Gew­schwin­dig­keit von \(v_n=[v^x_{Ziel}, v^y_{Ziel}, v^z_{Ziel}]\) ein­trifft. Das (mög­lichst klein zu hal­ten­de) Steue­rungs­si­gnal \(u\) wird direkt in Beschleu­ni­gung über­setzt, sodass der Zusammenhang

$$x_{k+1}= \begin{bmatrix} pos_{k+1} \\ v_{k+1} \\ a_{k+1}\end{bmatrix} = \underbrace{\begin{bmatrix} I & \Delta t I & 0 \\ 0 & I & \Delta tI \\ 0 & 0 & \Delta t I\end{bmatrix}}_{A} \underbrace{\begin{bmatrix} pos_k \\ v_k \\ a_k\end{bmatrix}}_{x_k}+\underbrace{\begin{bmatrix} 0 \\ 0 \\ \Delta t I \end{bmatrix}}_{B} \underbrace{\begin{bmatrix}u_x \\ u_y\\ u_z\end{bmatrix}}_{u_k}$$

gilt.  Dabei ist \(I\) die \(3 \times 3\) Ein­heits­ma­trix, \(\Delta t\) die Län­ge eines Zeit­schrit­tes, \(pos\) steht für die Posi­ti­on, \(v\) für Geschwin­dig­kei­ten, und \(a\) für Beschleu­ni­gun­gen. Jeder Zustands­vek­tor weist dem­nach 9 Kom­po­nen­ten auf.

Abbil­dung 1 : Eine Droh­ne (a) und mög­li­che Tra­jek­to­ri­en füh­rend zum Ziel­zu­stand (b).

Lösung und Praktisches

Das zuge­hö­ri­ge Opti­mie­rungs­pro­blem ist

$$ \begin{align} \min_{x_1, …, x_n, u_1, …, u_n} 
~~~& \sum_{k=1}^n\|u_k\|_1 \\ \text{s.t.} ~~~&x_{k+1}=Ax_k+Bu_k~~~ k=1,
…, n \\ ~~~& pos_1=[x_{Start}, y_{Start}, z_{Start}]^T ~~~~pos_n=[x_{Ziel}, y_{Ziel}, z_{Ziel}]^T \\~~~& v_1=[v^x_{Start}, v^y_{Start}, v^z_{Start}]^T ~~~~~~~~~~~~v_n=[v^x_{Ziel}, v^y_{Ziel}, v^z_{Ziel}]^T\\ ~~~& u_{min}\le u_k \le u_{max} ~~~k=1, …,n .\end{align}$$

Eine Illus­tra­ti­on des Pro­b­le­mes bed­in­det sich in der nach­fol­gen­den Abbil­dung. Man beach­te, dass letzt­end­li­che Steue­rungs­in­puts und Tra­jek­to­rie signi­fi­kant von den Start­be­din­gun­gen und mög­li­chen Steue­rungs­in­put­be­schrän­kun­gen abhängen.

Abbil­dung 2: Opti­ma­le Tra­jek­to­ri­en unter ver­schie­de­nen Rand­be­din­gun­gen und die dazu­ge­hö­ri­gen Steuerungsinputs.

Das Pro­blem wird mit hil­fe der frei ver­füg­ba­ren Soft­ware CVXOPT [2] und CVXPY [3] auf einem han­de­l­üb­li­chen Lap­top inner­halb weni­ger Mil­li­se­kun­den gelöst. Es exis­tie­ren diver­se Erwei­te­rung. Die Ziel­funk­ti­on ent­hält übli­cher­wei­se qua­dra­ti­sche Ter­me und es ist mög­lich, Unsi­cher­hei­ten in Sys­tem­dy­na­mik und Umwelt durch zufäl­li­ge Grös­sen zu Model­lie­ren. Dies führt auf die line­ar-qua­dra­tisch Gaus­schen Zustands­reg­ler (LQG) [4, pp. 164–207]. Um kom­ple­xe Opti­mie­run­gen zu ver­mei­den wird häu­fig gefor­dert, dass \(u\) direkt als Funk­ti­on von \(x\) dar­stell­bar sei mit \(u=Kx\) und einer kon­stan­ten Matrix \(K\); sie­he z.B. [5, pp. 421–441].

Code & Quellen

Bei­spiel­code: OC_vehicle_control_3.py  in unse­rem Tuto­ri­al­fol­der.

[1] Boyd, S., & Van­den­berg­he, L. (2004). Con­vex Optimi­zation. Cam­bridge: Cam­bridge Uni­ver­si­ty Press.

[2] Ander­sen, M. S., , Dahl, J., & Van­den­berg­he, L. (2022) . CVXOPT: A Python packa­ge for con­vex optimi­zation, ver­si­on 1.3

[3] Dia­mond S., & Boyd S., (2016). CVXPY: A Python-embedded mode­ling lan­guage for con­vex optimi­zation. Jour­nal of Machi­ne Lear­ning Rese­arch, 17(83), 1–5.

[4] Ander­son, B. D. O., & Moo­re, J. B. (2007). Opti­mal Con­trol: Line­ar Qua­dra­tic Methods. New York: Cou­rier Corporation.

[5] Wol­ko­wicz, H., Sai­gal, R., & Van­den­berg­he, L. (2012). Hand­book of Semi­de­fi­ni­te Pro­gramming: Theo­ry, Algo­rith­ms, and Appli­ca­ti­ons. Ber­lin Hei­del­berg: Sprin­ger Sci­ence & Busi­ness Media.