(三)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 计算复杂度:每次迭代的复杂度主要与线性化的求导过程相关,其复杂度通常是(n 为状态和控制的总维度)。
全DDP 计算复杂度:每次迭代不仅需要计算梯度,还需要计算 Hessian,复杂度增加至。
2. 应用场景
iLQR :
- 系统非线性较弱、规模较大。
- 实时控制需求较高的场景,例如机器人、自动驾驶。
- 计算资源有限的情况,iLQR 可以快速收敛并生成较优解。
DDP:
- 高度非线性系统,例如航空航天、复杂机械系统控制。
- 需要高精度控制策略的任务,尤其是长期规划时精度要求较高。
- 对计算时间要求不那么严格,或可以并行计算的场景。
3. DDP问题定义
DDP的问题定义和ILQR是一致的,都是建立离散时间系统的状态方程和代价函数,目标是找到控制序列最小化成本函数。
4. 公式推导
公式推导与ILQR推导方式一致,区别是系统方程不再是线性方程,而是二阶泰勒展开。为了和ILQR对比,保持二者目录一致,但只展示二者不同的部分。
4.1. 二阶近似
这里不再是一阶近似,而是对进行二阶泰勒展开:
其中:
是动力学方程对状态的线性化矩阵,
是动力学方程对控制的线性化矩阵,