概要

今回からダイナミクスを持つシステムへの最適制御を考える。 考え方は前回の場合とそれほど変わらず、ダイナミクスを制約条件として考えると、必要条件として、二点の境界条件をもつ微分方程式が導出される。 今回はその導出と、問題を解くための数値計算法を紹介する。 教科書は引き続きE. Brysdn, Jr. Yu-Chi Ho, “Applied Optimal Control”, CRC Press, 1975を用いる。

離散時間システムの場合

問題

非線形の差分方程式で表されるつぎのシステムを考える。 $$ x(i+1) = f(x(i),u(i)), \quad x(0):\text{given}, \quad i = 0,\cdots,N-1. \tag{2.2.1} $$ ただし、$x(i)\in R^n$は状態ベクトル、$u(i)\in R^m$は入力ベクトルである。

以下の評価関数 $$J = \phi(x(N)) + \sum_{i=0}^{N-1}L(x(i),u(i))$$ を最小化する$u$を求めたい。

必要条件の導出

$(2.2.1)$は等式制約条件として捉えられる。 そのため、ラグランジュ乗数$\lambda(i)$を用いて $$\bar J := \phi(x(N)) + \sum_{i=0}^{N-1}\left[ L(x(i),u(i)) + \lambda^T(i+1){f(x(i),u(i)) - x(i+1)} \right] \tag{2.2.3}$$ を考える。 ハミルトニアン $$H^i := L(x(i),u(i)) + \lambda^T(i+1)f(x(i),u(i))$$ を定義すると、$(2.2.3)$は $$\bar J = \phi(x(N)) -\lambda^T(N)x(N) + \sum_{i=1}^{N-1}\left[ H^i - \lambda^T(i)x(i) \right] +H^0$$ と書き換えられる。

$u$の微小変化が$\bar J$に与える変化を考えると $$ d\bar J = \left[ \frac{\partial \phi}{\partial x(N)} - \lambda^T(N) \right]dx(N) + \sum_{i=1}^{N-1} \left\{ \left[ \frac{\partial H^i}{\partial x(i)} - \lambda^T(i) \right]dx(i) + \frac{\partial H^i}{\partial u(i)}du(i) \right\} + \frac{\partial H^0}{\partial x(0)}dx(0) + \frac{\partial H^0}{\partial u(0)}du(0) \tag{2.2.6} $$ となる。

与えられた入力$u$が$\bar J$を最小化するためには、少なくとも$u$によって駆動する$x$の微小変化に対して、$\bar J$が不変である必要があるので、 $$\lambda^T(i)-\frac{\partial H^i}{\partial x(i)} =0$$ すなわち $$ \lambda^T(i) = \frac{\partial L}{\partial x(i)} + \lambda^T(i+1)\frac{\partial f}{\partial x(i)}, \quad i = 0,\cdots,N-1 \tag{2.2.12} $$ $$ \lambda^T(N) = \frac{\partial \phi}{\partial x(N)} $$ が成り立つ必要がある。

この条件を$(2.2.6)$に適用し、さらに$x(0)$は固定されているとすると $$d\bar J = \sum_{i=0}^{N-1} \frac{\partial H^i}{\partial u(i)}du(i)$$ が得られる。 さらに、$\bar J$が極値であるためには、$d\bar J$が任意の$du$に対して$0$である必要があるため、 $$\frac{\partial H^i}{\partial u(i)}=0 \quad i = 0,\cdots,N-1$$ すなわち $$ \frac{\partial L}{\partial u(i)} + \lambda^T(i+1)\frac{\partial f}{\partial u(i)} = 0 \quad i = 0,\cdots,N-1 \tag{2.2.13} $$ が成り立つ必要がある。

以上をまとめると、我々が解かなくてはいけない差分方程式は$(2.2.1),(2.2.12),(2.2.13)$ となる。これらの方程式をオイラー・ラグランジュ方程式 (Euler-Lagrange equation)と呼ばれ、二つの境界条件 $$ x(0):\text{given}, \quad \lambda^T(N) = \frac{\partial \phi}{\partial x(N)} $$ をもつので、二点境界値問題というクラスの微分方程式にあたる。

与えられた$u$に対して$J$が最小値であるためには、 $$dJ = \frac{1}{2}\frac{\partial^2 \phi}{\partial x(N)\partial x(N)}dx(N) + \frac{1}{2}\sum_{i=0}^{N-1}[dx^T(i),du^T(i)] \begin{bmatrix} \frac{\partial^2 H^i}{\partial x(i)\partial x(i)} & \frac{\partial^2 H^i}{\partial x(i)\partial u(i)} \newline \frac{\partial^2 H^i}{\partial u(i)\partial x(i)} & \frac{\partial^2 H^i}{\partial u(i)\partial u(i)} \end{bmatrix} \begin{bmatrix}dx(i) \newline du(i) \end{bmatrix} \ge 0$$ もまた必要である。 ここで$dx$は $$dx(i+1) = \frac{\partial f}{\partial x(i)}dx(i) + \frac{\partial f}{\partial u(i)}du(i),\quad dx(0) = 0$$ として求める。

