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

news2024/12/24 2:36:15

本笔记来自北航诸兵老师的课程
课程地址:模型预测控制(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.coloradmin.cn/o/1352497.html

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

相关文章

​ubuntu安装远程桌面 ​Xfce

本文最先发布在&#xff1a;https://www.itcoder.tech/posts/how-to-install-xrdp-on-ubuntu-20-04/ Xrdp 是一个微软远程桌面协议&#xff08;RDP&#xff09;的开源实现&#xff0c;它允许你通过图形界面控制远程系统。通过 RDP&#xff0c;你可以登录远程机器&#xff0c;并…

从 YOLOv1 到 YOLO-NAS 的所有 YOLO 模型:论文解析

在计算机视觉的浩瀚领域&#xff0c;有一支耀眼的明星&#xff0c;她的名字传颂着革新与突破的传奇——YOLO&#xff08;You Only Look Once&#xff09;。回溯时光&#xff0c;走进这个引人注目的名字背后&#xff0c;我们仿佛穿越进一幅画卷&#xff0c;一幅展现创新魅力与技…

论文润色会泄露吗 智能写作

大家好&#xff0c;今天来聊聊论文润色会泄露吗 智能写作&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 标题&#xff1a;论文润色会泄露吗――保护学术隐私与安全的探讨…

单机游戏推荐:少年骇客:能量之旅 中文免安装版

邪恶的骇尸诅咒了欧洲 - 只有少年骇客能制止他&#xff01;在你奋力拯救世界的冒险历程中&#xff0c;探索这个充满了战斗、谜题和秘密的 3D 世界&#xff01; 游戏介绍 田小班和他的家人们正在享受悠闲的欧洲假期。值此之际&#xff0c;邪恶的骇尸唤醒了四个神秘水晶&#xff…

数字化消费新趋势:跨境电商如何满足未来消费者需求?

在数字化浪潮的推动下&#xff0c;全球消费者的行为和期望正在发生根本性的变化。跨境电商作为连接全球的桥梁&#xff0c;不仅促进了商品的自由流通&#xff0c;更需迎接未来数字化消费的新趋势。本文将深入探讨未来数字化消费的趋势&#xff0c;以及跨境电商如何有效满足这些…

Halcon3D篇-深度图与halcon模型互转

关于3D相机采图部分&#xff0c;可以参考我们LMISDK的二次开发程序&#xff1a; https://blog.csdn.net/m0_51559565/article/details/134404394 一&#xff1a;读取彩色3D融合图进行转化模型 *读取3通道彩色融合图 read_image (Image, E:/UpperComputer/3D检测/3D平面度检测…

Eureka服务注册与发现中心

简介 Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理 在传统的RPC远程调用框架中&#xff0c;管理每个服务与服务之间依赖关系比较复杂&#xff0c;管理比较复杂&#xff0c;所以需要使用服务治理&#xff0c;管理服务于服务之间依赖关系&#xff0c;可以实现…

element中Tree 树形控件实现节点过滤和懒加载节点

目录 1.代码实现2. 效果图3. 使用到的部分属性说明4. 更多属性配置查看element官网 1.代码实现 <template><div class"TreePage"><el-row :gutter"20"><!--村数据--><el-col :span"24"><div class"head-…

LobeChat:搭建你的私人 GPT!

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello&#xff0c;大家好&#xff0c;我是 Sunday。 之前有同学问我&#xff1a;“老师&#xff0c;我想要搭建一个个人的 …

学习Java中的数据结构及API这一篇就够了

Java中的数据结构及API 1. 线性表1-1. 顺序表Array数组ArrayList集合 1-2. 链表自定义链表LinkedList 2. 队列2-1. ArrayDeque2-2. LinkedList2-3. 区别 3. 栈3-1. ArrayDeque3-2. LinkedList 4. 树4-1. 二叉树定义 5. 图5-1. 图定义 1. 线性表 1-1. 顺序表 顺序表是指用一组…

数据库(五)数据库设计 | 实体关系模型ER model 映射基数 弱实体集 实体关系设计

文章目录 1 实体关系模型 ER模型ER model1.1 E-R模型结构1.1.1 实体和实体集1.1.2 属性1.1.3 关系集合 1.2 ER关系图绘制1.2.1 实体集绘制1.2.2 关系集绘制 2 映射基数 Mapping Cardinalities2.1 映射基数类型2.1.1 一对一2.1.2 一对多2.1.3 多对一2.1.4 多对多 2.2 全部或部分…

stable diffusion WebUI基础-安装

电脑配置要求 N卡显存6G起(建议直接上12G)内存建议16G,8G也可固态盘500G以上CPU i5即可魔法上网虚拟环境安装python 我非常不建议直接在自己的电脑里直接装python,因为现在很多项目的环境比较乱,对于stable diffusion 尽可能有一个干净的python 环境最好,所以我推荐使用mi…

SpingBoot的项目实战--模拟电商【3.购物车模块】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.功能需求 二.代码编写 …

国内的数据安全与隐私保护现状如何?

在过去的几年中&#xff0c;中国已经采取了一系列的措施来应对数据安全和隐私保护的挑战。 法律法规 中国已经出台了一系列的法律法规来保护数据安全和隐私。例如&#xff0c;《中华人民共和国数据安全法》和《中华人民共和国个人信息保护法》等法律已经在2021年颁布施行。此外…

在pbootcms中制作静态化的TAG标签列表

如果你使用pbootcms来管理你的网站&#xff0c;你可能会遇到这样的需求&#xff1a;将TAG标签列表改成静态化的类似于栏目结构的需求。下面是实现这个需求的步骤。 步骤1 修改PHP文件 打开 apps/home/controller/ParserController.php 并找到大约在1852行左右的代码段&#x…

数据库02-06 形式化

01. 03. 04. 05. 06. 07. 08. 09.

网页爬虫对于网络安全有哪些影响?

在当今信息爆炸的时代&#xff0c;网络已经成为人们获取信息、交流思想和开展业务的重要平台。然而&#xff0c;随着网络的普及和技术的不断发展&#xff0c;网络安全问题也日益凸显&#xff0c;其中网页爬虫对网络安全的影响不容忽视。本文将就网页爬虫对网络安全的影响进行深…

odoo模型钩子函数,启动odoo执行自定义代码

在odoo的models模型基类中定义了这样一个方法_register_hook, 从方法的备注(表单注册以后执行的代码)可以看出这个方法的作用, 所以当我们想在odoo启动以后执行一些代码 比如队列监听等等事情的时候,就可以利用这个方法执行我们的代码 示例: class ModelName(models.Model):…

《动手学深度学习》学习笔记 第7章 现代卷积神经网络

本系列为《动手学深度学习》学习笔记 书籍链接&#xff1a;动手学深度学习 笔记是从第四章开始&#xff0c;前面三章为基础知识&#xff0c;有需要的可以自己去看看 关于本系列笔记&#xff1a; 书里为了让读者更好的理解&#xff0c;有大篇幅的描述性的文字&#xff0c;内容很…

用PHP搭建一个绘画API

【腾讯云AI绘画】用PHP搭建一个绘画API 大家好&#xff01;今天我要给大家推荐的是如何用PHP搭建一个绘画API&#xff0c;让你的网站或应用瞬间拥有强大的绘画能力&#xff01;无论你是想要让用户在网页上绘制自己的创意&#xff0c;还是想要实现自动绘画生成特效&#xff0c;这…