《线性二次型调节器(LQR)的有限时域最优控制求解与离散时间黎卡提方程》
字数 3856 2025-12-15 13:46:12

《线性二次型调节器(LQR)的有限时域最优控制求解与离散时间黎卡提方程》

题目描述:
线性二次型调节器(LQR)是控制理论中一种经典的确定性最优控制算法。假设我们有一个线性离散时间动态系统,和一个包含状态与控制输入的二次型代价函数。题目要求:在已知系统动态、初始状态和有限控制时域(N步)的条件下,从最终时刻开始,逆向递推求解最优控制输入序列,并推导出关键的离散时间差分黎卡提方程(Discrete-time Difference Riccati Equation, DARE)。

循序渐进解题过程:

步骤1:问题建模

  1. 系统模型:我们有一个离散时间的线性时不变系统:
    \(x_{k+1} = A x_k + B u_k\)
    其中,\(x_k \in \mathbb{R}^n\) 是k时刻的状态向量,\(u_k \in \mathbb{R}^m\) 是k时刻的控制输入向量。A是状态转移矩阵,B是控制输入矩阵。假设 \(x_0\) 已知。

  2. 代价函数:我们希望最小化一个有限时域(从k=0到k=N-1)的二次型代价函数:
    \(J = x_N^T Q_f x_N + \sum_{k=0}^{N-1} (x_k^T Q x_k + u_k^T R u_k)\)
    其中:

    • \(Q_f\) 是终端状态代价矩阵,通常为半正定矩阵(\(Q_f \succeq 0\)),惩罚最终状态与目标(通常为零点)的偏差。
    • \(Q\) 是状态代价矩阵,也是半正定的(\(Q \succeq 0\)),惩罚状态偏离期望轨迹。
    • \(R\) 是控制代价矩阵,是正定矩阵(\(R \succ 0\)),惩罚过大的控制输入,保证问题良好定义。
  3. 目标:找到最优控制序列 \(\{u_0^*, u_1^*, ..., u_{N-1}^*\}\),使得总代价 \(J\) 最小。

步骤2:引入动态规划与最优性原理

  1. 动态规划思想:这是一个多阶段决策问题,可以用动态规划(从最后一步向前逆向求解)来高效解决。最优性原理(Principle of Optimality)表明,从任一中间状态出发到终点的最优控制策略,与从该状态开始的全局最优策略相同。

  2. 定义价值函数:定义“价值函数”或“成本函数” \(V_k(x_k)\) 为:从k时刻的某个状态 \(x_k\) 开始,执行最优控制序列直到结束时所需的最小剩余代价。

步骤3:逆向递推与贝尔曼方程

我们从最终时刻 \(N\) 开始,逐步向前推到初始时刻 \(0\)

  1. 基始情况(k=N)
    在最终时刻 \(N\),已经没有未来的控制输入。根据代价函数定义,剩余代价就是终端代价:
    \(V_N(x_N) = x_N^T Q_f x_N\)

  2. 逆向递推(k=N-1, N-2, ..., 0)
    根据动态规划的最优性原理,在k时刻,我们选择当前控制输入 \(u_k\) 时,不仅要考虑当前控制带来的瞬时代价,还要考虑从下一状态 \(x_{k+1}\) 出发的最优未来代价。这由贝尔曼方程描述:
    \(V_k(x_k) = \min_{u_k} [ x_k^T Q x_k + u_k^T R u_k + V_{k+1}(x_{k+1}) ]\)
    代入系统方程 \(x_{k+1} = A x_k + B u_k\)
    \(V_k(x_k) = \min_{u_k} [ x_k^T Q x_k + u_k^T R u_k + V_{k+1}(A x_k + B u_k) ]\)(1)

