【MPC学习笔记】02:MPC详细简介(Lecture 1_1 Unconstrained MPC)

本笔记来自北航诸兵老师的课程
课程地址:模型预测控制(2022春)lecture 1-1 Unconstrained MPC
接上一篇:【MPC学习笔记】01:MPC简介(Lecture 1_1 Unconstrained MPC)

文章目录

1 详细介绍

1.1 状态方程

对 LTI 离散系统:
x ( k + 1 ) = A x ( k ) + B u ( k ) x ∈ R n , u ∈ R p x(k+1) = Ax(k) + Bu(k)\quad x\in\R^n, u\in R^p x(k+1)=Ax(k)+Bu(k)xRn,uRp

对传统控制系统,连续系统是好处理的,离散系统是要额外考虑其他因素的
对MPC,则是反过来,离散系统是好处理的,连续系统是要额外考虑其他因素的

假设:

  • A , B A,B A,B 可控(Stablizable)
  • 状态和控制输入不存在约束(本节讨论无约束MPC)

Define:
x ( i ∣ k ) , u ( i ∣ k ) x(i|k), u(i|k) x(ik),u(ik): Prediction of i i isteps ahead from time k k k (比如,在时刻 k k k 预测下一时刻的状态,记为 x ( 1 ∣ k ) x(1|k) x(1∣k),当前时刻的输入,记为 u ( 0 ∣ k ) u(0|k) u(0∣k))
预测:
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 u ( 1 ∣ k ) = A 2 x ( 0 ∣ k ) + A B u ( 0 ∣ k ) + B u ( 1 ∣ k ) ⋮ ⋮ ⋮ x ( i ∣ k ) = A i x ( 0 ∣ k ) + A i − 1 B u ( 0 ∣ k ) + A i − 2 B 2 u ( 1 ∣ k ) + ⋯ + B u ( i − 1 ∣ k ) \begin{aligned} x(1|k) &= Ax(0|k) + Bu(0|k) \\ x(2|k) &= Ax(1|k) + Bu(1|k)=A[Ax(0|k) + Bu(0|k)] + Bu(1|k) \\ &=A^2x(0|k) + ABu(0|k) + Bu(1|k) \\ \quad&\quad \quad \quad \quad \quad \vdots\quad \quad \quad \vdots\quad \quad \quad \vdots \\ x(i|k) &= A^ix(0|k) + A^{i-1}Bu(0|k) + A^{i-2}B^2u(1|k) + \cdots + Bu(i-1|k) \end{aligned} x(1∣k)x(2∣k)x(ik)=Ax(0∣k)+Bu(0∣k)=Ax(1∣k)+Bu(1∣k)=A[Ax(0∣k)+Bu(0∣k)]+Bu(1∣k)=A2x(0∣k)+ABu(0∣k)+Bu(1∣k)=Aix(0∣k)+Ai1Bu(0∣k)+Ai2B2u(1∣k)++Bu(i1∣k)

In compact form:
X ( k ) = F x ( k ) + Φ U ( k ) X(k) = Fx(k) + \Phi U(k) X(k)=Fx(k)+ΦU(k)
X ( k ) ≜ [ x ( 1 ∣ k ) x ( 2 ∣ k ) ⋮ x ( N ∣ k ) ] U ( k ) ≜ [ u ( 0 ∣ k ) u ( 1 ∣ k ) ⋮ u ( N − 1 ∣ k ) ] X(k)\triangleq \begin{bmatrix} x(1|k)\\ x(2|k)\\ \vdots\\ x(N|k) \end{bmatrix} \quad\quad U(k)\triangleq \begin{bmatrix} u(0|k)\\ u(1|k)\\ \vdots\\ u(N-1|k) \end{bmatrix} X(k) x(1∣k)x(2∣k)x(Nk) U(k) u(0∣k)u(1∣k)u(N1∣k)

X ( k ) X(k) X(k) 式中的 x ( k ) x(k) x(k) 也即 x ( 0 ∣ k ) x(0|k) x(0∣k)
≜ \triangleq : 表示定义为
N N N : Control/Predictive horizon,实际上二者有区别,但这里不做区分

