模型预测控制MPC(2)—— 无约束线性MPC

  • 前文:模型预测控制MPC(1)—— 基础概念
  • 参考:模型预测控制(2022春)
  • 本文从偏控制的角度介绍无约束线性MPC方法, x , u , J x,u,J x,u,J 分别代表状态、动作和代价函数

文章目录

  • 1. 问题定义
    • 1.1 多步预测公式
    • 1.2 代价函数
  • 2. 求解优化问题
  • 3. 系统稳定性
    • 3.1 有限预测时域
    • 3.2 无限预测时域
  • 4. 无约束线性 MPC 和 LQR

1. 问题定义

  • 考虑一个离散线性时不变多输入输出系统(离散指时间离散,线性指系统动态可由线性方程描述,时不变指系统动态不随时间变化),环境转移如下
    x ( k + 1 ) = A x ( k ) + B u ( k ) , x ∈ R n , u ∈ R p x(k+1) = \pmb{A}x(k) + \pmb{B}u(k), \quad x\in \mathbb{R}^n, u\in \mathbb{R}^p x(k+1)=Ax(k)+Bu(k),xRn,uRp 由于是时不变系统,要求 A , B \pmb{A,B} A,B 是稳定的(stabilizable)常数矩阵,现在假设不存在对状态或动作的约束
  • 定义 x ( i ∣ k ) , u ( i ∣ k ) x(i|k), u(i|k) x(ik),u(ik) 表示从时刻 k k k 开始后第 i i i 步的预测状态和动作。特别地,有 x ( 0 ∣ k ) = x ( k ) , u ( 0 ∣ k ) = u ( k ) x(0|k)=x(k), u(0|k)=u(k) x(0∣k)=x(k),u(0∣k)=u(k)

1.1 多步预测公式

  • 在系统已知的情况下,可以如下进行多步预测
    x ( 1 ∣ k ) = A x ( 0 ∣ k ) + B u ( 0 ∣ k ) x ( 2 ∣ k ) = A x ( 1 ∣ k ) + B u ( 1 ∣ k ) = A [ A x ( 0 ∣ k ) + B u ( 0 ∣ k ) ] + B ( 1 ∣ k ) = A 2 x ( 0 ∣ k ) + A B u ( 0 ∣ k ) + B u ( 1 ∣ k ) ⋮ ⋮ ⋮ x ( i ∣ k ) = A x ( i − 1 ∣ k ) + B u ( i − 1 ∣ k ) = ⋯ = A i x ( 0 ∣ k ) + A i − 1 B u ( 0 ∣ k ) + A i − 2 B u ( 1 ∣ k ) + ⋯ + B u ( i − 1 ∣ k ) \begin{aligned} x(1 \mid k) & =A x(0 \mid k)+B u(0 \mid k) \\ x(2 \mid k) & =A x(1 \mid k)+B u(1 \mid k)=A[A x(0 \mid k)+B u(0 \mid k)]+B(1 \mid k) \\ & =A^{2} x(0 \mid k)+A B u(0 \mid k)+B u(1 \mid k) \\ & \quad \vdots \quad \vdots \quad \vdots \\ x(i \mid k) & =A x(i-1 \mid k)+B u(i-1 \mid k)=\cdots \\ & =A^{i} x(0 \mid k)+A^{i-1} B u(0 \mid k)+A^{i-2} B u(1 \mid k)+\cdots+B u(i-1 \mid k) \end{aligned} x(1k)x(2k)x(ik)=Ax(0k)+Bu(0k)=Ax(1k)+Bu(1k)=A[Ax(0k)+Bu(0k)]+B(1k)=A2x(0k)+ABu(0k)+Bu(1k)=Ax(i1k)+Bu(i1k)==Aix(0k)+Ai1Bu(0k)+Ai2Bu(1k)++Bu(i1k) 设预测时间步数为 N N N,多步预测结果可以写成更紧凑的矩阵形式
    X ( k ) = F x ( k ) + Φ U ( k ) where X ( k ) ≜ [ x ( 1 ∣ k ) x ( 2 ∣ k ) ⋮ x ( N ∣ k ) ] U ( k ) ≜ [ u ( 0 ∣ k ) u ( 1 ∣ k ) ⋮ u ( N − 1 ∣ k ) ] F = [ A A 2 ⋮ A N ] Φ = [ B 0 A B B 0 ⋮ A N − 1 B A N − 2 B ⋯ B ] X(k) = Fx(k) + \Phi U(k)\quad \text{where} \\ \space \\ X(k) \triangleq\left[\begin{array}{c} x(1 \mid k) \\ x(2 \mid k) \\ \vdots \\ x(N \mid k) \end{array}\right] \quad U(k) \triangleq\left[\begin{array}{r} u(0 \mid k) \\ u(1 \mid k) \\ \vdots \\ u(N-1 \mid k) \end{array}\right] \\\space \\ F=\left[\begin{array}{l} A \\ A^{2} \\ \vdots \\ A^{N} \end{array}\right] \quad \Phi=\left[\begin{array}{lllll} B & 0 & & \\ A B & B & 0 & \\ \vdots & & & \\ A^{N-1} B & A^{N-2} B & \cdots & B \end{array}\right] X(k)=Fx(k)+ΦU(k)where X(k) x(1k)x(2k)x(Nk) U(k) u(0k)u(1k)u(N1k)  F= AA2AN Φ= BABAN1B0BAN2B0B 其中 X X X U U U 分别为状态序列和动作序列, F , Φ F,\Phi F,Φ 是由环境模型确定的常数矩阵