步骤4:猜测价值函数形式并求解

  1. 二次型猜测:我们观察到终端代价 \(V_N(x_N) = x_N^T Q_f x_N\) 是状态向量的二次型。可以合理猜测,在任意时刻k,最优价值函数 \(V_k(x_k)\) 也具有二次型形式:
    \(V_k(x_k) = x_k^T P_k x_k\),其中 \(P_k\) 是一个对称的半正定矩阵(称为“价值矩阵”或“成本矩阵”)。

  2. 代入并求解:将猜测形式 \(V_k(x_k) = x_k^T P_k x_k\)\(V_{k+1}(x_{k+1}) = x_{k+1}^T P_{k+1} x_{k+1}\) 代入贝尔曼方程(1):
    \(x_k^T P_k x_k = \min_{u_k} [ x_k^T Q x_k + u_k^T R u_k + (A x_k + B u_k)^T P_{k+1} (A x_k + B u_k) ]\)

  3. 展开右边
    \(x_k^T P_k x_k = \min_{u_k} [ x_k^T Q x_k + u_k^T R u_k + x_k^T A^T P_{k+1} A x_k + 2 x_k^T A^T P_{k+1} B u_k + u_k^T B^T P_{k+1} B u_k ]\)
    合并关于 \(u_k\) 的项:
    \(= \min_{u_k} [ x_k^T (Q + A^T P_{k+1} A) x_k + u_k^T (R + B^T P_{k+1} B) u_k + 2 x_k^T A^T P_{k+1} B u_k ]\)

  4. \(u_k\) 求最小化
    这是一个关于 \(u_k\) 的无约束凸二次优化问题。对 \(u_k\) 求偏导并令其为零:
    \(\frac{\partial}{\partial u_k} [ ... ] = 2 (R + B^T P_{k+1} B) u_k + 2 B^T P_{k+1} A x_k = 0\)
    解得最优控制输入 \(u_k^*\)
    \(u_k^* = - (R + B^T P_{k+1} B)^{-1} B^T P_{k+1} A x_k\)(2)
    定义增益矩阵 \(K_k = (R + B^T P_{k+1} B)^{-1} B^T P_{k+1} A\),则 \(u_k^* = -K_k x_k\)。这是一个状态反馈控制器:最优控制输入是当前状态的线性函数。

步骤5:推导离散时间差分黎卡提方程(DARE)

  1. 代入最优解:将最优控制输入 \(u_k^*\) 的表达式(2)代回 \(V_k(x_k)\) 的展开式。为了得到 \(P_k\) 的表达式,我们将(2)代入 \(u_k\) 的原始表达式中,并注意等式对任意 \(x_k\) 都成立。经过代数运算(可以先将 \(u_k^*\) 表达式代入,然后将 \(V_k(x_k)\) 表达式左边 \(x_k^T P_k x_k\) 与右边展开式中 \(x_k^T [ ... ] x_k\) 的系数矩阵对应相等),可以得到:

  2. 最终方程
    \(P_k = Q + A^T P_{k+1} A - A^T P_{k+1} B (R + B^T P_{k+1} B)^{-1} B^T P_{k+1} A\)(3)
    这个方程就是离散时间差分黎卡提方程。它给出了价值矩阵 \(P_k\) 从后向前(从k+1到k)的逆向递推关系。

  3. 递推的初始条件:从基始情况 \(V_N(x_N) = x_N^T Q_f x_N\) 可知,\(P_N = Q_f\)

步骤6:算法总结与求解流程

  1. 初始化:给定系统矩阵 \(A, B\),代价矩阵 \(Q, R, Q_f\),以及时域长度 \(N\)。令 \(P_N = Q_f\)

  2. 逆向迭代:对于 \(k = N-1, N-2, ..., 0\),执行:
    a. 计算增益矩阵:\(K_k = (R + B^T P_{k+1} B)^{-1} B^T P_{k+1} A\)
    b. 更新价值矩阵:\(P_k = Q + A^T P_{k+1} A - A^T P_{k+1} B K_k\)。(这就是DARE(3)的实现形式)

  3. 正向求解控制:从初始状态 \(x_0\) 开始,对于 \(k = 0, 1, ..., N-1\),执行:
    a. 应用最优控制:\(u_k^* = -K_k x_k\)
    b. 状态更新:\(x_{k+1} = A x_k + B u_k^*\)

最终结果:我们得到了有限时域LQR问题的完整求解方案。核心是逆向递推求解差分黎卡提方程(3)以获得一系列时变的最优状态反馈增益 \(K_k\),然后正向应用这些增益来生成最优控制序列。当 \(N \to \infty\) 且系统可控可观时,\(P_k\) 会收敛到一个稳态解 \(P_\infty\),即无限时域LQR问题的解。

