假设状态变量为$x_k \in \mathbb{R}^n,k=0,1,\cdots,N$,控制变量为$u_k \in \mathbb{R}^p,k=0,1,\cdots,N-1$,
目标函数(含有$x,u$的线性项和$x,u$的交叉项) $$ \begin{equation} \label{eq:J} J=\sum_{k=0}^{N-1}{l_k\left( x_k,u_k \right)}+l_N\left( x_N \right) \end{equation} $$ 其中, $$ \begin{equation} \label{eq:l_k} l_k\left( x,u \right) =\frac{1}{2}x^\mathrm{T} Q_k x + x^\mathrm{T} S_k u + \frac{1}{2}u^\mathrm{T} R_k u + x^\mathrm{T}q_k + u^\mathrm{T} r_k \end{equation} $$
离散的状态空间方程(含有常数项) $$ \begin{equation} \label{eq:state_space_equatoin} x_{k+1} = A_k x_k + B_k u_k + b_k, \quad k=0,1,\cdots,N-1 \end{equation} $$ 那么一般形式的离散有限时间LQR问题可以表达为 $$ \begin{equation} \begin{aligned} \label{eq:general_discrete_finite_time_LQR_problem} J=&\sum_{k=0}^{N-1}{l_k\left( x_k,u_k \right)}+l_N\left( x_N \right) \ s.t.\quad& x_{k+1} = A_k x_k + B_k u_k + b_k, \quad k=0,1,\cdots,N-1 \end{aligned} \end{equation} $$
目标函数$\eqref{eq:J}$可以展开为 $$ \begin{equation} \label{eq:J_detail} J = \sum_{k=0}^{N-1} \left( \frac{1}{2}x_k^\mathrm{T} Q_k x_k
- x_k^\mathrm{T} S_k u_k
- \frac{1}{2}u_k^\mathrm{T} R_k u_k + x_k^\mathrm{T}q_k
- u_k^\mathrm{T} r_k \right)
- \frac{1}{2}x_N^\mathrm{T} Q_N x_N + x_N^\mathrm{T}q_N \end{equation} $$ 一般形式的离散有限时间LQR问题可以展开写为 $$ \begin{equation} \label{eq:general_discrete_finite_time_LQR_problem_detail} \begin{aligned} J=& \sum_{k=0}^{N-1} \left( \frac{1}{2}x_k^\mathrm{T} Q_k x_k
- x_k^\mathrm{T} S_k u_k
- \frac{1}{2}u_k^\mathrm{T} R_k u_k + x_k^\mathrm{T}q_k
- u_k^\mathrm{T} r_k \right)
- \frac{1}{2}x_N^\mathrm{T} Q_N x_N + x_N^\mathrm{T}q_N\ s.t.\quad & x_{k+1} = A_k x_k + B_k u_k + b_k, \quad k=0,1,\cdots,N-1 \end{aligned} \end{equation} $$
首先定义值函数 $$ \begin{equation} \label{eq:Value_func} V_k\left(x \right) = \frac{1}{2}x^\mathrm{T} P_k x + x^\mathrm{T}p_k + c_k \end{equation} $$ 下面利用动态规划法从后向前求解
对于最后一步,目标函数$\eqref{eq:J}$就是 $$ \begin{equation} \label{eq:J_N_to_N} J_{N\rightarrow N}=l_N\left( x_N \right) = \frac{1}{2}x_{N}^\mathrm{T} Q_{N} x_{N} + x_{N}^\mathrm{T}q_{N} \end{equation} $$ 这时,目标函数中不含有$u$,因此$l_N\left( x_N \right)$就是这时的最小代价。
所以值函数$V_N(x_N)$为 $$ V_N(x_N)= l_N\left( x_N \right) $$ 对比$\eqref{eq:l_N}$和$\eqref{eq:Value_func}$,可知值函数$V_N(x_N)$的系数分别为 $$ \begin{equation} \label{eq:V_N_params} P_N = Q_N, \quad p_N=q_N, \quad c_N = 0 \end{equation} $$ 对于第$k$步到第$k+1$步,假设第$k+1$步的值函数$V_{k+1}(x)$已经求出,那么第$k$步到第$k+1$步的目标函数为 $$ \begin{align} \label{eq:J_k_to_k_plus_1} J_{k\rightarrow k+1} =& l_k\left( x_k \right)+ V_{k+1}(x_{k+1}) \nonumber \
=& l_k\left( x_k \right)+ V_{k+1}(A_k x_{k}+B_k u_{k} + b_k) \nonumber \
=& \left( \frac{1}{2}x_k^\mathrm{T} Q_k x_k
- x_k^\mathrm{T} S_k u_k
- \frac{1}{2}u_k^\mathrm{T} R_k u_k + x_k^\mathrm{T}q_k
- u_k^\mathrm{T} r_k \right) \nonumber \ & + \left[\frac{1}{2}(A_k x_{k}+B_k u_{k}+ b_k)^\mathrm{T} P_{k+1} (A_k x_{k}+B_k u_{k} + b_k)
- (A_k x_{k}+B_k u_{k} + b_k)^\mathrm{T}p_{k+1}
- c_{k+1}\right] \nonumber \
=& \frac{1}{2}x_k^\mathrm{T} (Q_k + A_k^\mathrm{T}P_{k+1}A_k) x_k
- x_k^\mathrm{T}(S_k + A_k^\mathrm{T}P_{k+1}B_k) u_k
- \frac{1}{2}u_k^\mathrm{T} (R_k + B_k^\mathrm{T}P_{k+1}B_k) u_k \nonumber \ & + x_k^\mathrm{T}\left( q_k + A_k^\mathrm{T}P_{k+1}b_k+ A_k^\mathrm{T} p_{k+1} \right)
- u_k^\mathrm{T}\left( r_k + B_{k}^\mathrm{T}P_{k+1}b_{k} + B_{k}^\mathrm{T}p_{k+1} \right)
- const \end{align} $$ 记 $$ \begin{align} \label{eq:tilde_Q_in_J_k_to_k_plus_1} \tilde{Q}k =& Q_k + A_k^\mathrm{T}P{k+1}A_k \
\label{eq:tilde_S_in_J_k_to_k_plus_1} \tilde{S}k =& S_k + A_k^\mathrm{T}P{k+1}B_k \
\label{eq:tilde_R_in_J_k_to_k_plus_1} \tilde{R}k =& R_k + B_k^\mathrm{T}P{k+1}B_k \
\label{eq:tilde_q_in_J_k_to_k_plus_1} \tilde{q}k =& q_k + A_k^\mathrm{T}P{k+1}b_k+ A_k^\mathrm{T} p_{k+1} \
\label{eq:tilde_r_in_J_k_to_k_plus_1}
\tilde{r}k =& r_k + B{k}^\mathrm{T}P_{k+1}b_{k} + B_{k}^\mathrm{T}p_{k+1}
\end{align}
$$
将$\eqref{eq:tilde_Q_in_J_k_to_k_plus_1} \sim \eqref{eq:tilde_r_in_J_k_to_k_plus_1}$代入
- x_k^\mathrm{T} \tilde{S}_k u_k
- \frac{1}{2}u_k^\mathrm{T} \tilde{R}_k u_k
- x_k^\mathrm{T} \tilde{q}_k
- u_k^\mathrm{T} \tilde{r}_k
- const \end{equation} $$ 极小化目标函数 $$ \min_u J_{k\rightarrow k+1} $$ 考虑到目标函数是个连续可微的凸函数,因此对$u_k$求偏导数,并令其为0 $$ \frac{\partial J_{k\rightarrow k+1}}{\partial u_k} = 0 $$ 得到 $$ \begin{equation} \label{eq:partial_u_k_for_J_k_to_k_plus_1} \tilde{R}_k u_k
- \tilde{S}_k^\mathrm{T} x_k
- \tilde{r}_k =0 \end{equation} $$ 移项得到最优控制 $$ \begin{equation} \label{eq:u_k_simple} u_k^* = - \tilde{R}_k^{-1} \tilde{S}_k^\mathrm{T} x_k
- \tilde{R}k^{-1} \tilde{r}k \end{equation} $$ 将$\eqref{eq:tilde_S_in_J_k_to_k_plus_1},\eqref{eq:tilde_R_in_J_k_to_k_plus_1},\eqref{eq:tilde_r_in_J_k_to_k_plus_1}$ 代入 $\eqref{eq:u_k_simple}$,得到 $$ \begin{align} \label{eq:u_k_star} u_k^* =& - \left(R_k + B_k^\mathrm{T}P{k+1}B_k \right)^{-1} \left( S_k + A_k^\mathrm{T}P{k+1}B_k \right)^\mathrm{T} x_k \nonumber \ & - \left(R_k + B_k^\mathrm{T}P_{k+1}B_k \right)^{-1} \left(r_k + B_{k}^\mathrm{T}P_{k+1}b_{k} +B_{k}^\mathrm{T}p_{k+1} \right) \nonumber \
=& - \left(R_k + B_k^\mathrm{T}P_{k+1}B_k \right)^{-1} \left( S_k^\mathrm{T} + B_k^\mathrm{T}P_{k+1}A_k \right) x_k \nonumber \ & - \left(R_k + B_k^\mathrm{T}P_{k+1}B_k \right)^{-1} \left(r_k + B_{k}^\mathrm{T}P_{k+1}b_{k}
- B_{k}^\mathrm{T}p_{k+1} \right) \end{align} $$
记 $$ \begin{align} \label{eq:K_k_define} {K}k =& \left(R_k + B_k^\mathrm{T}P{k+1}B_k \right)^{-1} \left( S_k^\mathrm{T} + B_k^\mathrm{T}P_{k+1}A_k \right) \
\label{eq:d_k_define} d_k =& \left(R_k + B_k^\mathrm{T}P_{k+1}B_k \right)^{-1} \left(r_k + B_{k}^\mathrm{T}P_{k+1}b_{k}
- B_{k}^\mathrm{T}p_{k+1} \right) \ \end{align} $$ 那么$\eqref{eq:u_k_star}$可以写为标准形式 $$ \begin{equation} \label{eq:u_k_normal_type} u_k^* = - K_k x_k
- d_k \end{equation} $$ 将$\eqref{eq:u_k_simple}$代入回$\eqref{eq:J_k_to_k+1_simple}$,得 $$ \begin{align} \label{eq:J_k_to_k_plus_1_only_has_x_k} J_{k\rightarrow k+1} =& \frac{1}{2}x_k^\mathrm{T} \tilde{Q}_k x_k
- x_k^\mathrm{T} \tilde{S}_k \left( - \tilde{R}_k^{-1} \tilde{S}_k^\mathrm{T} x_k
- \tilde{R}_k^{-1} \tilde{r}_k \right)
- \frac{1}{2} \left( - \tilde{R}_k^{-1} \tilde{S}_k^\mathrm{T} x_k
- \tilde{R}_k^{-1} \tilde{r}_k \right)^\mathrm{T} \tilde{R}_k \left( - \tilde{R}_k^{-1} \tilde{S}_k^\mathrm{T} x_k
- \tilde{R}_k^{-1} \tilde{r}_k \right) \nonumber \ &+ x_k^\mathrm{T} \tilde{q}_k
- \left( - \tilde{R}_k^{-1} \tilde{S}_k^\mathrm{T} x_k - \tilde{R}_k^{-1} \tilde{r}_k \right)^\mathrm{T} \tilde{r}_k
- const \nonumber \
=& \frac{1}{2}x_k^\mathrm{T}\left( \tilde{Q}_k - \tilde{S}_k \tilde{R}_k^{-1} \tilde{S}_k^\mathrm{T} \right) x_k
- x_k^\mathrm{T} \left( \tilde{q}_k - \tilde{S}_k \tilde{R}_k^{-1}\tilde{r}_k \right)
- const
\end{align}
$$
对比值函数$\eqref{eq:Value_func}$ 与
$\eqref{eq:J_k_to_k_plus_1_only_has_x_k}$ ,可知 $$ \begin{align} \label{eq:P_k} P_k =& \tilde{Q}_k - \tilde{S}_k \tilde{R}_k^{-1} \tilde{S}_k^\mathrm{T} \
\label{eq:p_k}
p_k =& \tilde{q}_k - \tilde{S}_k \tilde{R}_k^{-1}\tilde{r}_k
\end{align}
$$
将$\eqref{eq:tilde_S_in_J_k_to_k_plus_1},\eqref{eq:tilde_R_in_J_k_to_k_plus_1},\eqref{eq:tilde_r_in_J_k_to_k_plus_1}$ 代入$\eqref{eq:P_k}$和
- A_k^\mathrm{T}P_{k+1}A_k
- \left( S_k + A_k^\mathrm{T}P_{k+1}B_k \right) \left(R_k + B_k^\mathrm{T}P_{k+1}B_k \right)^{-1} \left( S_k + A_k^\mathrm{T}P_{k+1}B_k \right)^\mathrm{T} \
\label{eq:p_k_detail} p_k =& q_k
- A_k^\mathrm{T} P_{k+1}b_k
- A_k^\mathrm{T} p_{k+1}
- \left( S_k + A_k^\mathrm{T}P_{k+1}B_k \right) \left(R_k + B_k^\mathrm{T}P_{k+1}B_k \right)^{-1} \left( r_k + B_{k}^\mathrm{T}P_{k+1}b_{k} B_{k}^\mathrm{T}p_{k+1} \right) \end{align} $$
将$\eqref{eq:K_k_define},\eqref{eq:d_k_define}$代入$\eqref{eq:P_k_detail},\eqref{eq:p_k_detail}$,可得更加简洁的形式 $$ \begin{align} \label{eq:P_k_with_K_k} P_k =& Q_k
- A_k^\mathrm{T}P_{k+1}A_k
- \left( S_k + A_k^\mathrm{T}P_{k+1}B_k \right) K_k \
\label{eq:p_k_with_d_k} p_k =& q_k
- A_k^\mathrm{T}P_{k+1}b_k
- A_k^\mathrm{T} p_{k+1}
- \left( S_k + A_k^\mathrm{T}P_{k+1}B_k \right) d_k \end{align} $$ 由此,第$k$步的值函数$V_{k}(x)$已经求出 $$ \begin{equation} \label{eq:Value_func_k} V_{k}(x) = \frac{1}{2}x^\mathrm{T} P_k x + x^\mathrm{T}p_k + const \end{equation} $$
注意:由于$c_k$其实在求解过程中不需要用到,因此没有求出其显示表达式,只是用const代替
然后,进入第$k-1$步到第$k$步的求解,直至求解到第$0$步。
给定$A_k,B_k,b_k,R_k,S_k,r_k (k=1,\cdots,N-1)$和
初始化
反向从$k=N-1$到$0$递推:
- 计算$H_k$
- 计算$K_k,d_k$,见$\eqref{eq:K_k_define}
$,$ \eqref{eq:d_k_define} $ - 计算$P_k,p_k$,见$\eqref{eq:P_k_detail}$,$\eqref{eq:p_k_detail}$
正向计算控制律: $$ u_k^*= - K_k x_k - d_k $$
将原来的状态变量为$x_k \in \mathbb{R}^n,k=0,1,\cdots,N$,控制变量为$u_k \in \mathbb{R}^p,k=0,1,\cdots,N-1$分别写成大向量的形式 $$ \begin{equation} \label{eq:big_X_U_define} X = \begin{bmatrix} x_0 \ x_1 \ \vdots \ x_{N-1} \ x_N \end{bmatrix} \in \mathbb{R}^{(N+1) n \times 1} ,\quad U = \begin{bmatrix} u_0 \ u_1 \ \vdots \ u_{N-1} \end{bmatrix} \in \mathbb{R}^{N p \times 1} \end{equation} $$
记 $$ \begin{equation} \label{eq:big_Q_define} \tilde{Q} = \begin{bmatrix} Q_0 & & & & \ & Q_1 & & & \ & & \ddots && \ & & & Q_{N-1} & \ & & & & Q_N \end{bmatrix} \succeq 0 ,\quad \tilde{Q} \in \mathbb{R}^{(N+1) n \times (N+1) n} \end{equation} $$
利用$\eqref{eq:big_X_U_define}$,$\eqref{eq:big_Q_define}$~$\eqref{eq:big_r_define}$,可以将目标函数$\eqref{eq:J_detail}$改写为 $$ \begin{equation} \label{eq:J_big_matrix} J = \frac{1}{2} X^\mathrm{T}\tilde{Q}X + X^\mathrm{T}\tilde{S} U + \frac{1}{2} U^\mathrm{T}\tilde{R}U + X^\mathrm{T}\tilde{q} + U^\mathrm{T}\tilde{r} \end{equation} $$
根据状态空间方程$\eqref{eq:state_space_equatoin}$: $$ x_{k+1} = A_k x_k + B_k u_k + b_k $$ 可以从$x_0$递推到$x_1,x_2,\cdots,x_N$ $$ \begin{align} \label{eq:x_0} x_0 =& I x_0 \
\label{eq:x_1} x_{1} =& A_0 x_0 + B_0 u_0 + b_0 \
\label{eq:x_2} x_{2} =& A_{1} x_{1} + B_{1} u_{1} + b_{1} \nonumber \ =& A_{1} A_0 x_0 + A_{1} B_0 u_0 + B_{1} u_{1} + A_{1}b_0 + b_{1} \
\label{eq:x_3} x_{3} =& A_{2} x_{2} + B_{2} u_{2} + b_{2} \nonumber \ =& A_{2} A_{1} A_0 x_0 + A_{2} A_{1} B_0 u_0 + A_{2} B_{1} u_{1} +B_{2} u_{2} + A_{2}A_{1}b_0 + A_{2} b_{1}+ b_{2} \ \vdots & \nonumber \
\label{eq:x_N} x_{N} =& \left(\prod_{i=0}^{N-1} A_i \right) x_0 + \sum_{i=0}^{N-1} \left(\prod_{j=i+1}^{N-1} A_j \right) B_i u_i + \sum_{i=0}^{N-1} \left(\prod_{j=i+1}^{N-1} A_j \right) b_i
\end{align} $$
Note
注意:第一条式子$x_0 = I x_0$是为了凑大矩阵,便于后面交叉项的计算而加入的。下面就会看到它的妙用。
记 $$ \begin{equation} \label{eq:big_A_define} \tilde{A} = \begin{bmatrix} I \ A_0 \ A_1 A_0 \ A_2 A_1 A_0 \ \vdots \ \prod_{i=0}^{N-1} A_i \end{bmatrix} ,\quad \tilde{A} \in \mathbb{R}^{(N+1) n \times n} \end{equation} $$
利用$\eqref{eq:big_X_U_define},\eqref{eq:big_A_define},\eqref{eq:big_B_define},\eqref{eq:big_b_define}$,可以将从$x_0$递推到$x_1,x_2,\cdots,x_N$的公式$\eqref{eq:x_0}$ ~
在实际问题中,$x_0$是已知的初始状态,而$x_1,\cdots,x_N$都是未知的,故$X$是未知。所以将$\eqref{eq:state_space_equation_big_matrix_type}$代入目标函数$\eqref{eq:J_big_matrix}$,可以消去未知的$X$,只剩下未知数$U$ $$ \begin{align} \label{eq:J_big_matrix_type_remove_X} J =& \frac{1}{2} \left( \tilde{A}x_0 + \tilde{B}U+\tilde{b} \right)^\mathrm{T}\tilde{Q}\left( \tilde{A}x_0 + \tilde{B}U+\tilde{b} \right)
- \left( \tilde{A}x_0 + \tilde{B}U+\tilde{b} \right)^\mathrm{T}\tilde{S} U
- \frac{1}{2} U^\mathrm{T}\tilde{R}U \nonumber \ & + \left( \tilde{A}x_0 + \tilde{B}U+\tilde{b} \right)^\mathrm{T}\tilde{q}
- U^\mathrm{T}\tilde{r} \nonumber \
=& \frac{1}{2} U^\mathrm{T} \left(\tilde{R}+\tilde{B}^\mathrm{T}\tilde{Q}\tilde{B} + \tilde{B}^\mathrm{T}\tilde{S} + \tilde{S}^\mathrm{T}\tilde{B} \right) U
- U^\mathrm{T} \left[ \tilde{B}^\mathrm{T}\tilde{Q} \left(\tilde{A}x_0 +\tilde{b} \right)+ \tilde{B}^\mathrm{T}\tilde{q} + \tilde{r} + \tilde{S}^\mathrm{T} \left(\tilde{A}x_0 +\tilde{b} \right) \right] \nonumber \ &+ \frac{1}{2} \left(\tilde{A}x_0 +\tilde{b} \right)^\mathrm{T} \tilde{Q} \left(\tilde{A}x_0 +\tilde{b} \right)
- \left(\tilde{A}x_0 +\tilde{b} \right)^\mathrm{T}\tilde{q} \end{align} $$ 记 $$ \begin{equation} \label{eq:H_in_J} H = \tilde{R}+\tilde{B}^\mathrm{T}\tilde{Q}\tilde{B} + \tilde{B}^\mathrm{T}\tilde{S} + \tilde{S}^\mathrm{T}\tilde{B} \end{equation} $$
$$ \begin{align} \label{eq:g_in_J} g =& \tilde{B}^\mathrm{T}\tilde{Q} \left(\tilde{A}x_0 +\tilde{b} \right)
- \tilde{B}^\mathrm{T}\tilde{q}
- \tilde{r}
- \tilde{S}^\mathrm{T} \left(\tilde{A}x_0 +\tilde{b} \right) \nonumber \
=& \left( \tilde{B}^\mathrm{T}\tilde{Q} + \tilde{S}^\mathrm{T} \right) \tilde{A} x_0
- \left( \tilde{B}^\mathrm{T}\tilde{Q} + \tilde{S}^\mathrm{T} \right) \tilde{b} +\tilde{B}^\mathrm{T}\tilde{q}
- \tilde{r} \end{align} $$
代入$\eqref{eq:J_big_matrix_type_remove_X}$,得到 $$ J=\frac{1}{2} U^\mathrm{T} H U
- U^\mathrm{T} g
- const $$ 对$U$求偏导,并令其为0 $$ \frac{\partial J}{\partial U} = 0 $$ 即 $$ H U + g = 0 $$ 由于$\tilde{R} \succ 0, \tilde{Q} \succeq 0$,所以$H \succ 0$,说明$H$可逆。所以可以求出$U$为 $$ U= -H^{-1}g $$ $u_0^$即为$U$的第一项 $$ u_0^ = \begin{bmatrix}1 & 0 & \cdots & 0 \end{bmatrix}U $$
对于一般形式的LQR问题$\eqref{eq:general_discrete_finite_time_LQR_problem_detail}$(为了方便查阅,将它在此处再写一次) $$ J= \sum_{k=0}^{N-1} \left( \frac{1}{2}x_k^\mathrm{T} Q_k x_k
- x_k^\mathrm{T} S_k u_k
- \frac{1}{2}u_k^\mathrm{T} R_k u_k + x_k^\mathrm{T}q_k
- u_k^\mathrm{T} r_k \right)
- \frac{1}{2}x_N^\mathrm{T} Q_N x_N + x_N^\mathrm{T}q_N\
s.t.\quad x_{k+1} = A_k x_k + B_k u_k + b_k, \quad k=0,1,\cdots,N-1 $$
通过引入拉格朗日乘子$\lambda_k \in \mathbb{R}^n,\quad k=1,2,\cdots,N$,写出其拉格朗日函数 $$ \begin{equation} \label{eq:Lagrange_func_of_J} \begin{aligned} L(x,u,\lambda) = & \sum_{k=0}^{N-1} \left[ \frac{1}{2}x_k^\mathrm{T} Q_k x_k
- x_k^\mathrm{T} S_k u_k
- \frac{1}{2}u_k^\mathrm{T} R_k u_k + x_k^\mathrm{T}q_k
- u_k^\mathrm{T} r_k + \lambda_{k+1}^\mathrm{T} \left( A_k x_k + B_k u_k + b_k - x_{k+1} \right) \right]\
& + \frac{1}{2}x_N^\mathrm{T} Q_N x_N + x_N^\mathrm{T}q_N
\end{aligned}
\end{equation}
$$
对$u_k$求偏导$k=0,1,\cdots,N-1$,并令其为0
$$
\frac{\partial L(x,u,\lambda)}{\partial u_k} = 0
$$
即
$$
S_k^\mathrm{T}x_k + R_k u_k + r_k + B_k^\mathrm{T}\lambda_{k+1}=0
$$
移项得
$$
\begin{equation}
\label{eq:KKT_u_k}
u_k = -R_k^{-1}S_k^\mathrm{T}x_k - R_k^{-1}\left( r_k + B_k^\mathrm{T}\lambda_{k+1} \right)
\end{equation}
$$
对$x_k$求偏导$k=0,1,\cdots,N-1$,并令其为0
$$
\frac{\partial L(x,u,\lambda)}{\partial x_k} = 0
$$
即
$$
Q_k x_k + S_k u_k +q_k + A_k^\mathrm{T}\lambda_{k+1}-\lambda_{k}=0
$$
移项得
$$
\begin{equation}
\label{eq:KKT_lambda_k}
\lambda_{k}=Q_k x_k + S_k u_k +q_k + A_k^\mathrm{T}\lambda_{k+1}
\end{equation}
$$
对$x_N$求偏导,并令其为0
$$
\frac{\partial L(x,u,\lambda)}{\partial x_N} = 0
$$
即
$$
Q_N x_N+ q_N -\lambda_N =0
$$
移项得
$$
\begin{equation}
\label{eq:KKT_lambda_N}
\lambda_N =Q_N x_N+ q_N
\end{equation}
$$
$\eqref{eq:KKT_lambda_k}$ 和$\eqref{eq:KKT_lambda_N}$称为协态方程,其中$\eqref{eq:KKT_lambda_N}$是协态方程的终止条件。
综上,可以得到KKT条件
KKT条件由状态空间方程,协态方程,和控制最优性条件构成。
The KKT conditions lead to the state space equation, the costate equation, and the optimality condition.
$$ \begin{align} \text{Primal feasible:}& \quad x_{k+1} = A_k x_k + B_k u_k + b_k, \quad k=0,1,\cdots,N-1\
\text{Dual feasible:}& \quad \text{not exists} \nonumber \
\text{Complementarity:}& \quad \text{not exists} \nonumber \
\text{Stationarity:}& \quad \begin{cases} u_k = -R_k^{-1}S_k^\mathrm{T}x_k - R_k^{-1}\left( r_k + B_k^\mathrm{T}\lambda_{k+1} \right), \quad k=0,1,\cdots,N-1\
\lambda_{k}=Q_k x_k + S_k u_k +q_k + A_k^\mathrm{T}\lambda_{k+1}, \quad k=0,1,\cdots,N-1 \
\lambda_N =Q_N x_N+ q_N. \end{cases} \end{align} $$
不难发现,KKT条件中全部都是等式,因此求解$u_k\quad(k=0,1,\cdots,N-1)$就相当于解方程,可以直接利用消元法求解。
当$k=N-1$时,$\eqref{eq:KKT_u_k}$就是 $$ u_{N-1} = -R_{N-1}^{-1}S_{N-1}^\mathrm{T}x_{N-1} - R_{N-1}^{-1}\left( r_{N-1} + B_{N-1}^\mathrm{T}\lambda_{N} \right) $$ 代入$\eqref{eq:KKT_lambda_N}$的$\lambda_N$ ,得 $$ u_{N-1} = -R_{N-1}^{-1}S_{N-1}^\mathrm{T}x_{N-1} - R_{N-1}^{-1}\left[ r_{N-1} + B_{N-1}^\mathrm{T} \left(Q_N x_N+ q_N \right) \right] $$ 代入$k=N-1$时的状态空间方程 $$ x_N = A_{N-1}x_{N-1}+ B_{N-1}u_{N-1}+b_{N-1} $$ 得到 $$ \begin{equation} \label{eq:KKT_u_N_minus_1_substitute_lambda_N_and_x_N} u_{N-1} = -R_{N-1}^{-1}S_{N-1}^\mathrm{T}x_{N-1} - R_{N-1}^{-1} { r_{N-1} + B_{N-1}^\mathrm{T} \left[ Q_N \left( A_{N-1}x_{N-1}+ B_{N-1}u_{N-1}+b_{N-1} \right) + q_N \right] } \end{equation} $$ 整理得 $$ \begin{equation} \label{eq:KKT_u_N_minus_1_detail} \begin{aligned} u_{N-1} = & -\left( R_{N-1}+B_{N-1}^\mathrm{T}Q_N B_{N-1} \right)^{-1} \left( S_{N-1}^\mathrm{T} + B_{N-1}^\mathrm{T} Q_N A_{N-1} \right) x_{N-1} \ & - \left( R_{N-1}+B_{N-1}^\mathrm{T}Q_N B_{N-1} \right)^{-1} \left( r_{N-1}+ B_{N-1}^\mathrm{T} Q_N b_{N-1}+B_{N-1}^\mathrm{T} Q_N \right) \end{aligned} \end{equation} $$ 记 $$ \begin{equation} \label{eq:KKT_K_N_minus_1} K_{N-1} = \left( R_{N-1}+B_{N-1}^\mathrm{T}Q_N B_{N-1} \right)^{-1} \left( S_{N-1}^\mathrm{T} + B_{N-1}^\mathrm{T} Q_N A_{N-1} \right) \end{equation} $$
则 $$ \begin{equation} \label{eq:KKT_u_N_minus_1_normal_type} u_{N-1} = - K_{N-1} x_{N-1} - d_{N-1} \end{equation} $$ 不难发现,这里得到的结果与动态规划求出来的结果一致。
当$k=N-1$时,$\eqref{eq:KKT_lambda_k}$就是 $$ \begin{equation} \label{eq:KKT_lambda_N_minus_1} \lambda_{N-1}=Q_{N-1} x_{N-1} + S_{N-1} u_{N-1} +q_{N-1} + A_{N-1}^\mathrm{T}\lambda_{N} \end{equation} $$ 代入$\eqref{eq:KKT_lambda_N}$的$\lambda_N$ ,得 $$ \lambda_{N-1}=Q_{N-1} x_{N-1} + S_{N-1} u_{N-1} +q_{N-1} + A_{N-1}^\mathrm{T}\left(Q_N x_N+ q_N \right) $$ 再代入$\eqref{eq:KKT_u_N_minus_1_normal_type}$中的$u_{N-1}$和$k=N-1$时的状态空间方程 $$ x_N = A_{N-1}x_{N-1}+ B_{N-1}u_{N-1}+b_{N-1} $$ 得到 $$ \begin{aligned} \lambda_{N-1} =& Q_{N-1} x_{N-1} + S_{N-1} \left( - K_{N-1} x_{N-1} - d_{N-1}\right) \ &+ q_{N-1} + A_{N-1}^\mathrm{T}\left[Q_N (A_{N-1}x_{N-1}+ B_{N-1}u_{N-1}+b_{N-1})+ q_N \right]
\end{aligned} $$ 整理得 $$ \begin{equation} \begin{aligned} \label{eq:KKT_lambda_N_minus_1_substitude_lambda_N_and_u_N_minus_1} \lambda_{N-1} =& \left[ Q_{N-1} + A_{N-1}^\mathrm{T}Q_N A_{N-1} - \left( S_{N-1}+ A_{N-1}^\mathrm{T}Q_N B_{N-1} \right)K_{N-1}\right] x_{N-1} \ &+q_{N-1}+A_{N-1}^\mathrm{T}q_N + A_{N-1}^\mathrm{T}Q_N b_{N-1}
- \left(S_{N-1}+ A_{N-1}^\mathrm{T}Q_N B_{N-1} \right) d_{N-1} \end{aligned} \end{equation} $$
对比$\eqref{eq:KKT_lambda_N}$和$\eqref{eq:KKT_lambda_N_minus_1_substitude_lambda_N_and_u_N_minus_1}$可以发现,$\lambda_k$可以写成关于$x_{k}$的仿射形式(即关于$x_{k}$的线性项加一个常数项),将线性项系数即为$P_k$,常数项系数记为$p_k$,则
同理,$\eqref{eq:KKT_lambda_N_minus_1_substitude_lambda_N_and_u_N_minus_1}$可以写成 $$ \begin{align} \label{eq:KKT_P_N_minus_1_detail} P_{N-1} =& Q_{N-1}
- A_{N-1} ^\mathrm{T}P_{N}A_{N-1}
- \left( S_{N-1} + A_{N-1} ^\mathrm{T}Q_{N}B_{N-1} \right) K_{N-1} \
\label{eq:KKT_p_N_minus_1_detail} p_{N-1} =& q_{N-1}
- A_{N-1} ^\mathrm{T}Q_{N}b_{N-1}
- A_{N-1} ^\mathrm{T} q_{N}
- \left( S_{N-1} + A_{N-1} ^\mathrm{T}Q_{N}B_{N-1} \right) d_{N-1} \end{align} $$
像这样交替求解$u_k,\lambda_{k}$,,可以求出$u_{N-2},\lambda_{N-2},\cdots,u_1,\lambda_1,u_0$
Caution
注意:$\lambda_{k}$只有$k=1,2,\cdots,N$这$N$项,并没有$k=0$项!
下面,我们直接对$k$进行推导。
由于前面已发现,$\lambda_k$可以写成关于$x_{k}$的仿射形式。所以假设协态方程为 $$ \lambda_k = P_k x_k + p_k,\quad k= 1,\cdots,N $$ 也可以写为 $$ \begin{equation} \label{eq:KKT_lambda_k_plus_1_normal_type} \lambda_{k+1} = P_{k+1} x_{k+1} + p_{k+1},\quad k= 0,\cdots,N-1 \end{equation} $$ 代入$\eqref{eq:KKT_u_k}$,可以得到 $$ u_k = -R_k^{-1}S_k^\mathrm{T}x_k - R_k^{-1}\left[ r_k + B_k^\mathrm{T}\left( P_{k+1} x_{k+1} + p_{k+1}\right) \right] ,\quad k= 0,\cdots,N-1 $$ 代入状态空间方程 $$ \begin{equation} \label{eq:KKT_x_k_plus_1_normal_type} x_{k+1} = A_k x_k + B_k u_k + b_k, \quad k=0,1,\cdots,N-1 \end{equation} $$ 可以得到 $$ u_k = -R_k^{-1}S_k^\mathrm{T}x_k - R_k^{-1} { r_k + B_k^\mathrm{T}\left[ P_{k+1} \left( A_k x_k + B_k u_k + b_k \right)+ p_{k+1} \right] } , \quad k=0,1,\cdots,N-1 $$ 整理得 $$ \begin{equation} \label{eq:KKT_u_k_detail} \begin{aligned} u_{k} = & -\left( R_{k}+B_{k}^\mathrm{T}P_{k+1} B_{k} \right)^{-1} \left( S_{k}^\mathrm{T} + B_{k}^\mathrm{T} P_{k+1} A_{k} \right) x_{k} \ & - \left( R_{k}+B_{k}^\mathrm{T}P_{k+1} B_{k} \right)^{-1} \left( r_{k}+ B_{k}^\mathrm{T} P_{k+1} b_{k}+B_{k}^\mathrm{T} p_{k+1} \right) \end{aligned}\quad , \quad k=0,1,\cdots,N-1 \end{equation} $$ 记 $$ \begin{equation} \label{eq:KKT_K_k_detail} K_{k} = \left( R_{k}+B_{k}^\mathrm{T}P_{k+1} B_{k} \right)^{-1} \left( S_{k}^\mathrm{T} + B_{k}^\mathrm{T} P_{k+1} A_{k} \right) , \quad k=0,1,\cdots,N-1 \end{equation} $$
代回$\eqref{eq:KKT_u_k_detail}$,得 $$ \begin{equation} \label{eq:KKT_u_k_normal_type} u_{k} = -K_k x_{k} -d_k , \quad k=0,1,\cdots,N-1 \end{equation} $$ 将$\eqref{eq:KKT_u_k_normal_type}$,$\eqref{eq:KKT_lambda_k_plus_1_normal_type}$和$\eqref{eq:KKT_x_k_plus_1_normal_type}$代入$\eqref{eq:KKT_lambda_k}$,得到 $$ \lambda_{k}=Q_k x_k + S_k \left( -K_k x_{k} -d_k \right) +q_k + A_k^\mathrm{T}\left[P_{k+1} \left(A_k x_k + B_k u_k + b_k \right) + p_{k+1}\right] , \quad k=1,2,\cdots,N-1 $$ 整理得 $$ \begin{equation} \label{eq:KKT_lambda_k_substitude} \begin{aligned} \lambda_{k} =& \left[ Q_{k} + A_{k}^\mathrm{T}P_{k+1} A_{k} - \left( S_{k}+ A_{k}^\mathrm{T}P_{k+1} B_{k} \right)K_{k}\right] x_{k} \ &+q_{k}+A_{k}^\mathrm{T}p_{k+1} + A_{k}^\mathrm{T}P_{k+1} b_{k}
- \left(S_{k}+ A_{k}^\mathrm{T}P_{k+1} B_{k} \right) d_{k} \end{aligned} \quad,\quad k=1,2,\cdots,N-1 \end{equation} $$ 记 $$ \begin{equation} \label{eq:KKT_P_k_detail} P_{k} = Q_{k} + A_{k}^\mathrm{T}P_{k+1} A_{k} - \left( S_{k}+ A_{k}^\mathrm{T}P_{k+1} B_{k} \right)K_{k} ,\quad k=1,2,\cdots,N-1 \end{equation} $$
$$ \begin{equation} \label{eq:KKT_p_k_detail} p_{k} = q_{k}+A_{k}^\mathrm{T}p_{k+1} + A_{k}^\mathrm{T}P_{k+1} b_{k}
- \left(S_{k}+ A_{k}^\mathrm{T}P_{k+1} B_{k} \right) d_{k} ,\quad k=1,2,\cdots,N-1 \end{equation} $$
代回$\eqref{eq:KKT_lambda_k_substitude}$,又可以得到$\eqref{eq:KKT_lambda_k_normal_type}$的形式 $$ \lambda_{k} = P_k x_{k} +p_k ,\quad k=1,2,\cdots,N-1 $$ 像这样交替求解$u_k,\lambda_{k}$,直至求出$u_0$
利用KKT条件中的等式,从后向前,即从$k=N$到$0$反推,每次通过互相代入消元,交替求解$u_k,\lambda_{k}$,直至求出$u_0$
求解顺序依次为:$\lambda_{N} \rightarrow u_{N-1} \rightarrow \lambda_{N-1} \rightarrow \cdots \rightarrow u_1 \rightarrow \lambda_{1} \rightarrow u_0$
控制量 $$ \begin{equation} \label{eq:KKT_summary_u_k_normal_type} u_{k} = -K_k x_{k} -d_k , \quad k=0,1,\cdots,N-1 \end{equation} $$ 其中, $$ \begin{equation} \label{eq:KKT_summary_K_k_detail} K_{k} = \left( R_{k}+B_{k}^\mathrm{T}P_{k+1} B_{k} \right)^{-1} \left( S_{k}^\mathrm{T} + B_{k}^\mathrm{T} P_{k+1} A_{k} \right) , \quad k=0,1,\cdots,N-1 \end{equation} $$
协态方程 $$ \begin{equation} \label{eq:KKT_summary_lambda_k_normal_type} \lambda_{k} = P_k x_{k} +p_k ,\quad k=1,2,\cdots,N \end{equation} $$ 其中, $$ \begin{equation} \label{eq:KKT_summary_P_k_detail} P_{k} = Q_{k} + A_{k}^\mathrm{T}P_{k+1} A_{k} - \left( S_{k}+ A_{k}^\mathrm{T}P_{k+1} B_{k} \right)K_{k} ,\quad k=1,2,\cdots,N-1 \end{equation} $$
$$ \begin{equation} \label{eq:KKT_summary_p_k_detail} p_{k} = q_{k}+A_{k}^\mathrm{T}p_{k+1} + A_{k}^\mathrm{T}P_{k+1} b_{k}
- \left(S_{k}+ A_{k}^\mathrm{T}P_{k+1} B_{k} \right) d_{k} ,\quad k=1,2,\cdots,N-1 \end{equation} $$
边界条件为 $$ \begin{equation} \label{eq:KKT_summary_P_N_and_p_N} P_N = Q_N,\quad p_N=q_N \end{equation} $$
块KKT系统本质上跟前文的“KKT条件推导"是相同的,都是利用了KKT条件。只是”块KKT系统“将所有变量和参数写成大向量或大矩阵,从矩阵的视角来看待整个推导过程。
对于一般形式的LQR问题$\eqref{eq:general_discrete_finite_time_LQR_problem_detail}$(为了方便查阅,将它在此处再写一次) $$ J= \sum_{k=0}^{N-1} \left( \frac{1}{2}x_k^\mathrm{T} Q_k x_k
- x_k^\mathrm{T} S_k u_k
- \frac{1}{2}u_k^\mathrm{T} R_k u_k + x_k^\mathrm{T}q_k
- u_k^\mathrm{T} r_k \right)
- \frac{1}{2}x_N^\mathrm{T} Q_N x_N + x_N^\mathrm{T}q_N\
s.t.\quad x_{k+1} = A_k x_k + B_k u_k + b_k, \quad k=0,1,\cdots,N-1 $$ 下面分别将目标函数和约束条件写成大矩阵形式
首先将所有变量写成一个大向量 $$ \begin{equation} \label{eq:block_KKT_big_z} z=\begin{bmatrix} X\U \end{bmatrix} = \begin{bmatrix} x_0 \ x_1 \ \vdots \ x_{N-1} \x_N \ u_0 \ u_1 \ \vdots \u_{N-1} \end{bmatrix} ,\quad z \in \mathbb{R}^{[(N+1)n+Np] \times 1} \end{equation} $$ 然后将所有权重矩阵写成大矩阵形式 $$ \begin{equation} \label{eq:block_KKT_big_Q_define} \tilde{Q} = \begin{bmatrix} Q_0 & & & & \ & Q_1 & & & \ & & \ddots && \ & & & Q_{N-1} & \ & & & & Q_N \end{bmatrix} \succeq 0 ,\quad \tilde{Q} \in \mathbb{R}^{(N+1) n \times (N+1) n} \end{equation} $$
记 $$ \begin{equation} \label{eq:block_KKT_H_define} H = \begin{bmatrix} \tilde{Q} & \tilde{S} \ \tilde{S}^\mathrm{T} &\tilde{R} \end{bmatrix} ,\quad H \in \mathbb{R}^{[(N+1)n+Np] \times [(N+1)n+Np]} \end{equation} $$ 将线性项的系数也写成大向量形式 $$ \begin{equation} \label{eq:block_KKT_big_q_define} \tilde{q} = \begin{bmatrix} q_0\ q_1 \ \vdots \ q_{N-1} \ q_{N} \end{bmatrix} ,\quad \tilde{q} \in \mathbb{R}^{(N+1) n \times 1} \end{equation} $$
记 $$ \begin{equation} \label{eq:block_KKT_f_define} f = \begin{bmatrix} \tilde{q} \ \tilde{r} \end{bmatrix}
=\begin{bmatrix} q_0\ q_1 \ \vdots \ q_{N-1} \ q_{N} \ r_0\ r_1 \ \vdots \ r_{N-1} \ \end{bmatrix} ,\quad f \in \mathbb{R}^{[(N+1)n+Np] \times 1} \end{equation} $$ 所以一般形式的LQR问题$\eqref{eq:general_discrete_finite_time_LQR_problem_detail}$的目标函数可写为 $$ \begin{equation} \label{eq:block_KKT_J_with_big_matrix} J = \frac{1}{2} z^\mathrm{T} H z + f^\mathrm{T}z \end{equation} $$
约束条件 $$ x_{k+1} = A_k x_k + B_k u_k + b_k, \quad k=0,1,\cdots,N-1 $$ 可以改写为 $$
- A_k x_k + x_{k+1} - B_k u_k = b_k, \quad k=0,1,\cdots,N-1 $$ 将这$N$个约束方程都写出来: $$ \begin{equation} \label{eq:block_KKT_N_state_space} \begin{alignedat}{5}
- A_0 x_0 ;&+ I x_1 & & &;&-; B_0 u_0 & & &;&=; b_0 \ &- A_1 x_1 ;&+ I x_2 & &;& &-; B_1 u_1 & &;&=; b_1 \ & &\ddots &\qquad \ddots &;& & & \ddots & &; ; \vdots \ & & &- A_{N-1} x_{N-1} ;&+ I x_N & & & &-; B_{N-1} u_{N-1} &=; b_{N-1} \end{alignedat} \end{equation} $$ 记 $$ \begin{equation} \label{eq:block_KKT_G} G = \begin{bmatrix} -A_0 & I & 0 & \cdots & 0 & -B_0 & 0 & \cdots & 0 \ 0 & -A_1 & I & \cdots & 0 & 0 & -B_1 & \cdots & 0 \ \vdots & \vdots & \ddots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots \ 0 & 0 & \cdots & A_{N-1} & I & 0 & 0 & \cdots & -B_{N-1} \end{bmatrix} ,\quad G \in \mathbb{R}^{Nn \times [(N+1)n+Np]} \end{equation} $$
则$\eqref{eq:block_KKT_N_state_space}$可以写成矩阵形式 $$ \begin{equation} \label{eq:block_KKT_constrains_big_type} G z = \beta \end{equation}、 $$
综上,可以将原来的LQR问题写成大矩阵形式 $$ \begin{equation} \label{eq:block_KKT_LQR_problem_big_matrix_type} \begin{aligned} J =& \frac{1}{2} z^\mathrm{T} H z + f^\mathrm{T}z \ s.t.& \quad G z = \beta \end{aligned} \end{equation}、 $$
引入拉格朗日乘子 $$ \begin{equation} \label{eq:block_KKT_lambda} \lambda = \begin{bmatrix} \lambda_1 \ \lambda_2 \\vdots \ \lambda_{N} \end{bmatrix} ,\quad \lambda \in \mathbb{R}^{Nn \times 1} \end{equation} $$ 可以写出拉格朗日函数 $$ \begin{equation} \label{eq:block_KKT_lagrange_func} L\left( z, \lambda \right) = \frac{1}{2} z^\mathrm{T} H z + f^\mathrm{T}z
- \lambda^\mathrm{T}(G z -\beta) \end{equation} $$ 对$z$求梯度,并令其为0 $$ \nabla_{z} L\left( z, \lambda \right) =0 $$ 即 $$ \begin{equation} \label{eq:block_KKT_gradient_z} H z + f + \lambda^\mathrm{T} G =0 \end{equation} $$ 所以KKT条件为 $$ \begin{align} \label{eq:block_KKT_condition} \text{Primal feasible:}& \quad G z = \beta \
\text{Dual feasible:}& \quad \text{not exists} \nonumber \
\text{Complementarity:}& \quad \text{not exists} \nonumber \
\text{Stationarity:}& \quad H z + f + \lambda^\mathrm{T} G =0 \end{align} $$ 这个KKT条件也可以进一步写成矩阵形式 $$ \begin{equation} \label{eq:block_KKT_condition_big_matrix_type} \begin{bmatrix} H & G^\mathrm{T} \ G & 0 \end{bmatrix} \begin{bmatrix} z \ \lambda \end{bmatrix} =\begin{bmatrix} -f \ \beta \end{bmatrix} \end{equation} $$ 对这个矩阵方程进行求解,即可得到最优控制量。
进一步,将$\eqref{eq:block_KKT_condition_big_matrix_type}$展开 $$ \begin{equation} \label{eq:block_KKT_condition_detail} \begin{bmatrix} Q_0 & 0 & \cdots & 0 & 0 & S_0 & 0 & \cdots & 0 & -A_0 & 0 & \cdots & 0 \ 0 & Q_1 & \cdots & 0 & 0 & 0 & S_1 & \cdots & 0 & I & -A_1 & \cdots & 0 \ \vdots & \vdots & \ddots & \vdots &\vdots &\vdots & \vdots& \ddots & \vdots & \vdots & \vdots & \ddots & \vdots \ 0 & 0 & \cdots & Q_{N-1} & 0 & 0 & 0 &\cdots & S_{N-1} & 0 & 0 &\cdots & -A_{N-1} \ 0 & 0 & \cdots & 0 & Q_N & 0 & 0 &\cdots & 0 & 0 & 0 &\cdots & 0 \ S_0 & 0 & \cdots & 0 & 0 & R_0 & 0 & \cdots & 0 & -B_0 & 0 & \cdots & 0\ 0 & S_1 & \cdots & 0 & 0 & 0 & R_1 & \cdots & 0 & 0 & -B_1 & \cdots & 0\ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots\ 0 & 0 & \cdots & S_{N-1} & 0 & 0 & 0 & \cdots & 0 & 0 & 0 & \cdots & -B_{N-1}\ -A_0 & I & \cdots & 0 & 0 & -B_0 & 0 & \cdots & 0 & 0 & 0 & \cdots & 0 \ 0 & -A_1 & \cdots & 0 & 0 & 0 & -B_1 & \cdots & 0 & 0 & 0 & \cdots & 0 \ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots \ 0 & 0 & \cdots & A_{N-1} & 0 & 0 & 0 & \cdots & -B_{N-1} & 0 & 0 & \cdots & 0 \end{bmatrix} \begin{bmatrix} x_0 \ x_1 \ \vdots \ x_{N-1} \ x_{N} \ u_0 \ u_1 \ \vdots \ u_{N-1} \ \lambda_{1} \ \lambda_{2} \ \vdots \ \lambda_{N} \end{bmatrix} =\begin{bmatrix} q_0\ q_1 \ \vdots \ q_{N-1} \ q_{N} \
r_0\ r_1 \ \vdots \ r_{N-1} \
b_0 \ b_1 \ \vdots \b_{N-1}
\end{bmatrix}
\end{equation}
$$
一眼看过去,上面的矩阵非常凌乱,但是如果我们将变量$\begin{bmatrix}z & \lambda \end{bmatrix}^\mathrm{T}$按时间排序为:
$$
x_0,u_0, \lambda_1,; x_1,u_1, \lambda_2,; \cdots ,x_{N-1},u_{N-1}, \lambda_N, ; x_N
$$
\end{bmatrix}
=\begin{bmatrix}
q_0\
r_0\
b_0 \
q_1 \
r_1 \
b_1 \
\vdots \
b_{N-2}\
q_{N-1} \
r_{N-1} \
b_{N-1} \
q_{N}
\end{bmatrix}
\end{equation}
$$
从这个角度来看,求解LQR问题其实就是求解$\eqref{eq:block_KKT_condition_sorted_by_time}$这个矩阵方程。而从下往上消元的过程,其实就对应着前文的“KKT条件求解”的过程。