1.2 Cost Function

这里cost function 的控制/预测时域是一个有限的数
J ( k ) = ∑ i = 1 N ∣ ∣ x ( i ∣ k ) ∣ ∣ Q 2 + ∣ ∣ u ( i − 1 ∣ k ) ∣ ∣ R 2 = X T ( k ) Q X ( k ) + U T ( k ) R U ( k ) \begin{aligned} J(k) &= \sum^{N}_{i=1}||x(i|k)||_Q^2 + ||u(i-1|k)||_R^2 \\ &= X^T(k)\mathcal{Q}X(k) + U^T(k)\mathcal{R}U(k) \end{aligned} J(k)=i=1N∣∣x(ik)Q2+∣∣u(i1∣k)R2=XT(k)QX(k)+UT(k)RU(k)
假设 Q Q Q R R R是正定的,是权重
Q = [ Q Q ⋱ Q ] R = [ R R ⋱ R ] \mathcal{Q} = \begin{bmatrix} Q\\ &Q\\ &&\ddots\\ &&&Q \end{bmatrix} \quad\quad \mathcal{R} = \begin{bmatrix} R\\ &R\\ &&\ddots\\ &&&R \end{bmatrix} Q= QQQ R= RRR
X ( k ) = F x ( k ) + Φ U ( k ) X(k) = Fx(k) + \Phi U(k) X(k)=Fx(k)+ΦU(k) 代入 J ( k ) J(k) J(k)
J ( k ) = ( F x ( k ) + Φ U ( k ) ) T Q ( F x ( k ) + Φ U ( k ) ) + U T ( k ) R U ( k ) = ( x ( k ) T F T + U ( k ) T Φ T ) ( Q F x ( k ) + Q Φ U ( k ) ) + U T ( k ) R U ( k ) = x ( k ) T F T Q F x ( k ) + U ( k ) T Φ T Q F x ( k ) + x ( k ) T F T Q Φ U ( k ) + U ( k ) T Φ T Q Φ U ( k ) + U T ( k ) R U ( k ) = x ( k ) T F T Q F x ( k ) + 2 x ( k ) T F T Q Φ U ( k ) + U ( k ) T ( Φ T Q Φ + R ) U ( k ) \begin{equation*} \begin{aligned} J(k) &= (Fx(k) + \Phi U(k))^{T} \mathcal{Q} (Fx(k) + \Phi U(k)) + U^T(k)\mathcal{R}U(k) \\ &= (x(k)^TF^T + U(k)^T\Phi^T)(\mathcal{Q}Fx(k) + \mathcal{Q}\Phi U(k))+ U^T(k)\mathcal{R}U(k) \\ &= \textcolor{green}{x(k)^TF^T\mathcal{Q}Fx(k)}+ \textcolor{red}{U(k)^T\Phi^T\mathcal{Q}Fx(k) + x(k)^TF^T\mathcal{Q}\Phi U(k)} + \textcolor{blue}{U(k)^T\Phi^T\mathcal{Q}\Phi U(k)+ U^T(k)\mathcal{R}U(k)} \\ &=\textcolor{green}{x(k)^TF^T\mathcal{Q}Fx(k)}+ \textcolor{red}{2x(k)^TF^T\mathcal{Q}\Phi U(k)} +\textcolor{blue}{U(k)^T(\Phi^T\mathcal{Q}\Phi+\mathcal{R})U(k)} \end{aligned} \end{equation*} J(k)=(Fx(k)+ΦU(k))TQ(Fx(k)+ΦU(k))+UT(k)RU(k)=(x(k)TFT+U(k)TΦT)(QFx(k)+QΦU(k))+UT(k)RU(k)=x(k)TFTQFx(k)+U(k)TΦTQFx(k)+x(k)TFTQΦU(k)+U(k)TΦTQΦU(k)+UT(k)RU(k)=x(k)TFTQFx(k)+2x(k)TFTQΦU(k)+U(k)T(ΦTQΦ+R)U(k)

