《线性二次型调节器(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问题的解。