1.2 代价函数

  • 首先把控制系统的示意图绘制如下
    在这里插入图片描述

    在每个时刻 k k k,由控制器产生动作 u ( k ) u(k) u(k) 输入被控系统,观测到系统转移至状态 x ( k ) x(k) x(k),在下一时刻计算其与参考值(目标) c ( k ) c(k) c(k) 的误差 e ( 1 ∣ k ) e(1|k) e(1∣k) 作为反馈。控制目标通常有两个

    1. 最优追踪效果:最小化控制过程的总误差,即最小化 mse 损失 ∑ i = 1 N e 2 ( i ∣ k ) \sum_{i=1}^N e^2(i|k) i=1Ne2(ik) c ≡ 0 c\equiv 0 c0 时为 ∑ i = 1 N x 2 ( i ∣ k ) \sum_{i=1}^N x^2(i|k) i=1Nx2(ik)
    2. 最小控制能耗:最小化控制过程的总输入,即最小化 mse 损失 ∑ i = 1 N u 2 ( i − 1 ∣ k ) \sum_{i=1}^N u^2(i-1|k) i=1Nu2(i1∣k)
  • 通常使用两个可调节的参数 q , r q,r q,r 权衡两个目标损失,从而构造代价函数。单输入输出系统下形如
    J ( k ) = ∑ i = 1 N q x 2 ( i ∣ k ) + r u 2 ( i − 1 ∣ k ) J(k) = \sum_{i=1}^N qx^2(i|k) + ru^2(i-1|k) J(k)=i=1Nqx2(ik)+ru2(i1∣k) 多输入输出系统下形如(这里使用某种二范数作为 mse 损失的广义形式),是两个二次型之和
    J ( k ) = ∑ i = 1 N ∥ x ( i ∣ k ) ∥ Q 2 + ∥ u ( i − 1 ∣ k ) ∥ R 2 = X T ( k ) Q X ( k ) + U ( k ) T R U ( k ) where Q = [ Q Q ⋱ Q ] R = [ R R ⋱ R ] \begin{array}{l} J(k)=\sum_{i=1}^{N}\|x(i \mid k)\|_{Q}^{2}+\|u(i-1 \mid k)\|_{R}^{2}=X^{T}(k) \mathscr{Q} X(k)+U(k)^{T} \mathscr{R} U(k) \quad \text{where} \\\space\\ \mathscr{Q}=\left[\begin{array}{llll} Q & & & \\ & Q & & \\ & & \ddots & \\ & & & Q \end{array}\right] \quad \mathscr{R}=\left[\begin{array}{llll} R & & & \\ & R & & \\ & & \ddots & \\ & & & R \end{array}\right] \end{array} J(k)=i=1Nx(ik)Q2+u(i1k)R2=XT(k)QX(k)+U(k)TRU(k)where Q= QQQ R= RRR

  • 由 1.1 节有 X ( k ) = F x ( k ) + Φ U ( k ) X(k)=F x(k)+\Phi U(k) X(k)=Fx(k)+ΦU(k),代入有
    J ( k ) = ( F x ( k ) + Φ U ( k ) ) T Q ( F x ( k ) + Φ U ( k ) ) + U T ( k ) R U ( k ) = x T ( k ) F T Q F x ( k ) + 2 x T ( k ) F T Q Φ U ( k ) + U T ( k ) ( Φ T Q Φ + R ) U ( k ) \begin{aligned} J(k) & =(F x(k)+\Phi U(k))^{T} \mathscr{Q}(F x(k)+\Phi U(k))+U^{T}(k) \mathscr{R} U(k) \\ & =x^{T}(k) F^{T} \mathscr{Q} F x(k)+2 x^{T}(k) F^{T} \mathscr{Q} \Phi U(k)+U^{T}(k)\left(\Phi^{T} \mathscr{Q} \Phi+\mathscr{R}\right) U(k) \end{aligned} J(k)=(Fx(k)+ΦU(k))TQ(Fx(k)+ΦU(k))+UT(k)RU(k)=xT(k)FTQFx(k)+2xT(k)FTQΦU(k)+UT(k)(ΦTQΦ+R)U(k)

