微分動的計画法
微分動的計画法 (DDP)(びぶんどうてきけいかくほう、Differential Dynamic Programming)は軌道最適化のために用いられる最適制御アルゴリズムの一つである。 本アルゴリズムは1966年に Mayne によって紹介され、
その後JacobsonとMayneによるその名の由来となった著作の中で分析された。
このアルゴリズムはシステムのダイナミクスとコスト関数を局所的な二次形式によってモデル化し、2次収束を示す。 また、Pantojaのstep-wise Newton法とも密接に関連している。
次式のダイナミクスを考える。
これは制御入力 \mathbf{u} のもとでの状態 \textstyle\mathbf{x} の時刻 i から i+1までの時間発展を表している。
総コスト J_0 は、ランニングコスト \textstyle\ell と最終コスト \ell_f の和として与えられ、状態 \mathbf{x} と終端時刻までに適用する制御系列 \mathbf{U} \equiv \{\mathbf{u}_0,\mathbf{u}_1\dots,\mathbf{u}_{N-1}\} によって定まる:
J_0(\mathbf{x},\mathbf{U})=\sum_{i=0}^{N-1}\ell(\mathbf{x}_i,\mathbf{u}_i) + \ell_f(\mathbf{x}_N),
ここで \mathbf{x}_0\equiv\mathbf{x}であり、時刻 i>0 における状態 \mathbf{x}_iは式1によって与えられる。この最適制御問題の解は、上式を最小化する制御系列
\mathbf{U}^*(\mathbf{x})\equiv \operatorname{argmin}_{\mathbf{U} J_0(\mathbf{x},\mathbf{U}).
である。
これに対し、ありえる初期状態すべてを考えるのではなく、特定の初期状態 \mathbf{x}_0 に対して最適な入力系列 \mathbf{U}^*(\mathbf{x}) を求めるのが 軌道最適化である。
今、 \mathbf{U}_i を制御入力の部分系列 \mathbf{U}_i \equiv \{\mathbf{u}_i,\mathbf{u}_{i+1}\dots,\mathbf{u}_{N-1}\} とし、
残余コスト(cost-to-go) J_i を i から Nまでの部分和として定義する:
J_i(\mathbf{x},\mathbf{U}_i)=\sum_{j=i}^{N-1}\ell(\mathbf{x}_j,\mathbf{u}_j) + \ell_f(\mathbf{x}_N).
最適な残余コスト、または時刻 i での価値関数 は、以下のような制御系列による最小化で与えられる :
V(\mathbf{x},i)\equiv \min_{\mathbf{U}_i}J_i(\mathbf{x},\mathbf{U}_i).
V(\mathbf{x},N)\equiv \ell_f(\mathbf{x}_N)を出発点として、 時間を遡る方向に制御入力を一ステップ毎に最小化することにより、動的計画法の原理は全体の最小化に必要な計算量を削減する。
これがベルマン方程式である。
微分動的計画法 (DDP) では、新しい制御系列を計算するために、ノミナルな軌道に沿って逆方向パスの計算を行い、次に(得られた制御系列のもとでの)新しい軌道とその評価値を得るために順方向パスの計算を行うことを繰り返す。逆方向パスの計算から始めよう。
式2の \min[~] 演算子の引数
\ell(\mathbf{x},\mathbf{u}) + V(\mathbf{f}(\mathbf{x},\mathbf{u}),i+1)
に関して、その値の変分を時刻iの状態-入力ペア (\mathbf{x},\mathbf{u}) 周辺でとったものをQとしよう:
\begin{align}Q(\delta\mathbf{x},\delta\mathbf{u})\equiv &\ell(\mathbf{x}+\delta\mathbf{x},\mathbf{u}+\delta\mathbf{u})&&{}+V(\mathbf{f}(\mathbf{x}+\delta\mathbf{x},\mathbf{u}+\delta\mathbf{u}),i+1)
\\
-&\ell(\mathbf{x},\mathbf{u})&&{}-V(\mathbf{f}(\mathbf{x},\mathbf{u}),i+1)
\end{align}
これを、二次形式に展開する。
: & Q_{\mathbf{x}\mathbf{u}\\
Q_\mathbf{u} & Q_{\mathbf{u}\mathbf{x} & Q_{\mathbf{u}\mathbf{u}
\end{bmatrix}
\begin{bmatrix}
1\\
\delta\mathbf{x}\\
\delta\mathbf{u}
\end{bmatrix}
|3}
ここで用いる Qの表記は、森本淳 (ATR脳情報研究所) の記法の変形版であり、添え字は偏微分の分母を示している。
見やすくするため、添え字のiを省略し、次の時間ステップの変数は V'\equiv V(i+1)のようにプライムをつけて示そう。テイラー展開により係数は以下となる。
\begin{alignat}{2}
Q_\mathbf{x} &= \ell_\mathbf{x}+ \mathbf{f}_\mathbf{x}^\mathsf{T} V'_\mathbf{x} \\
Q_\mathbf{u} &= \ell_\mathbf{u}+ \mathbf{f}_\mathbf{u}^\mathsf{T} V'_\mathbf{x} \\
Q_{\mathbf{x}\mathbf{x} &= \ell_{\mathbf{x}\mathbf{x} + \mathbf{f}_\mathbf{x}^\mathsf{T} V'_{\mathbf{x}\mathbf{x}\mathbf{f}_\mathbf{x}+V_\mathbf{x}'\cdot\mathbf{f}_{\mathbf{x}\mathbf{x}\\
Q_{\mathbf{u}\mathbf{u} &= \ell_{\mathbf{u}\mathbf{u} + \mathbf{f}_\mathbf{u}^\mathsf{T} V'_{\mathbf{x}\mathbf{x}\mathbf{f}_\mathbf{u}+{V'_\mathbf{x} \cdot\mathbf{f}_{\mathbf{u} \mathbf{u}\\
Q_{\mathbf{u}\mathbf{x} &= \ell_{\mathbf{u}\mathbf{x} + \mathbf{f}_\mathbf{u}^\mathsf{T} V'_{\mathbf{x}\mathbf{x}\mathbf{f}_\mathbf{x} + {V'_\mathbf{x} \cdot \mathbf{f}_{\mathbf{u} \mathbf{x}.
\end{alignat}
最後の三つの方程式に現れる最終項はベクトルとテンソルの縮約(contraction)を表す。 二次形式で近似された式3 を入力\delta\mathbf{u}に関して最小化することで次式を得る。
:^* = \operatorname{argmin}\limits_{\delta \mathbf{u}Q(\delta \mathbf{x},\delta
\mathbf{u})=-Q_{\mathbf{u}\mathbf{u}^{-1}(Q_\mathbf{u}+Q_{\mathbf{u}\mathbf{x}\delta \mathbf{x}),
|4}
これにより、オープンループ項 \mathbf{k}=-Q_{\mathbf{u}\mathbf{u}^{-1}Q_\mathbf{u} とフィードバック項\mathbf{K}=-Q_{\mathbf{u}\mathbf{u}^{-1}Q_{\mathbf{u}\mathbf{x}が与えられる。この結果を式3 に代入することにより 時間i における価値関数が得られる。
\begin{alignat}{2}
\Delta V(i) &= &{} -\tfrac{1}{2}Q_\mathbf{u} Q_{\mathbf{u}\mathbf{u}^{-1}Q_\mathbf{u}\\
V_\mathbf{x}(i) &= Q_\mathbf{x} & {}- Q_\mathbf{u} Q_{\mathbf{u}\mathbf{u}^{-1}Q_{\mathbf{u}\mathbf{x}\\
V_{\mathbf{x}\mathbf{x}(i) &= Q_{\mathbf{x}\mathbf{x} &{} - Q_{\mathbf{x}\mathbf{u}Q_{\mathbf{u}\mathbf{u}^{-1}Q_{\mathbf{u}\mathbf{x}.
\end{alignat}
i=N-1 からi=1に向かって、再帰的に価値関数 V(i) の局所的な二次形式のモデルと、制御の修正量 \{\mathbf{k}(i),\mathbf{K}(i)\}を求めるのが逆方向パスの計算である。
先に述べたように、価値関数の初期値は V(\mathbf{x},N)\equiv \ell_f(\mathbf{x}_N)である。逆方向パスの完了後、新しい軌道にそって順方向パスの計算を行う。
\begin{align}
\hat{\mathbf{x}(1)&=\mathbf{x}(1)\\
\hat{\mathbf{u}(i)&=\mathbf{u}(i) + \mathbf{k}(i) +\mathbf{K}(i)(\hat{\mathbf{x}(i) - \mathbf{x}(i))\\
\hat{\mathbf{x}(i+1)&=\mathbf{f}(\hat{\mathbf{x}(i),\hat{\mathbf{u}(i))
\end{align}
以上の逆方向パスと順方向パスの計算を収束するまで繰り返す。
微分動的計画法は、ニュートン法と同様に、二次収束を示すアルゴリズムである。 そのため、最小値に向けて大きな修正ステップが発生するため、収束を保証するために、正則化 および/または直線探索が必要となる。
DDPの文脈における正則化とは、式4の行列 Q_{\mathbf{u}\mathbf{u} の正定性を保証することである。 DDPにおける直線検索は、オープンループ制御修正量 \mathbf{k} をスカラー 0<\alpha<1でスケーリングすることに対応する。