連続時間システムの場合

問題

離散時間システムと考え方は一緒。連続時間の非線形ダイナミクス $$ \dot x = f(x(t),u(t),t), \quad x(t_0):\text{given}, \quad t_0 \le t \le t_f \tag{2.3.1} $$ にしたがうシステムに対して、評価関数 $$J = \phi(x(t_f),t_f) + \int_{t_0}^{t_f}L(x(t),u(t),t)dt$$ を最小化する$u$を求めたい。

必要条件の導出

離散時間システムの場合は微小変化を考えたが、ここでは変分を考える (変分については「汎関数の微分」というように考えて差し支えない) 。

それ以外は離散時間の場合と変わらず、$u$が停留点となるための必要条件は$(2.3.1)$及び $$\dot\lambda = -\left( \frac{\partial f}{\partial x} \right)^T\lambda -\left( \frac{\partial L}{\partial x} \right)^T$$ $$\left( \frac{\partial f}{\partial u} \right)^T\lambda + \left( \frac{\partial L}{\partial u} \right)^T = 0$$ である。これらの方程式も、オイラー・ラグランジュ方程式と呼ばれ、境界条件 $$ x(t_0):\text{given}, \quad \lambda^T(t_f) = \left[\frac{\partial \phi}{\partial x}\right]_{t=t_f} $$ を持つ。

また、$u$が停留点であるためには

$$ \delta J = \frac{1}{2}\left[ \delta x^T\frac{\partial^2 \phi}{\partial x^2}\delta x \right]_{t=t_f} + \frac{1}{2} \int_{t_0}^{t_f}[\delta x^T, \delta u^T] \begin{bmatrix} \frac{\partial^2 H}{\partial x^2} & \frac{\partial^2 H}{\partial x\partial u} \newline \frac{\partial^2 H}{\partial u\partial x} & \frac{\partial^2 H}{\partial u^2} \end{bmatrix} \begin{bmatrix}\delta x \newline \delta u \end{bmatrix} dt \ge 0 $$

もまた必要である。 ここで$\delta x$は $$ \frac{d}{dt}(\delta x) = \frac{\partial f}{\partial x}\delta x + \frac{\partial f}{\partial u}\delta u,\quad \delta x(t_0) = 0 $$ として求める。

解き方

連続時間の場合を考える。 前のセクションの結果から、初期値$x(t_0)$の摂動$\delta x(t_0)$に対して、 $$ \delta \dot x = f_x\delta x + f_u\delta u \tag{6.1.10}$$ $$ \delta \dot \lambda = -H_{xx}\delta x -f_x^T\delta \lambda - H_{xu}\delta u \tag{6.1.11} $$ $$ 0 = H_{ux}\delta x -f_u^T\delta \lambda - H_{uu}\delta u \tag{6.1.12} $$ $$ \delta x(t_0) = 0,\quad \delta \lambda(t_f) = \left[\phi_{xx}\delta x\right]_{t=t_f} $$ が成り立つ。 まず$(6.1.12)$を$\delta u$について解くと $$ \delta u(t) = -H_{uu}^{-1}(H_{ux}\delta x + f_u^T\delta\lambda) \tag{6.1.20} $$ を得る。 これを$(6.1.10),(6.1.11)$に代入して整理すると $$ \delta \dot x = A(t)\delta x - B(t)\delta \lambda \tag{6.1.21} $$ $$ \delta \dot \lambda = -C(t)\delta x - A^T(t)\delta \lambda $$ という二本の連立微分方程式と $$ \delta x(t_0)=0,\quad \delta \lambda(t_f) = \left[\phi_{xx}\delta x\right]_{t=t_f} $$ という二つの境界条件を得る。ここで $$ A(t) = f_x - f_uH_{uu}^{-1}H_{ux},\quad B(t) = f_uH_{uu}^{-1}f_u^T,\quad C(t) = H_{xx} - H_{xu}H_{uu}^{-1}H_{ux} $$ とおいた。 さらに、$\delta\lambda(t) = S(t)\delta x(t)$なる関係を仮定すると$(6.1.21)$は $$ \delta\dot x = (A-BS)\delta x \tag{6.2.8} $$ として書き換えられ、さらに $$ \dot S = -SA-A^TS+SBS-C,\quad S(t_f) = \phi_{xx}(t_f) $$ という$S$についての行列微分方程式を得る。 この微分方程式は、$t=t_f$から逆時間に解くことができ、$S$が求まったら、初期条件$x(t_0)$と$(6.2.8)$を用いて$\delta x$を得ることができる。 $\delta x$が得られたら、$\delta\lambda(t) = S(t)\delta x(t)$の関係を用いて$\delta \lambda$を得ることができ、最後に$(6.1.20)$を用いて$\delta u$が得られる。 このように、逆方向→順方向、というふうに解いていくやり方を、backward sweep methodという。