2. 求解优化问题

  • 我们在 1.1 节给出了环境模型已知情况下多步预测结果的数学表达式,然后基于它在 1.2 节给出了每一时刻 k k k 要求解的优化问题表达式,本节考虑如何求解这个优化问题

  • 首先回顾代价函数表达式
    J ( k ) = x T ( k ) F T Q F x ( k ) + 2 x T ( k ) F T Q Φ U ( k ) + U T ( k ) ( Φ T Q Φ + R ) U ( k ) J(k) =x^{T}(k) F^{T} \mathscr{Q} F x(k)+2 x^{T}(k) F^{T} \mathscr{Q} \Phi U(k)+U^{T}(k)\left(\Phi^{T} \mathscr{Q} \Phi+\mathscr{R}\right) U(k) J(k)=xT(k)FTQFx(k)+2xT(k)FTQΦU(k)+UT(k)(ΦTQΦ+R)U(k) 注意式子中 x x x 是测量得到的反馈, F , Q , R F, \mathscr{Q}, \mathscr{R} F,Q,R 都是常数矩阵,我们只能通过优化动作序列 U U U 来优化 J J J。令 J J J 关于 U U U 的梯度为 0,求解最优动作序列 U ∗ U^* U
    ∇ U ∣ U = U ∗ = ∂ J ∂ U ∣ U = U ∗ = 0 2 x ( k ) T F T Q Φ + 2 U ( k ) T ( Φ T Q Φ + R ) ∣ U ( k ) = U ∗ = 0 U ∗ ( k ) = − ( Φ T Q Φ + R ) − 1 Φ T Q F x ( k ) \begin{aligned} &\left.\nabla_{U}\right|_{U=U^{*}}=\left.\frac{\partial J}{\partial U}\right|_{U=U^{*}}=0 \\ \space \\ &2 x(k)^{T} F^{T} \mathscr{Q} \Phi+\left.2 U(k)^{T}\left(\Phi^{T} \mathscr{Q} \Phi+\mathscr{R}\right)\right|_{U(k)=U^{*}}=0 \\ \space \\ &U^{*}(k)=-\left(\Phi^{T} \mathscr{Q} \Phi+\mathscr{R}\right)^{-1} \Phi^{T} \mathscr{Q} F x(k) \end{aligned}   UU=U=UJ U=U=02x(k)TFTQΦ+2U(k)T(ΦTQΦ+R) U(k)=U=0U(k)=(ΦTQΦ+R)1ΦTQFx(k)
    注意这里要求 ( Φ T Q Φ + R ) \left(\Phi^{T} \mathscr{Q} \Phi+\mathscr{R}\right) (ΦTQΦ+R) 可逆,有两种情况

    1. R \mathscr{R} R 正定, Q \mathscr{Q} Q 半正定

      此时 Φ T Q Φ \Phi^{T} \mathscr{Q} \Phi ΦTQΦ 半正定,它和正定矩阵之和一定正定,正定矩阵可逆

    2. R \mathscr{R} R 正定或半正定, Q \mathscr{Q} Q 正定且 Φ \Phi Φ 是满秩的

      此时 Φ T Q Φ \Phi^{T} \mathscr{Q} \Phi ΦTQΦ 正定,它和正定或半正定矩阵之和一定正定,正定矩阵可逆。 Φ \Phi Φ 的形式第1节已经给出,当 A , B A,B A,B 完全可控时它满秩

    最后,利用一个方块单位阵把最优动作序列 U ∗ ( k ) U^{*}(k) U(k) 中的第一个动作 u ∗ ( k ) u^*(k) u(k) 取出来,就得到 k k k 时刻需要执行的最优动作
    u ∗ ( k ) = − [ I p × p 0 ⋯ 0 ] ( Φ T Q Φ + R ) − 1 Φ T Q F x ( k ) = − K m p c x ( k ) u^{*}(k)=-\left[\begin{array}{llll} I_{p \times p} & 0 & \cdots & 0 \end{array}\right]\left(\Phi^{T} \mathscr{Q} \Phi+\mathscr{R}\right)^{-1} \Phi^{T} \mathscr{Q} F x(k)=-K_{m p c} x(k) u(k)=[Ip×p00](ΦTQΦ+R)1ΦTQFx(k)=Kmpcx(k)

    下面给出一个计算最优动作的示例。注意到无约束线性MPC不需要每步在线解优化问题,直接代入以上解析式计算即可
    在这里插入图片描述

  • 我们直接算出了 U ∗ ( k ) = arg min ⁡ U J ( k ) U^*(k) = \argmin_{U} J(k) U(k)=argminUJ(k) 的解析解。观察 u ∗ ( k ) u^{*}(k) u(k) 的表达式,其中 Φ , x , F , Q , R \Phi, x, F, \mathscr{Q}, \mathscr{R} Φ,x,F,Q,R 都是常值矩阵,因此 K m p c K_{m p c} Kmpc 也是常值矩阵, u ∗ ( k ) u^{*}(k) u(k) 就是当前状态 x ( k ) x(k) x(k) 的一个线性反馈,我们可以利用这一点验证系统的稳定性