《线性二次型调节器(LQR)的有限时域最优控制求解与离散时间黎卡提方程》 题目描述: 线性二次型调节器(LQR)是控制理论中一种经典的确定性最优控制算法。假设我们有一个线性离散时间动态系统,和一个包含状态与控制输入的二次型代价函数。题目要求:在已知系统动态、初始状态和有限控制时域(N步)的条件下, 从最终时刻开始,逆向递推 求解最优控制输入序列,并推导出关键的离散时间差分黎卡提方程(Discrete-time Difference Riccati Equation, DARE)。 循序渐进解题过程: 步骤1:问题建模 系统模型 :我们有一个离散时间的线性时不变系统: \( x_ {k+1} = A x_ k + B u_ k \) 其中,\( x_ k \in \mathbb{R}^n \) 是k时刻的状态向量,\( u_ k \in \mathbb{R}^m \) 是k时刻的控制输入向量。A是状态转移矩阵,B是控制输入矩阵。假设 \( x_ 0 \) 已知。 代价函数 :我们希望最小化一个有限时域(从k=0到k=N-1)的二次型代价函数: \( J = x_ N^T Q_ f x_ N + \sum_ {k=0}^{N-1} (x_ k^T Q x_ k + u_ k^T R u_ k) \) 其中: \( Q_ f \) 是终端状态代价矩阵,通常为半正定矩阵(\( Q_ f \succeq 0 \)),惩罚最终状态与目标(通常为零点)的偏差。 \( Q \) 是状态代价矩阵,也是半正定的(\( Q \succeq 0 \)),惩罚状态偏离期望轨迹。 \( R \) 是控制代价矩阵,是正定矩阵(\( R \succ 0 \)),惩罚过大的控制输入,保证问题良好定义。 目标 :找到最优控制序列 \( \{u_ 0^ , u_ 1^ , ..., u_ {N-1}^* \} \),使得总代价 \( J \) 最小。 步骤2:引入动态规划与最优性原理 动态规划思想 :这是一个多阶段决策问题,可以用动态规划(从最后一步向前逆向求解)来高效解决。最优性原理(Principle of Optimality)表明,从任一中间状态出发到终点的最优控制策略,与从该状态开始的全局最优策略相同。 定义价值函数 :定义“价值函数”或“成本函数” \( V_ k(x_ k) \) 为:从k时刻的某个状态 \( x_ k \) 开始,执行最优控制序列直到结束时所需的最小剩余代价。 步骤3:逆向递推与贝尔曼方程 我们从最终时刻 \( N \) 开始,逐步向前推到初始时刻 \( 0 \)。 基始情况(k=N) : 在最终时刻 \( N \),已经没有未来的控制输入。根据代价函数定义,剩余代价就是终端代价: \( V_ N(x_ N) = x_ N^T Q_ f x_ N \)。 逆向递推(k=N-1, N-2, ..., 0) : 根据动态规划的最优性原理,在k时刻,我们选择当前控制输入 \( u_ k \) 时,不仅要考虑当前控制带来的瞬时代价,还要考虑从下一状态 \( x_ {k+1} \) 出发的最优未来代价。这由贝尔曼方程描述: \( V_ k(x_ k) = \min_ {u_ k} [ x_ k^T Q x_ k + u_ k^T R u_ k + V_ {k+1}(x_ {k+1}) ] \)。 代入系统方程 \( x_ {k+1} = A x_ k + B u_ k \): \( V_ k(x_ k) = \min_ {u_ k} [ x_ k^T Q x_ k + u_ k^T R u_ k + V_ {k+1}(A x_ k + B u_ k) ] \)。 (1) 步骤4:猜测价值函数形式并求解 二次型猜测 :我们观察到终端代价 \( V_ N(x_ N) = x_ N^T Q_ f x_ N \) 是状态向量的二次型。可以合理猜测,在任意时刻k,最优价值函数 \( V_ k(x_ k) \) 也具有二次型形式: \( V_ k(x_ k) = x_ k^T P_ k x_ k \),其中 \( P_ k \) 是一个对称的半正定矩阵(称为“价值矩阵”或“成本矩阵”)。 代入并求解 :将猜测形式 \( V_ k(x_ k) = x_ k^T P_ k x_ k \) 和 \( V_ {k+1}(x_ {k+1}) = x_ {k+1}^T P_ {k+1} x_ {k+1} \) 代入贝尔曼方程(1): \( x_ k^T P_ k x_ k = \min_ {u_ k} [ x_ k^T Q x_ k + u_ k^T R u_ k + (A x_ k + B u_ k)^T P_ {k+1} (A x_ k + B u_ k) ] \)。 展开右边 : \( x_ k^T P_ k x_ k = \min_ {u_ k} [ x_ k^T Q x_ k + u_ k^T R u_ k + x_ k^T A^T P_ {k+1} A x_ k + 2 x_ k^T A^T P_ {k+1} B u_ k + u_ k^T B^T P_ {k+1} B u_ k ] \)。 合并关于 \( u_ k \) 的项: \( = \min_ {u_ k} [ x_ k^T (Q + A^T P_ {k+1} A) x_ k + u_ k^T (R + B^T P_ {k+1} B) u_ k + 2 x_ k^T A^T P_ {k+1} B u_ k ] \)。 对 \( u_ k \) 求最小化 : 这是一个关于 \( u_ k \) 的无约束凸二次优化问题。对 \( u_ k \) 求偏导并令其为零: \( \frac{\partial}{\partial u_ k} [ ... ] = 2 (R + B^T P_ {k+1} B) u_ k + 2 B^T P_ {k+1} A x_ k = 0 \)。 解得最优控制输入 \( u_ k^* \): \( u_ k^* = - (R + B^T P_ {k+1} B)^{-1} B^T P_ {k+1} A x_ k \)。 (2) 定义增益矩阵 \( K_ k = (R + B^T P_ {k+1} B)^{-1} B^T P_ {k+1} A \),则 \( u_ k^* = -K_ k x_ k \)。这是一个 状态反馈控制器 :最优控制输入是当前状态的线性函数。 步骤5:推导离散时间差分黎卡提方程(DARE) 代入最优解 :将最优控制输入 \( u_ k^* \) 的表达式(2)代回 \( V_ k(x_ k) \) 的展开式。为了得到 \( P_ k \) 的表达式,我们将(2)代入 \( u_ k \) 的原始表达式中,并注意等式对任意 \( x_ k \) 都成立。经过代数运算(可以先将 \( u_ k^* \) 表达式代入,然后将 \( V_ k(x_ k) \) 表达式左边 \( x_ k^T P_ k x_ k \) 与右边展开式中 \( x_ k^T [ ... ] x_ k \) 的系数矩阵对应相等),可以得到: 最终方程 : \( P_ k = Q + A^T P_ {k+1} A - A^T P_ {k+1} B (R + B^T P_ {k+1} B)^{-1} B^T P_ {k+1} A \)。 (3) 这个方程就是 离散时间差分黎卡提方程 。它给出了价值矩阵 \( P_ k \) 从后向前(从k+1到k)的逆向递推关系。 递推的初始条件 :从基始情况 \( V_ N(x_ N) = x_ N^T Q_ f x_ N \) 可知,\( P_ N = Q_ f \)。 步骤6:算法总结与求解流程 初始化 :给定系统矩阵 \( A, B \),代价矩阵 \( Q, R, Q_ f \),以及时域长度 \( N \)。令 \( P_ N = Q_ f \)。 逆向迭代 :对于 \( k = N-1, N-2, ..., 0 \),执行: a. 计算增益矩阵:\( K_ k = (R + B^T P_ {k+1} B)^{-1} B^T P_ {k+1} A \)。 b. 更新价值矩阵:\( P_ k = Q + A^T P_ {k+1} A - A^T P_ {k+1} B K_ k \)。(这就是DARE(3)的实现形式) 正向求解控制 :从初始状态 \( x_ 0 \) 开始,对于 \( k = 0, 1, ..., N-1 \),执行: a. 应用最优控制:\( u_ k^* = -K_ k x_ k \)。 b. 状态更新:\( x_ {k+1} = A x_ k + B u_ k^* \)。 最终结果 :我们得到了有限时域LQR问题的完整求解方案。核心是逆向递推求解差分黎卡提方程(3)以获得一系列时变的最优状态反馈增益 \( K_ k \),然后正向应用这些增益来生成最优控制序列。当 \( N \to \infty \) 且系统可控可观时,\( P_ k \) 会收敛到一个稳态解 \( P_ \infty \),即无限时域LQR问题的解。