微分動的計画法
{\displaystyle {\begin{alignedat}{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{alignedat}}}
先に述べたように、価値関数の初期値は V ( x , N ) ≡ l f ( x N ) {\displaystyle V(\mathbf {x} ,N)\equiv \ell _{f}(\mathbf {x} _{N})} である。逆方向パスの完了後、新しい軌道にそって順方向パスの計算を行う。
x ^ ( 1 ) = x ( 1 ) u ^ ( i ) = u ( i ) + k ( i ) + K ( i ) ( x ^ ( i ) − x ( i ) ) x ^ ( i + 1 ) = f ( x ^ ( i ) , u ^ ( i ) ) {\displaystyle {\begin{aligned}{\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{aligned}}}
以上の逆方向パスと順方向パスの計算を収束するまで繰り返す。
微分動的計画法は、ニュートン法と同様に、二次収束を示すアルゴリズムである。 そのため、最小値に向けて大きな修正ステップが発生するため、収束を保証するために、正則化 および/または直線探索が必要となる。 DDPの文脈における正則化とは、式(4)の行列 Q u u {\displaystyle Q_{\mathbf {u} \mathbf {u} }} の正定性を保証することである。 DDPにおける直線検索は、オープンループ制御修正量 k {\displaystyle \mathbf {k} } をスカラー 0 < α < 1 {\displaystyle 0<\alpha <1} でスケーリングすることに対応する。