F x ( k ) Fx(k) Fx(k) Φ U ( k ) \Phi U(k) ΦU(k) 维数相同(是系统状态的维数*N),而 Q \mathcal{Q} Q是一个对角方阵,故 U ( k ) T Φ T Q F x ( k ) = x ( k ) T F T Q Φ U ( k ) = 一个标量 {U(k)^T\Phi^T\mathcal{Q}Fx(k) = x(k)^TF^T\mathcal{Q}\Phi U(k)}=一个标量 U(k)TΦTQFx(k)=x(k)TFTQΦU(k)=一个标量,故红色部分相加相当于其中一个乘2

1.3 状态变量 u ( k ) u(k) u(k) 的求解

Minimize the control function by predictive control series:
(可以不严谨地理解为:让 J J J最小,相当于求 J J J J J J U U U导数为0 点的值)
∇ U ∣ U = U ∗ = ∂ J ∂ U ∣ U = U ∗ = 0 \nabla_U{|}_{U=U^*}=\frac{\partial{J}}{\partial U}{|}_{U=U^*}=0 UU=U=UJU=U=0
∂ J ∂ U = 0 + 2 x ( k ) T F T Q Φ + 2 U ( k ) T ( Φ T Q Φ + R ) \frac{\partial{J}}{\partial U}=\textcolor{green}{0} +\textcolor{red}{2x(k)^TF^T\mathcal{Q}\Phi}+\textcolor{blue}{2U(k)^T(\Phi^T\mathcal{Q}\Phi+\mathcal{R})} UJ=0+2x(k)TFTQΦ+2U(k)T(ΦTQΦ+R)
∂ J ∂ U = 0 \frac{\partial{J}}{\partial U}=0 UJ=0,可得:
x ( k ) T F T Q Φ + U ( k ) T ( Φ T Q Φ + R ) = 0 ( x ( k ) T F T Q Φ + U ( k ) T ( Φ T Q Φ + R ) ) T = 0 ( x ( k ) T F T Q Φ ) T + ( Φ T Q Φ + R ) T U ( k ) = 0 Φ T Q F x ( k ) + ( Φ T Q Φ + R ) U ( k ) = 0 ( Φ T Q Φ + R ) U ( k ) = − Φ T Q F x ( k ) U ( k ) = − ( Φ T Q Φ + R ) − 1 Φ T Q F x ( k ) \begin{equation*} \begin{aligned} \textcolor{red}{x(k)^T F^T \mathcal{Q} \Phi}+\textcolor{blue}{U(k)^T (\Phi^T\mathcal{Q}\Phi+\mathcal{R})}= 0 \\ (\textcolor{red}{x(k)^TF^T\mathcal{Q}\Phi}+\textcolor{blue}{U(k)^T(\Phi^T\mathcal{Q}\Phi+\mathcal{R})})^T=0 \\ \textcolor{red}{(x(k)^TF^T\mathcal{Q}\Phi)^T}+\textcolor{blue}{(\Phi^T\mathcal{Q}\Phi+\mathcal{R})^TU(k)}=0 \\ \textcolor{red}{\Phi^T \mathcal{Q} Fx(k)} + \textcolor{blue} {(\Phi^T\mathcal{Q}\Phi+\mathcal{R})U(k)}=0 \\ \textcolor{blue}{(\Phi^T\mathcal{Q}\Phi+\mathcal{R})U(k)}=-\textcolor{red}{\Phi^T\mathcal{Q}Fx(k)} \\ \textcolor{blue}{U(k)}=-\textcolor{blue}{(\Phi^T\mathcal{Q}\Phi+\mathcal{R})^{-1}}\textcolor{red}{\Phi^T\mathcal{Q}Fx(k)} \end{aligned} \end{equation*} x(k)TFTQΦ+U(k)T(ΦTQΦ+R)=0(x(k)TFTQΦ+U(k)T(ΦTQΦ+R))T=0(x(k)TFTQΦ)T+(ΦTQΦ+R)TU(k)=0ΦTQFx(k)+(ΦTQΦ+R)U(k)=0(ΦTQΦ+R)U(k)=ΦTQFx(k)U(k)=(ΦTQΦ+R)1ΦTQFx(k)
即:
U ( k ) = − ( Φ T Q Φ + R ) − 1 Φ T Q F x ( k ) ( R > 0 , Q ≥ 0 ; o r R ≥ 0 , Q > 0 , a n d Φ i s f u l l y r a n k e d ) \begin{equation*} \begin{aligned} \textcolor{blue}{U(k)}=- \textcolor{blue}{(\Phi^T\mathcal{Q}\Phi+\mathcal{R})^{-1}} \textcolor{red}{\Phi^T\mathcal{Q}Fx(k)}\\ (R>0,Q\ge0;or R\ge0,Q\gt0, and\ \Phi\ is\ fully\ ranked) \end{aligned} \end{equation*} U(k)=(ΦTQΦ+R)1ΦTQFx(k)(R>0,Q0;orR0,Q>0,and Φ is fully ranked)

