线性二次调节器(LQR)算法的原理与最优控制求解过程
字数 1652 2025-11-29 16:17:11
线性二次调节器(LQR)算法的原理与最优控制求解过程
题目描述
线性二次调节器(Linear Quadratic Regulator, LQR)是一种经典的最优控制算法,用于解决线性系统的状态调节问题。其目标是设计一个状态反馈控制器,使得系统在满足线性动态约束的同时,最小化一个二次型代价函数(包含状态偏差和控制能量的加权和)。例如,在无人机平衡或机器人轨迹跟踪中,LQR可通过计算最优反馈增益,使系统快速稳定到目标状态。
解题过程
-
问题建模
- 系统动态:假设离散时间线性系统的状态方程为
\(x_{t+1} = A x_t + B u_t\)
其中 \(x_t\) 是状态向量,\(u_t\) 是控制输入,\(A\) 和 \(B\) 是系统矩阵。 - 代价函数:定义无限时间域的二次代价函数
\(J = \sum_{t=0}^{\infty} \left( x_t^\top Q x_t + u_t^\top R u_t \right)\)
其中 \(Q\) 是半正定状态权重矩阵(惩罚状态偏差),\(R\) 是正定控制权重矩阵(惩罚控制量大小)。
- 系统动态:假设离散时间线性系统的状态方程为
-
贝尔曼方程与值函数假设
- 目标:找到控制策略 \(u_t = -K x_t\)(反馈增益矩阵 \(K\)),最小化 \(J\)。
- 根据动态规划,最优值函数 \(V^*(x_t)\) 满足贝尔曼方程:
\(V^*(x_t) = \min_{u_t} \left( x_t^\top Q x_t + u_t^\top R u_t + V^*(x_{t+1}) \right)\)。 - 假设值函数为二次型:\(V^*(x_t) = x_t^\top P x_t\),其中 \(P\) 是待求的半正定矩阵。
-
推导代数Riccati方程
- 将值函数假设和系统动态代入贝尔曼方程:
\(x_t^\top P x_t = \min_{u_t} \left( x_t^\top Q x_t + u_t^\top R u_t + (A x_t + B u_t)^\top P (A x_t + B u_t) \right)\)。 - 对右侧关于 \(u_t\) 求导并令导数为零,得最优控制律:
\(u_t^* = -(R + B^\top P B)^{-1} B^\top P A x_t\)。 - 代入原式后化简,得到离散时间代数Riccati方程:
\(P = Q + A^\top P A - A^\top P B (R + B^\top P B)^{-1} B^\top P A\)。
- 将值函数假设和系统动态代入贝尔曼方程:
-
求解Riccati方程
- 通过迭代法(如值迭代)或直接数值解法(如Schur分解)求解 \(P\)。
- 值迭代:初始化 \(P_0 = 0\),迭代更新
\(P_{k+1} = Q + A^\top P_k A - A^\top P_k B (R + B^\top P_k B)^{-1} B^\top P_k A\),直至收敛。
- 值迭代:初始化 \(P_0 = 0\),迭代更新
- 得到 \(P\) 后,反馈增益矩阵为
\(K = (R + B^\top P B)^{-1} B^\top P A\)。
- 通过迭代法(如值迭代)或直接数值解法(如Schur分解)求解 \(P\)。
-
闭环控制与稳定性
- 应用控制律 \(u_t = -K x_t\),闭环系统动态变为 \(x_{t+1} = (A - B K) x_t\)。
- 若 \((A, B)\) 可控且 \((A, Q^{1/2})\) 可观测,则 \(A - B K\) 的特征值均在单位圆内,保证系统稳定。
关键点
- LQR将控制问题转化为Riccati方程的求解,其解通过动态规划原理保证全局最优。
- 权重矩阵 \(Q\) 和 \(R\) 需根据实际需求调整,例如增大 \(Q\) 强调状态收敛速度,增大 \(R\) 限制控制能量。