3. 系统稳定性

3.1 有限预测时域

  • 把第 2 节得到的最优动 u ∗ ( k ) = − K m p c x ( k ) u^{*}(k) = -K_{m p c} x(k) u(k)=Kmpcx(k) 作带回到环境模型 x ( k + 1 ) = A x ( k ) + B u ( k ) x(k+1) = \pmb{A}x(k) + \pmb{B}u(k) x(k+1)=Ax(k)+Bu(k),得到每步都执行最优动作下的环境转移为
    x ( k + 1 ) = ( A − B K m p c ) x ( k ) x(k+1) = (\pmb{A} - \pmb{B}\pmb{K}_{m p c})x(k) x(k+1)=(ABKmpc)x(k) 这是一个离散的线性闭环系统,线性系统的稳定性判别准则如下
    在这里插入图片描述
    如图所示,我们只需要检查 A − B K m p c \pmb{A} - \pmb{B}\pmb{K}_{m p c} ABKmpc 的特征值是否在单位圆内即可

    前提是要求 A , B \pmb{A} ,\pmb{B} A,B 是稳定的,这样 K m p c \pmb{K}_{m p c} Kmpc 才存在

  • 对于本文考虑的无约束线性 MPC 而言,使代价函数的最优的动作策略无法保证系统稳定

    系统的稳定性是指系统在受到外部扰动或初始条件变化时,系统的状态不会无限制地增长或衰减,而是会在某个有限的范围内保持。换句话说,稳定的闭环系统会在一定的条件下保持一种平衡状态,而不会发散或者偏离目标(简单说就是状态 x x x 能否在扰动下收敛)

  • 无约束线性 MPC 无法保证稳定性的原因,直观上可以理解为它建模的轨迹和优化的动作序列都是有限长度的,而对有限长度的轨迹预测可能无法真实地反映系统运动趋势,换句话说,随着预测时域 N N N 减少,更可能出现不稳定问题,如下例所示
    在这里插入图片描述