满足括号里的条件, ( Φ T Q Φ + R ) (\Phi^T\mathcal{Q}\Phi+\mathcal{R}) (ΦTQΦ+R)才可逆

u ∗ ( k ) = − [ I p × p 0 ⋯ 0 ] ( Φ T Q Φ + R ) − 1 Φ T Q F x ( k ) = − K m p c x ( k ) \begin{equation*} \begin{aligned} \begin{aligned} \textcolor{blue}{u^*(k)}&=- \begin{bmatrix} I_{p\times p}&0&\cdots 0 \end{bmatrix} \textcolor{blue}{(\Phi^T\mathcal{Q}\Phi+\mathcal{R})^{-1}} \textcolor{red}{\Phi^T\mathcal{Q}Fx(k)} \\ &=-K_{mpc}x(k) \end{aligned} \end{aligned} \end{equation*} u(k)=[Ip×p00](ΦTQΦ+R)1ΦTQFx(k)=Kmpcx(k)
u ∗ ( k ) u^*(k) u(k) ,则在 U ( k ) U(k) U(k) 前乘一个分块矩阵,对角线上的第一个分块是一个单位阵,维度为控制输入的维度 p p p ,如果不是多输入而是单输入,则 p = 1 p=1 p=1
u ∗ ( k ) u^*(k) u(k) 最后化简为一个常数矩阵 K m p c K_{mpc} Kmpc (因为 Φ \Phi Φ, Q \mathcal{Q} Q, R \mathcal{R} R, F F F这些全部是已知量)乘上 k k k 时刻的状态变量,从形式上看是状态反馈。
因此,无约束线性MPC实际上是一个线性反馈控制。

1.4 举例

在这里插入图片描述
写一段matlab程序,即可求解 F F F Φ \Phi Φ u ∗ ( k ) u^*(k) u(k)。但问题是,求解出来的 u ∗ ( k ) u^*(k) u(k)是否能保证系统是稳定的?
对于有稳定性的判定,有李雅普诺夫直接法李雅普诺夫间接法,见下:
在这里插入图片描述

  1. > 0 和 < 0 >0和<0 >0<0 分别指的是正定和负定
  2. 验证稳定性的前提是 K m p c K_{mpc} Kmpc 存在
  3. 可优化性 并不决定 可稳定性(两种可能的原因见下a和b),所以这里验证稳定性的操作是必要的。
  4. 优化是在一段时间上进行的,在这段时间内, x x x不一定由大变小,也可能先变小再变大,从而不收敛
  5. 对于非最小相位系统,系统响应方向可能相反,N取得不够大时,预测不能反映真实运动趋势,那么优化的不是系统真正的性能,导致不稳定的情况发生

本例采用李雅普诺夫间接法在离散时间系统下的判据
N N N的取值越来越小,如下面这个例子所示, 特征值超出了单位圆,从而不稳定。
在这里插入图片描述
知道如何判断稳定性后,现在的问题变成了:每一次优化后,都要去验证一下系统的稳定性呢?有没有一种机制,保证每一次算出来的 K K K都保证系统的稳定性?

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

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

相关文章

UTF-8编码文件:有BOM和无BOM的区别

