やること
https://www.amazon.co.jp/dp/4254209444
を読んで、確率微分方程式による最適化問題を解けるようになることです。
これまでのBotter自主ゼミノート
Botter自主ゼミノート 1.2 確定システムの制御の回顧
Botter自主ゼミノート 2.1 確率過程とは?, 2.2 確率過程の数学的表現
リッカチ微分方程式の導出にチャレンジしてみよう
まずはHJB方程式が与えられたものとして、そこからの導出をこちらのページ をなぞって写経してみます。
最適制御入力を求める
ハミルトン関数の定義は以下の通りです。システムの状態方程式\.{\boldsymbol{x}}=\boldsymbol{f}(\boldsymbol{x},\boldsymbol{u},t) に対してラグランジュの未定乗数法を使った結果、\lambda^T 以降の項が出現して、ごちゃごちゃしたものをH にまとめています。そのため、H の中には\lambda が入ってきています。
H(x, \lambda, u, t) = \frac {1}{2} \left( x^T Q(t) x + u^T R(t) u \right) + \lambda^T(Ax + Bu)
R(t) が正定値行列ならH を最小化するu は一意に存在し、\frac {\partial H}{\partial u} = 0 を満たすのだそうです。
!
n \times n 実対称行列M が正定値 (positive definite) であるとは、n 個の実数を成分に持つ零ベクトルでない任意の列ベクトルz に対して、二次形式z^T M z が必ず正となるということです
H(x, \lambda, u, t) の最小値を与えるu を計算してみます。H(x, \lambda, u, t) をu で微分して、その値が0 になるu を探します。その際に、以下を利用します。
!
対称行列で表された二次形式の微分 (勾配ベクトル) はx^T A x = 2 A x となります (高校数学の美しい物語 )
\begin{aligned}
H(x, \lambda, u, t) &= \frac {1}{2} \left( x^T Q(t) x + u^T R(t) u \right) + \lambda^T(Ax + Bu) \\
\frac{\partial}{\partial u} H(x, \lambda, u, t) &= \frac{\partial}{\partial u} \frac{1}{2} u^T R(t) u + \frac{\partial}{\partial u} \lambda^T Bu\\
&= R(t) u + \lambda^T B \\
\end{aligned}
右辺が0 になればいいので…
\begin{aligned}
0 &= R(t) u + \lambda^T B \\
u &= -R^{-1}(t) \lambda^T B \\
\end{aligned}
\lambda は縦ベクトルでB は行列なので、転置して入れ替えても結果は変わりません。
\therefore u = - R^{-1} (t) B^T \lambda
!
x^T A x + x^T b + c = (x-h)^TA(x-h)+k\hspace{1em}\left(h = \frac{1}{2}A^{-1}b, k=c-\frac{1}{4}b^T A^{-1}b\right)
H(x, \lambda, u, t) の最小値を与えるu が得られたので、これをハミルトンヤコビベルマン方程式のmin の項に代入します。
\begin {aligned}
\min_{u} H\left(x, \lambda, u, t \right)
+ \frac{\partial V}{\partial t} \left(x,t\right) &= 0 \hspace{1em} \left( \lambda = \frac{\partial V}{\partial x}^T \right) \\
-\frac{\partial V}{\partial t}(x,t) &= \frac {1}{2} x^T Q(t) x + \frac {1}{2} \left(- R^{-1} (t) B^T \lambda \right)^{T} R(t) \left(- R^{-1} (t) B^T \lambda \right) + \lambda^T Ax + \lambda^T B \left(- R^{-1} (t) B^T \lambda \right) \\
&= \frac {1}{2} x^T Q(t) x + \frac {1}{2} \lambda^T B \left(R^{-1}(t) \right)^{T} R(t) R^{-1} (t) B^T \lambda + \lambda^T Ax - \lambda^T B R^{-1} (t) B^T \lambda
\end {aligned}
なるほど! 行列計算のベーシックな所を忘れていたので、対称行列についての性質を確認しておきます。
対称行列の性質の復習
対称行列の固有値はすべて実数
対称行列の固有ベクトルは直交する
対称行列は必ず対角化できる
対称行列の逆行列は対象行列
最後の特性の証明は以下の通りです。
\begin{aligned}
A A^{−1} &= I \\
(A A^{-1})^T &= I^T \\
(A^{-1})^T A^T &= I \\
(A^{-1})^T A &= I \hspace{10mm} (A^T = Aを利用) \\
(A^{-1})^T &= A^{-1} \hspace{10mm} (A^{-1}を両辺の右から乗算し、A A^{-1} = Iを利用) \\
\end{aligned}
では気を取り直して再開です。
\begin {aligned}
\min_{u} H\left(x, \lambda, u, t \right)
+ \frac{\partial V}{\partial t} \left(x,t\right) &= \frac {1}{2} x^T Q(t) x + \frac {1}{2} \lambda^T B \left(R^{-1}(t) \right)^{T} R(t) R^{-1} (t) B^T \lambda + \lambda^T Ax - \lambda^T B R^{-1} (t) B^T \lambda \\
&= \frac {1}{2} x^T Q(t) x + \frac {1}{2} \lambda^T B R^{-1}(t) B^T \lambda + \lambda^T Ax - \lambda^T B R^{-1} (t) B^T \lambda \\
&= \frac {1}{2} x^T Q(t) x + \lambda^T Ax - \frac {1}{2} \lambda^T B R^{-1}(t) B^T \lambda\\
\end {aligned}
ここで、V(x,t) = \frac{1}{2} x^T P(t) x と表せると仮定すると上手くいくことが知られているそうなのでやってみます。
\lambda = \frac {\partial V^T}{\partial x} = P(t)x ということは、\lambda^T = x^T P^T (t) なので…
(行列P ,Q ,R の引数は省略します)
\begin{aligned}
-\frac{\partial V}{\partial t}(x,t) &= \frac {1}{2} x^T Q x + x^T P^T A x - \frac {1}{2} x^T P^T B R^{-1} B^T Px\\
&= \frac 12 x^T\left\{ Q + 2P^T A - P^T B R^{-1} B^T P \right\}x\\
\end{aligned}
-\frac{\partial V}{\partial t}(x,t) = \frac 12 x^T\left\{ Q + 2P^T A - P B R^{-1} B^T P \right\}x
-\frac{\partial V}{\partial t}(x,t) = \frac{1}{2} x^T\left\{ Q + PA + A^TP - P B R^{-1} B^T P \right\}x
ここで、左辺は-V(x,t) = -\frac{1}{2} x^T P(t) x をt で偏微分しているので、-\frac{1}{2} x^T \.{P(t)} x となり、左辺と右辺の形が一致します。
\begin{aligned}
-\frac{1}{2} x^T \.{P(t)} x &= \frac{1}{2} x^T\left\{ Q + PA + A^TP - P B R^{-1} B^T P \right\}x\\
-\.{P(t)} &= Q + PA + A^TP - P B R^{-1} B^T P
\end{aligned}
ここで、今回の導出結果ともともと教科書に書いてあったことを見比べると…以下のように対応していることがわかります。
\begin{aligned}
P(t) &= \Pi(t) \\
Q_f &= F \\
R(t)^{-1} &= N^{-1} \\
\lambda &= \Pi(t) x(t)
\end{aligned}
y(t) ,x(t) はそれぞれ状態量および観測量ベクトル,u(t) は制御量ベクトルであり,x \in {R^n} ,y \in {R^m} (m \le n) ,u \in R^{\ell} とする.
マトリクスH が単位マトリクス,H = I であるならばシステム状態量はすべて独立に観測できることから,最適制御は評価コスト汎関数を2次形式
J(u) = x^T(T)Fx(T)+\int_{t_0}^{T}\left[x^T (s) Mx(s) + u^T (s)Nu(s)\right]ds \tag{1.2}
(ただし,F ,M \ge 0 ,N > 0 は対象マトリクス; 上付きの^T はベクトルの転置を表す)と設定すると,
u^o(t) = -N^{-1}C^T \Pi (t)x(t) \tag{1.3}
で与えられる.ここで\Pi(t) はn \times n 次元リッカチ微分方程式
\left.
\begin{aligned}
\.{\Pi}(t) + \Pi (t)A + A^T \Pi (t) + M - \Pi (t) CN^{-1} C^T \Pi(t) &= 0 \\
\Pi (T) &= F
\end{aligned}
\quad \right\} \tag{1.4}
の正定値解である。
Discussion