3.2 无限预测时域

  • 当我们优化无限长度的动作序列,即 N = ∞ N=\infin N= 时,系统的稳定性是可以保证的(证明略)

  • 但是,简单地令 N = ∞ N=\infin N= 会出现问题,虽然依然可以按第 2 节解出
    u ∗ ( k ) = − [ I p × p 0 ⋯ 0 ] ( Φ T Q Φ + R ) − 1 Φ T Q F x ( k ) = − K m p c x ( k ) u^{*}(k)=-\left[\begin{array}{llll} I_{p \times p} & 0 & \cdots & 0 \end{array}\right]\left(\Phi^{T} \mathscr{Q} \Phi+\mathscr{R}\right)^{-1} \Phi^{T} \mathscr{Q} F x(k)=-K_{m p c} x(k) u(k)=[Ip×p00](ΦTQΦ+R)1ΦTQFx(k)=Kmpcx(k) 但此时 Φ , F , Q , R \Phi, F, \mathscr{Q}, \mathscr{R} Φ,F,Q,R 都是无限维了,这样我们就没法写程序来计算了。为了处理这个问题,我们要利用线性系统的性质:线性系统在最优代价函数关于时域的极限存在且有限,可以写作
    J ( k ) = ∑ i = 1 ∞ ∥ x ( i ∣ k ) ∥ Q 2 + ∥ u ( i − 1 ∣ k ) ∥ R 2 = ∥ x ( k ) ∥ P 2 − ∥ x ( k ) ∥ Q 2 J(k)=\sum_{i=1}^{\infty}\|x(i \mid k)\|_{Q}^{2}+\|u(i-1 \mid k)\|_{R}^{2}=\|x(k)\|_{P}^{2}-\|x(k)\|_{Q}^{2} J(k)=i=1x(ik)Q2+u(i1k)R2=x(k)P2x(k)Q2 为了证明这里的第二个等号,需要用到离散形式的李雅普诺夫方程的一个结论:

    给定任意使得离散系统 x ( k + 1 ) = ( A − B K ) x ( k ) x(k+1) = (\pmb{A} - \pmb{B}\pmb{K})x(k) x(k+1)=(ABK)x(k) 稳定的矩阵 K \pmb{K} K 和任意正定对称矩阵 Q Q Q,一定存在唯一的正定对称矩阵 P P P 使得下式成立
    P − ( A − B K ) T P ( A − B K ) = Q + K T R K with  ∣ eig ⁡ ( A − B K ) ∣ < 1 P-(A-B K)^{T} P(A-B K)=Q+K^{T} R K \quad \text { with } \quad|\operatorname{eig}(A-B K)|<1 P(ABK)TP(ABK)=Q+KTRK with eig(ABK)<1

    接下来利用以上结论证明无穷时域下最优代价函数 J ( k ) = ∥ x ( k ) ∥ P 2 − ∥ x ( k ) ∥ Q 2 J(k)=\|x(k)\|_{P}^{2}-\|x(k)\|_{Q}^{2} J(k)=x(k)P2x(k)Q2
    P − ( A − B K ) T P ( A − B K ) = Q + K T R K with  ∣ eig ⁡ ( A − B K ) ∣ < 1 P-(A-B K)^{T} P(A-B K)=Q+K^{T} R K \quad \text { with } \quad|\operatorname{eig}(A-B K)|<1 P(ABK)TP(ABK)=Q+KTRK with eig(ABK)<1

    Proof:
    x T [ P − ( A − B K ) T P ( A − B K ) ] x = x T [ Q + K T R K ] x x T P x − x T ( A − B K ) T P ( A − B K ) x = x T Q x + x T K T R K x x ( k ) T P x ( k ) − x T ( k + 1 ) P x ( k + 1 ) = x T ( k ) Q x ( k ) + u T ( k ) R u ( k ) ∥ x ( k ) ∥ P 2 = ∑ i = k ∞ ∥ x ( i ) ∥ Q 2 + ∥ u ( i ) ∥ R 2 = ∑ i = 1 ∞ ∥ x ( i ∣ k ) ∥ Q 2 + ∥ u ( i ∣ k ) ∥ R 2 ∥ x ( k ) ∥ P 2 − ∥ x ( k ) ∥ Q 2 = ∑ i = 1 ∞ ∥ x ( i ∣ k ) ∥ Q 2 + ∥ u ( i − 1 ∣ k ) ∥ R 2 \begin{aligned} &x^{T}\left[P-(A-B K)^{T} P(A-B K)\right] x=x^{T}\left[Q+K^{T} R K\right] x \\ &x^{T} P x-x^{T}(A-B K)^{T} P(A-B K) x=x^{T} Q x+x^{T} K^{T} R K x \\ &x(k)^{T} P x(k)-x^{T}(k+1) P x(k+1)=x^{T}(k) Q x(k)+u^{T}(k) R u(k) \\ &\|x(k)\|_{P}^{2}=\sum_{i=k}^{\infty}\|x(i)\|_{Q}^{2}+\|u(i)\|_{R}^{2} = \sum_{i=1}^{\infty}\|x(i|k)\|_{Q}^{2}+\|u(i|k)\|_{R}^{2}\\ &\|x(k)\|_{P}^{2} -\|x(k)\|_{Q}^{2} =\sum_{i=1}^{\infty}\|x(i|k)\|_{Q}^{2}+\|u(i-1|k)\|_{R}^{2} \\ \end{aligned} xT[P(ABK)TP(ABK)]x=xT[Q+KTRK]xxTPxxT(ABK)TP(ABK)x=xTQx+xTKTRKxx(k)TPx(k)xT(k+1)Px(k+1)=xT(k)Qx(k)+uT(k)Ru(k)x(k)P2=i=kx(i)Q2+u(i)R2=i=1x(ik)Q2+u(ik)R2x(k)P2x(k)Q2=i=1x(ik)Q2+u(i1∣k)R2

    1. 第 3 行等号左边用到离散系统转移 x ( k + 1 ) = ( A − B K ) x ( k ) x(k+1) = (\pmb{A} - \pmb{B}\pmb{K})x(k) x(k+1)=(ABK)x(k)
    2. 第 3 行等号右边用到 u ( k ) = − K x ( k ) u(k)=-Kx(k) u(k)=Kx(k)
    3. 由于 x x x u u u 都定义为列向量, x ( k ) T P x ( k ) = x 2 ( k ) P , u T ( k ) R u ( k ) = u 2 ( k ) R x(k)^{T} P x(k)=x^2(k)P, \space u^{T}(k) R u(k)=u^2(k)R x(k)TPx(k)=x2(k)P, uT(k)Ru(k)=u2(k)R
    4. 第 4 行就是把第 3 行左右都从 k k k 时刻到 ∞ \infin 求和,左边是 x 2 ( k ) P − x 2 ( k + 1 ) P + x 2 ( k + 1 ) P − x 2 ( k + 2 ) P . . . x^2(k)P-x^2(k+1)P+x^2(k+1)P-x^2(k+2)P... x2(k)Px2(k+1)P+x2(k+1)Px2(k+2)P...,这样后面全都加减相消了,只留下第一项 x 2 ( k ) P = ∥ x ( k ) ∥ P 2 x^2(k)P = \|x(k)\|_{P}^{2} x2(k)P=x(k)P2
  • 证明以上结论后,我们可以通过以下步骤,求解无限预测时域下的最优动作了:要求 A , B \pmb{A},\pmb{B} A,B 稳定,给定对称正定的 Q Q Q

    1. 找到任意线性反馈 u = − K x u=-Kx u=Kx 使得离散系统稳定(即 ∣ eig ( a − B K ) ∣ < 1 |\text{eig}(a-BK)|<1 eig(aBK)<1
    2. 根据 Q , R , K Q, R, K Q,R,K 求解李雅普诺夫方程 P − ( A − B K ) T P ( A − B K ) = Q + K T R K P-(A-B K)^{T} P(A-B K)=Q+K^{T} R K P(ABK)TP(ABK)=Q+KTRK,解得正定对称矩阵 P P P
    3. 无限时域下的代价函数值可以如下转换,用有限时域内的代价函数值表示
      J ( k ) = ∑ i = 1 ∞ ∥ x ( i ∣ k ) ∥ Q 2 + ∥ u ( i − 1 ∣ k ) ∥ R 2 = ∑ i = N ∞ ∥ x ( i ∣ k ) ∥ Q 2 + ∥ u ( i − 1 ∣ k ) ∥ R 2 + ∑ i = 1 N − 1 ∥ x ( i ∣ k ) ∥ Q 2 + ∥ u ( i − 1 ∣ k ) ∥ R 2 = ∥ x ( N ∣ k ) ∥ P 2 − ∥ x ( N ∣ k ) ∥ Q 2 + ∑ i = 1 N − 1 ∥ x ( i ∣ k ) ∥ Q 2 + ∥ u ( i − 1 ∣ k ) ∥ R 2 = X T ( k ) Q X ( k ) + U ( k ) T R U ( k ) \begin{aligned} J(k) & =\sum_{i=1}^{\infty}\|x(i \mid k)\|_{Q}^{2}+\|u(i-1 \mid k)\|_{R}^{2} \\ & =\sum_{i=N}^{\infty}\|x(i \mid k)\|_{Q}^{2}+\|u(i-1 \mid k)\|_{R}^{2} + \sum_{i=1}^{N-1}\|x(i \mid k)\|_{Q}^{2}+\|u(i-1 \mid k)\|_{R}^{2} \\ & =\|x(N \mid k)\|_{P}^{2}-\|x(N \mid k)\|_{Q}^{2} + \sum_{i=1}^{N-1}\|x(i \mid k)\|_{Q}^{2}+\|u(i-1 \mid k)\|_{R}^{2} \\ & =X^{T}(k) \mathscr{Q} X(k)+U(k)^{T} \mathscr{R} U(k) \end{aligned} J(k)=i=1x(ik)Q2+u(i1k)R2=i=Nx(ik)Q2+u(i1k)R2+i=1N1x(ik)Q2+u(i1k)R2=x(Nk)P2x(Nk)Q2+i=1N1x(ik)Q2+u(i1k)R2=XT(k)QX(k)+U(k)TRU(k) 注意第三行中减去一个 x x x 关乎 Q Q Q 的二次型,增加一个 x x x 关乎 P P P 的二次型,这可以体现在矩阵 Q \mathscr{Q} Q 中,而 R \mathscr{R} R 不变,即
      Q = diag [ Q , Q , . . . . , Q , P ] R = diag [ R , R , . . . . , R , R ] \mathscr{Q} = \text{diag} [Q,Q,....,Q,P] \\ \mathscr{R} = \text{diag} [R,R,....,R,R] Q=diag[Q,Q,....,Q,P]R=diag[R,R,....,R,R]
    4. 优化 3 中 J ( k ) J(k) J(k) 得到的控制策略一定可以保证系统稳定性,优化问题求解过程和第 2 节相同,最优策略为
      u ∗ ( k ) = − [ I p × p 0 ⋯ 0 ] ( Φ T Q Φ + R ) − 1 Φ T Q F x ( k ) = − K m p c x ( k ) u^{*}(k)=-\left[\begin{array}{llll} I_{p \times p} & 0 & \cdots & 0 \end{array}\right]\left(\Phi^{T} \mathscr{Q} \Phi+\mathscr{R}\right)^{-1} \Phi^{T} \mathscr{Q} F x(k)=-K_{m p c} x(k) u(k)=[Ip×p00](ΦTQΦ+R)1ΦTQFx(k)=Kmpcx(k)
  • 下面给出一个根据以上方法计算的例子

    在这里插入图片描述

  • 进一步地,我们可以考察以上第 3 步中对时间划分时 N N N 不同取值的影响,如下

    在这里插入图片描述
    分析以上计算过程,我们起初任取的 K K K 从序列第 N N N 个时刻起才开始发挥作用,因此 N N N 取值越大,计算结果越接近真实最优值,初始取值的影响越小

4. 无约束线性 MPC 和 LQR

  • 无穷时域上,无约束线性MPC和LQR的求解结果其实是一样的
    1. 无约束线性 MPC 通过找到最优的动作序列 { u ( k ) , u ( k + 1 ) . . . } \{u(k), u(k+1)...\} {u(k),u(k+1)...} 来最小化代价函数,这等价于优化 u = − K m p c x u=-K_{mpc}x u=Kmpcx
    2. LQR 通过求解每一步最优的控制增益 K l q r K_{lqr} Klqr,构造动作 u = − K l q r x u=-K_{lqr}x u=Klqrx 执行来最小化代价函数,这等价于求解最优动作序列 { u ( k ) , u ( k + 1 ) . . . } \{u(k), u(k+1)...\} {u(k),u(k+1)...}
  • 因此,二者的优化目标其实是一样的,二者的优化结果也是一样的。但是无约束线性 MPC 仍有意义
    1. 有些场景下我们只关注有限时域内的控制过程,这时 LQR 没法解
    2. 约束 MPC 的稳定性分析是基于无约束 MPC 稳定性分析的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/309995.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P2P通信基本原理

在数字世界的脉络中&#xff0c;点对点&#xff08;P2P&#xff09;技术如同一条悄无声息的河流&#xff0c;流经信息的每个角落&#xff0c;连接着世界各地的计算机和设备。这种去中心化的网络模型&#xff0c;不仅打破了传统的客户端-服务器架构的界限&#xff0c;还赋予了数…

DC-5渗透测试复现

DC-5渗透测试复现 目的&#xff1a; 获取最高权限以及5个flag 过程&#xff1a; 信息打点-文件包含漏洞-弹shell- scren-4.0.5提权 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.136) 靶机&#xff1a;DC_3(192.168.85.134) 复现&#xff1a; 一.信息收集 nma…

DC-2渗透测试复现

DC-2渗透测试复现 目的&#xff1a; 获取最高权限以及5个flag 过程&#xff1a; 信息打点-ssh连接-git提权 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.136) 靶机&#xff1a;DC_2(192.168.85.132) 复现&#xff1a; 一.信息收集 nmap -sP 192.168.85.0/24 …

element问题总结之el-table使用fixed固定列后滚动条滑动到底部或者最右侧的时候错位问题

el-table使用fixed固定列后滚动条滑动到底部或者最右侧的时候错位 效果图前言解决方案纵向滑动滚动条滑动到底部的错位解决横向滚动条滑动到最右侧的错位解决 效果图 前言 在使用el-table固定行的时候移动滚动条会发现移动到底部或者移动到最右侧的时候会出现表头和内容错位或…

头歌-机器学习 第9次实验 随机森林

第1关&#xff1a;Bagging 任务描述 本关任务&#xff1a;补充 python 代码&#xff0c;完成 BaggingClassifier 类中的 fit 和 predict 函数。请不要修改 Begin-End 段之外的代码。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 什么是 Bagging&#xf…

Day37:LeedCode 738.单调递增的数字 968.监控二叉树 蓝桥杯 翻转

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9 思路: 假设这个数是98,…

Nginx健康检查

Nginx健康检查nginx_upstream_check_module nginx健康检查介绍: ​ 主动健康检查&#xff0c;nignx定时主动地去ping后端的服务列表&#xff0c;当发现某服务出现异常时&#xff0c;把该服务从健康列表中移除&#xff0c;当发现某服务恢复时&#xff0c;又能够将该服务加回健…

Offer必备算法26_BFS解决最短路_四道力扣题(由易到难)

目录 ①力扣1926. 迷宫中离入口最近的出口 解析代码 ②力扣433. 最小基因变化 解析代码 ③力扣127. 单词接龙 解析代码 ④力扣675. 为高尔夫比赛砍树 解析代码 本篇完。 ①力扣1926. 迷宫中离入口最近的出口 1926. 迷宫中离入口最近的出口 难度 中等 给你一个 m x …

【简明图文教程】Node.js的下载、安装、环境配置及测试

文章目录 前言下载Node.js安装Node.js配置Node.js配置环境变量测试后言 前言 本教程适用于小白第一次从零开始进行Node.js的下载、安装、环境配置及测试。 如果你之前已经安装过了Node.js或删除掉了Node.js想重新安装&#xff0c;需要先参考以下博客进行处理后&#xff0c;再根…

社交网络与Web3:数字社交的下一阶段

随着信息技术的飞速发展&#xff0c;人们的社交方式也发生了巨大的变化。从最初的互联网聊天室到如今的社交网络平台&#xff0c;我们已经见证了数字社交的不断演变和发展。而随着区块链技术的兴起&#xff0c;Web3时代的到来将为数字社交带来全新的可能性和挑战。本文将探讨社…

milvus各组件的结构体分析

milvus各组件的结构体分析 各组件启动&#xff0c;需要构建各组件的结构体&#xff0c;一共8个。 runComponent(ctx, localMsg, wg, components.NewRootCoord, metrics.RegisterRootCoord) runComponent(ctx, localMsg, wg, components.NewProxy, metrics.RegisterProxy) run…

游戏开发者必看:Perforce Helix Core 的功能特点及游戏开发中的常用工具、典型用例介绍

「不出海&#xff0c;即出局」随着全球化的加速发展&#xff0c;企业出海已成燎原之势。日前&#xff0c;2024 亚马逊云科技出海全球化论坛在深圳成功举办。龙智携手 Perforce 亮相游戏行业展区&#xff0c;展示了Perforce Helix Core如何与主流游戏开发引擎高效集成&#xff0…

Docker安装部署Jenkins并发布NetCore应用

Docker安装Jenkins # 拉取镜像 docker pull jenkins/jenkins # 查看镜像 docker images # 运行jenkins # 8080端口为jenkins Web 界面的默认端口 13152是映射到外部 &#xff1a;前面的是映射外部 # 50000端口为jenkins 的默认代理节点&#xff08;Agent&#xff09;通信端口…

FFmpeg: 自实现ijkplayer播放器--06封装打开和关闭stream

文章目录 流程图stream openstream close流程图 stream open 初始化SDL以允许⾳频输出;初始化帧Frame队列初始化包Packet队列初始化时钟Clock初始化音量创建解复用读取线程read_thread创建视频刷新线程video_refresh_threadint FFPlayer::stream_open(const char

java:多线程解决生产者消费者问题

生产者消费者问题 生产者消费者问题&#xff0c;也称有限缓冲问题&#xff0c;是一个多线程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两种线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中…

第十三届蓝桥杯省赛大学B组编程题(c++)

D.刷题统计 二分(AC): 注意:二分时右边界 right 的确定 #include<iostream> using namespace std; long long a,b,n; bool check(long long x){long long tx/7;x%7;long long temp0;if(x<5) tempx*a;else temp5*a(x-5)*b;long long cntt*(5*a2*b)temp;return cnt&g…

【网站项目】驾校报名小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【Linux学习笔记】安卓设置内核信息的打印级别

开发环境 开发板&#xff1a;正点原子RK3568开发板安卓版本&#xff1a;11 问题描述 在串口调试过程中经常打印出这样的一些信息 极影响调试&#xff0c;暂时又没什么用&#xff0c;有些时候还不能给它直接关了。尤其是这个信息 healthd: battery l50 v3 t2.6 h2 st3 fc10…

如何使用pytorch进行图像分类

如何使用pytorch进行图像分类https://featurize.cn/notebooks/5a36fa40-490e-4664-bf98-aa5ad7b2fc2f

Unity笔记之Android打包、减小包体之类的问题

打包问题 问题1&#xff1a; 一般大部分问题就是JDK、SDK、NDK之类的问题。现在是其他的问题&#xff0c;之前遇到过&#xff0c;好久没玩android了都忘了。 这试了半天&#xff0c;结果是需要有密钥库。那就给他创建一个填一下就行了 &#xff08;在网上看了半天&#xff…