UTF-8编码文件&#xff1a;有BOM和无BOM的区别 在处理UTF-8编码的文本文件时&#xff0c;你可能会遇到“有BOM”和“无BOM”两种类型。了解这两者之间的区别对于确保文件兼容性和正确的数据处理至关重要。 什么是BOM&#xff1f; BOM&#xff08;Byte Order Mark&#xff0c;…

B2005 字符三角形(python)

a input() print( a) print( a a a) print(a a a a a)python中默认输入的是字符型&#xff0c;第一句就是输入了一个字符赋给a python中单引号内的也是字符串&#xff0c;用print输出需要连接的字符串时用加号加在后面即可

一款集成 GPT 问答、Midjourney 绘画等一站式服务的免费开源系统

主要功能 集成 GPT 问答、Midjourney 绘画等一站式服务的系统&#xff0c;主要特点包括&#xff1a; 无需自行搭建 GPT 问答、Midjourney 服务 API&#xff0c;即开即用。支持 GPT 3.5/4.0、联网版、图像版问答&#xff0c;可免费体验。支持 Midjourney 快速、慢速、极速版多…

基于孔雀优化算法的航线规划

MATLAB2020a下正常运行 上传明细-CSDN创作中心

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现 之前&#xff0c;我们依据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;提出了新的YOLOV1架构&#xff0c;并解决前向推理过程中的两个问题&#xff0c;继续按照此书进行YOLOV1的复现。 经典目标…

计算机专业个人简历范文(8篇)

HR浏览一份简历也就25秒左右&#xff0c;如果你连「好简历」都没有&#xff0c;怎么能找到好工作呢&#xff1f; 如果你不懂得如何在简历上展示自己&#xff0c;或者觉得怎么改简历都不出彩&#xff0c;那请你一定仔细读完。 互联网运营个人简历范文> 男 22 本科 AI简历…

前端 -- 基础 路径 -- 相对路径 详解

目录 导语引入 &#xff1a; 相对路径 &#xff1a; 相对路径 包含哪些 &#xff1a; 同一级路径 &#xff1a; 下一级路径 &#xff1a; 上一级路径 &#xff1a; 导语引入 &#xff1a; # 大家都清楚&#xff0c;在我们日常所见到的网页里&#xff0c;要涉及好多…

[嵌入式专栏](系列一 、C++语言详解)

文章目录 1 . 概要2 . C关键字3 . C语言运算符优先级4 . 本质理解4.1 内存4.2 语法 5 . 语法应用5.1 示例5.2 指针5.3 结构体5.4 类 6 . 编译过程6.1 预处理6.2 编译6.3 汇编6.4 链接 7 . 小结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149…

Oracle-深入了解cache buffer chain

文章目录 1.Cache buffer chain介绍2.Buffer cache的工作原理3 Buffer chains4.Multi-versioning of Buffers5.Latches6.诊断CBC latch等待7.解决 CBC Latch等待 1.Cache buffer chain介绍 经常看到会话等待事件“latch&#xff1a;cache buffers chain”。 如果想知道意味着什…

PDFMiner,一个神奇的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - pdfminer。 Github地址&#xff1a;https://github.com/euske/pdfminer 在数字化时代&#xff0c;PDF&#xff08;Portable Document Format&#xf…

王力机器人安全门|用细节开拓高端精致家居生活

细微之处见风范,毫厘之优定乾坤。在追求高端品质的道路上,细节往往是最有力的诠释。如在入户门的选择方面,考虑到老人、孩子、宠物等每一位家庭成员不同需求的设计、科技运用才称得上是充满人性化、品质化的高端细节,幸福感直抵心灵。在该方面,王力机器人安全门做出了表率,每一…

网络总是宕机,这个绝招必须收藏!

下午好&#xff0c;我的网工朋友。 众所周知&#xff0c;后台服务可以划分为两类&#xff0c;有状态和无状态。 高可用对于无状态的应用来说是比较简单的&#xff0c;无状态的应用&#xff0c;只需要通过 F5 或者任何代理的方式就可以很好的解决。 而本篇文章描述的主要是针…