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

news2024/9/25 1:16:16
  • 前文:模型预测控制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.coloradmin.cn/o/1595825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP课后习题之一

1、路由协议用工作机制上分为那几种&#xff1f;分别是&#xff1f; A&#xff1a;两种。分别是静态路由和动态路由&#xff08;可分为IGP和EGP&#xff09; 2、IGP和EGP协议有哪些&#xff1f; A&#xff1a;IGP: RIP、OSPF、ISIS、EIGRP EGP: BGP 3、路由优先级的用途&…

反爬虫之代理IP封禁-协采云IP池

反爬虫之代理IP封禁-协采云IP池 1、目标网址2、IP封禁4033、协采云IP池 1、目标网址 aHR0cDovL3d3dy5jY2dwLXRpYW5qaW4uZ292LmNuLw 2、IP封禁403 这个网站对IP的要求很高&#xff0c;短时间请求十几次就会遭关进小黑屋。如下图&#xff1a; 明显是网站进行了反爬处理&…

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

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

Windows下安装GPU版Pytorch

升级Driver到最新版本 Windows搜索栏中输入设备管理器找到显示适配器一项&#xff0c;点击展开&#xff0c;你将看到你的NVIDIA显卡列在其中右键点击你的NVIDIA显卡&#xff0c;选择更新驱动软件…。在弹出的对话框中&#xff0c;选择自动搜索更新的驱动软件。之后&#xff0c…

Scrapy框架 进阶

Scrapy框架基础Scrapy框架进阶 【五】持久化存储 命令行&#xff1a;json、csv等管道&#xff1a;什么数据类型都可以 【1】命令行简单存储 &#xff08;1&#xff09;语法 Json格式 scrapy crawl 自定义爬虫程序文件名 -o 文件名.jsonCSV格式 scrapy crawl 自定义爬虫程…

二叉树的链式存储——补充

/二叉树的结点&#xff08;链式存储) typedef struct BiTNode{ElemType data; //数据域struct BiTNode*lchild,*rchild //左、右孩子指针 }BiTNode,*BiTree;如下图进行存放&#xff1a; 所以&#xff0c;一个二叉树有n个结点的话&#xff0c;那总共就会有2n个指针域…

怎么做预约小程序_探索我们的全新预约小程序

在繁忙的现代生活中&#xff0c;无论是想预约一次美容护理&#xff0c;还是预定一家心仪的餐厅&#xff0c;亦或是安排一次专业的咨询服务&#xff0c;我们都希望能够在最短的时间内完成这些操作&#xff0c;节省时间和精力。如今&#xff0c;一款全新的预约小程序应运而生&…

鸿蒙语言TypeScript学习第16天:【类】

1、TypeScript 类 TypeScript 是面向对象的 JavaScript。 类描述了所创建的对象共同的属性和方法。 TypeScript 支持面向对象的所有特性&#xff0c;比如 类、接口等。 TypeScript 类定义方式如下&#xff1a; class class_name { // 类作用域 }定义类的关键字为 class&am…

AI天使汇联合150家顶级基金、战投,征集优秀AI创业项目

鉴于AI天使汇主办的2024年3月期优秀项目征集活动效果超出预期&#xff0c;3月活动最后TOP20路演者中已有多家快速拿到了TS。 路演活动质量受到了AI创业公司和基金/战投伙伴的高度评价&#xff0c;现在开始四月期活动报名! 本期征集活动联合的顶级基金和战投数量增加到了150家…

MGRE-OSPF接口网络类型实验

OSPF接口网络类型实验 一&#xff0c;实验拓扑 初始拓扑&#xff1a; 最终拓扑&#xff1a; 二&#xff0c;实验要求及分析 要求&#xff1a; 1&#xff0c;R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2&#xff0c;R1/R4/R5为全连的MGRE结构&#xff0c;R…

儿童护眼台灯怎么选?五款必选的高口碑护眼台灯推荐

儿童台灯&#xff0c;想必大家都不会陌生了&#xff0c;是一种学生频繁使用的小灯具&#xff0c;一般指放在桌面用的有底座的电灯。随着近年来儿童青少年的视力急速下滑&#xff0c;很多家长都会选择给孩子选择一款合适的护眼台灯&#xff0c;以便孩子夜晚学习能有个好的照明环…

Stable Diffusion教程:LoRA模型

LoRA模型是一种微调模型&#xff0c;它不能独立生成图片&#xff0c;常常用作大模型的补充&#xff0c;用来生成某种特定主体或者风格的图片。 下载模型 在模型下载网站&#xff0c;如果模型是LoRA模型&#xff0c;网站会特别标识出来。以 liblib.ai为例&#xff1a; 模型左…

three.js捋文档的记录笔记(六):场景 几何体 材质 物体 相机 渲染器的简单理解

三维场景Scene const scene new THREE.Scene();物体形状&#xff1a;几何体 Geometry //创建一个长方体几何对象Geometry const geometry new THREE.BoxGeometry(100, 100, 100); 物体外观&#xff1a;材质Material //创建一个材质对象Material const material new THREE.M…

Spring Boot 学习(3)——Spring Initializr 创建项目问题解决

产生问题的原因&#xff0c;各种的版本都较老&#xff0c;所以导致出现问题。目前暂未打到合适的教程&#xff0c;按老教程学起来先。 小白瞎学&#xff0c;大神勿喷&#xff01; 再次强调环境&#xff1a;maven 3.3.9、jdk 1.8、idea 2017、Spring 4.3.13、Spring Boot 1.5.…

最优算法100例之47-从尾到头打印单链表

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 从尾到头打印单链表 题解报告 方法1:头插法逆置单链表然后依次打印;注意此处是不带头结点的单链表,带头节点的操作稍微有…

ELK企业级日志分析系统(elasticsearch+logstash+kibana)

目录 一.ELK概述 1.定义 &#xff08;1&#xff09;ElasticSearch &#xff08;2&#xff09;Kiabana &#xff08;3&#xff09;Logstash &#xff08;4&#xff09;Filebeat 2.filebeat结合logstash带来好处 3.为什么要是用ELK&#xff1f; 4.完整日志系统基本特征 …

c++ - 类的默认成员函数

文章目录 前言一、构造函数二、析构函数三、拷贝构造函数四、重载赋值操作符五、取地址及const取地址操作符重载 前言 默认成员函数是编译器自动生成的&#xff0c;也可以自己重写&#xff0c;自己重写之后编译器就不再生成&#xff0c;下面是深入了解这些成员函数。 一、构造…

#381. 四边形继承练习

太爽了 甚至还现学了叉积判断线段是否相交和求面积的方法 先给出我的代码&#xff1a; #include <iostream> #include <vector> #include <iomanip> #include <cmath>using namespace std;//下面需要补充多个类的声明及实现代码 const double EPS 1…

STM32之FreeRTOS移植

1.FreeRTOS的移植过程是将系统需要的文件和代码进行移植和裁剪&#xff0c;其移植的主要过程为&#xff1a; &#xff08;1&#xff09;官网上下载FreeRTOS源码&#xff1a;https://www.freertos.org/ &#xff08;2&#xff09;移植文件夹&#xff0c;在portable文件夹中只需…

2024年文化、历史与人文艺术与社会发展国际会议(CHHASD2024)

2024年文化、历史与人文艺术与社会发展国际会议(CHHASD2024) 会议简介 2024年国际文化、历史、人文、艺术与社会发展会议&#xff08;CHHASD2024&#xff09;将在中国武汉举行&#xff0c;主题为“文化、历史&#xff0c;人文、艺术和社会发展”。CHHASD2024汇集了来自世界各…