跳转至

庞特里亚金原理

考虑确定性最优控制问题:

\[\begin{aligned} \min_{\mathbf{x}_{1:N},\mathbf{u}_{1:N-1}} \quad &J(\mathbf{x}_{1:N},\mathbf{u}_{1:N-1})=\sum_{k=1}^{N-1}l(\mathbf{x}_k,\mathbf{u}_k)+l_F(\mathbf{x}_N)\\ \mathrm{s.t.}\quad &\mathbf{x}_{k+1} = f(\mathbf{x}_k,\mathbf{u}_k) \end{aligned}\]

这里的代价函数分为每个时间步的状态代价(state cost)、阶段代价(stage cost),以及最后的终端代价(terminal cost)。约束条件即系统的动力学方程。

庞特亚金原理给出了以上问题的一个解,做法从原理上类似于使用一阶必要条件/ KKT 条件求解。

首先,我们写出拉格朗日函数:

\[L = \sum_{k=1}^{N-1}\left\{l(\mathbf{x}_k,\mathbf{u}_k)+\lambda^{\top}_{k+1}[f(\mathbf{x}_k,\mathbf{u}_k)-\mathbf{x}_{k+1}]\right\}+l_{F}(\mathbf{x}_N)\]

我们定义哈密尔顿(Hamiltonian)函数 \(H(\mathbf{x}, \mathbf{u}, \lambda) = l(\mathbf{x},\mathbf{u})+\lambda^{\top}f(\mathbf{x},\mathbf{u})\) ,并用其改写拉格朗日函数:

\[L = H(\mathbf{x}_1, \mathbf{u}_1, \lambda_2) + \sum_{k=2}^{N-1}\left[H(\mathbf{x}_k,\mathbf{u}_k,\lambda_{k+1})-\lambda_k^{\top}\mathbf{x}_k\right]+l_{F}(\mathbf{x}_N)-\lambda_N^{\top}\mathbf{x}_N\]

哈密尔顿函数在这里只是一个换元的 trick .

我们写出它的一阶必要条件:

\[\begin{aligned} \frac{\partial L}{\partial \lambda_{k+1}} &= \frac{\partial H}{\partial\lambda_{k+1}}-\mathbf{x}_{k+1}^{\top}= \mathbf{0}\\ \frac{\partial L}{\partial\mathbf{x}_k} &= \frac{\partial H}{\partial\mathbf{x}_k}-\lambda_k^{\top}= \mathbf{0}\\ \frac{\partial L}{\partial \mathbf{x}_N} &= \frac{\partial l_{F}}{\partial \mathbf{x}_N}-\lambda_N^{\top} = \mathbf{0}\\ \mathbf{u}_k &= \arg\min_{\mathbf{u}}H, \quad \mathrm{s.t.}\quad \mathbf{u}\in\mathcal{U}\\ \end{aligned}\]

移项化简即得:

\[\begin{aligned} \mathbf{x}_{k+1} &= \nabla H_{\lambda}(\mathbf{x}_k,\mathbf{u}_k,\lambda_{k+1})\\ \lambda_k &= \nabla H_{\mathbf{x}}(\mathbf{x}_k,\mathbf{u}_k,\lambda_{k+1})\\ \lambda_N &= \nabla_{\mathbf{x}_N} l_{F}\\ \mathbf{u}_k &= \arg\min_{\mathbf{u}}H(\mathbf{x}_k,\mathbf{u}_k,\lambda_{k+1}), \quad \mathrm{s.t.}\quad \mathbf{u}\in\mathcal{U}\\ \end{aligned}\]