最优化理论与自动驾驶(五):DDP原理、公式及代码演示

(三)DDP原理、公式推导以及代码演示

1. DDP 原理

DDP(Differential Dynamic Programming, DDP) 是一种用于求解非线性最优控制问题的强大方法。DDP是iLQR的扩展,iLQR使用的是一阶线性近似非线性系统,而DDP则使用了二阶展开来处理系统的非线性部分。DDP 的一个关键优势是它能够处理高度非线性和大规模系统的控制问题,相对于 LQR(线性二次调节器)和 iLQR(迭代线性二次调节器),它更适用于具有强非线性的复杂动力学系统。

iLQR 只需要计算梯度(即一阶导数),所以每次迭代的计算负担较轻,但优化方向的精度可能不足。DDP 则需要计算梯度和 Hessian(即二阶导数),使得每次迭代的计算量增加,但优化方向会更准确,尤其是当系统非线性很强时。在收敛性方面,iLQR 的收敛性依赖于问题的非线性程度和初始解的质量。如果系统的非线性较强,或者初始轨迹离最优解较远,iLQR 可能需要更多迭代才能找到近似最优解,甚至可能陷入局部最优。而DDP 由于考虑了二阶信息,能够更精确地描述系统的动态行为,通常能更快收敛到最优解,尤其是在系统具有显著非线性时。在稳定性与鲁棒性方面,iLQR 在系统非线性不强或控制量较小时通常能保持较好的稳定性,但在系统非线性较强时,忽略二阶效应可能会导致控制策略不够鲁棒。DDP 因为捕捉了二阶导数,能够对系统的非线性特性做出更好的响应,因此具有更好的鲁棒性和稳定性。

但是,Hessian 矩阵通常是关于状态和控制的二阶导数,因此对于大规模系统,存储和计算这些矩阵的成本会随着系统维度呈二次增长。具体差异如下:

iLQR 计算复杂度:每次迭代的复杂度主要与线性化的求导过程相关,其复杂度通常是O(n^3)(n 为状态和控制的总维度)。

全DDP 计算复杂度:每次迭代不仅需要计算梯度,还需要计算 Hessian,复杂度增加至O(n^4)

2. 应用场景

iLQR :

  • 系统非线性较弱、规模较大。
  • 实时控制需求较高的场景,例如机器人、自动驾驶。
  • 计算资源有限的情况,iLQR 可以快速收敛并生成较优解。

DDP:

  • 高度非线性系统,例如航空航天、复杂机械系统控制。
  • 需要高精度控制策略的任务,尤其是长期规划时精度要求较高。
  • 对计算时间要求不那么严格,或可以并行计算的场景。

3. DDP问题定义

DDP的问题定义和ILQR是一致的,都是建立离散时间系统的状态方程和代价函数,目标是找到控制序列\{u_0, u_1, \dots, u_{N-1}\}最小化成本函数。

\mathbf{x}_{k+1} = \mathbf{f}(\mathbf{x}_k, \mathbf{u}_k)

\min_{\{u_0, u_1, \dots, u_{N-1}\}} \sum_{k=0}^{N-1} l(x_k, u_k) + l_f(x_N)

4. 公式推导

公式推导与ILQR推导方式一致,区别是系统方程不再是线性方程,而是二阶泰勒展开。为了和ILQR对比,保持二者目录一致,但只展示二者不同的部分。

4.1. 二阶近似

这里不再是一阶近似,而是对x_{k+1} = f(x_k, u_k)进行二阶泰勒展开:

f(\mathbf{x}_t + \delta \mathbf{x}, \mathbf{u}_t + \delta \mathbf{u}) \approx f(\mathbf{x}_t, \mathbf{u}_t) + f_{\mathbf{x}} \delta \mathbf{x} + f_{\mathbf{u}} \delta \mathbf{u} + \frac{1}{2} \delta \mathbf{x}^T f_{\mathbf{xx}} \delta \mathbf{x} + \frac{1}{2} \delta \mathbf{u}^T f_{\mathbf{uu}} \delta \mathbf{u} + \delta \mathbf{x}^T f_{\mathbf{xu}} \delta \mathbf{u}

其中:

  • f_{\mathbf{x}} = \frac{\partial f(\mathbf{x}_t, \mathbf{u}_t)}{\partial \mathbf{x}_t}是动力学方程对状态的线性化矩阵,f_{\mathbf{x}} \in \mathbb{R}^{n \times n}
  • f_{\mathbf{u}} = \frac{\partial f(\mathbf{x}_t, \mathbf{u}_t)}{\partial \mathbf{u}_t}是动力学方程对控制的线性化矩阵,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值