当前位置: 首页 > news >正文

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

本笔记来自北航诸兵老师的课程
课程地址:模型预测控制(2022春)lecture 1-1 Unconstrained MPC

文章目录

  • 0 MPC 简介
    • 0.1 案例引入
    • 0.2 系统模型
    • 0.3 MPC的优点
    • 0.4 MPC的缺点
    • 0.5 MPC的未来
  • 1 详细介绍

0 MPC 简介

0.1 案例引入

MPC(Model Predictive Control)模型预测控制,是预测控制的一种,是基于模型来进行控制的。
老师举了下面这个例子来引入MPC的基本思想:

比方说我们为未来的一段时间制定计划,一天中几点到几点该做什么。但是计划赶不上变化,出现变化,出现拖延,计划就得做相应的调整。过了一段时间,根据计划的实际落实情况,再对接下来的计划进行调整。如此往复。不断地执行计划,也不断地修订计划。

0.2 系统模型

在控制系统中,有惯用表示:输入记作 u u u,状态变量记作 x x x,输出记作 y y y
假设系统是离散的,系统的状态方程为:
x ( k + 1 ) = f ( x ( k ) , u ( k ) ) x(k+1)=f(x(k),u(k)) x(k+1)=f(x(k),u(k))

实际上系统可以是,线性的或非线性的,连续的或离散的或既包含连续又包含离散的,确定的或随机的,只要满足该方程即可

设当前时刻为 k k k,当前状态为 x ( k ) x(k) x(k)
在输入 u ( k ) u(k) u(k) 的作用下,系统的状态将由 x ( k ) x(k) x(k) 变为 x ( k + 1 ) x(k+1) x(k+1)
在输入 u ( k + 1 ) u(k+1) u(k+1) 的作用下,系统的状态将由 x ( k + 1 ) x(k+1) x(k+1) 变为 x ( k + 2 ) x(k+2) x(k+2)
在输入 u ( k + 2 ) u(k+2) u(k+2) 的作用下,系统的状态将由 x ( k + 2 ) x(k+2) x(k+2) 变为 x ( k + 3 ) x(k+3) x(k+3)

由上面的列举,知:输入序列➡️输出序列
但在此时,也就是时刻 k k k ,我们并不知道输入序列 { u ( k ) , u ( k + 1 ) , u ( k + 2 ) , ⋯ } \{u(k),u(k+1),u(k+2),\cdots\} {u(k),u(k+1),u(k+2),} 是多少

自然而然就会想到一个问题——怎么确定输入序列?
答:通过优化的方式,Optimization
状态序列 记为 X ( k ) X(k) X(k)
输入序列 记为 U ( k ) U(k) U(k)
输入序列的求解,可用如下优化问题的公式来描述:
U ∗ ( k ) = a r g m i n ∑ i = k ∞ l ( x ( i ) , u ( i ) ) = { u ∗ ( k ) , u ∗ ( k + 1 ) , … } s . t . x ∈ X , u ∈ U \begin{aligned} U^*(k) &= arg\ min\sum^{\infin}_{i=k}l(x(i),u(i)) \\ &=\{u^*(k),u^*(k+1),\dots\} \\ \\ s.t.\quad &x\in \mathscr{X}, u\in \mathscr {U} \end{aligned} U(k)s.t.=arg mini=kl(x(i),u(i))={u(k),u(k+1),}xX,uU
其中, a r g m i n arg\ min arg min 表示使 **代价函数(目标函数)**取值最小时,输入序列 U ( k ) U(k) U(k) 的取值; ∗ ^* 表示最优解; s . t . s.t. s.t. 表示约束条件; l ( x ( i ) , u ( i ) ) l(x(i),u(i)) l(x(i),u(i)) 称为 “Stage cost”。
u ( k ) = u ∗ ( k ) u(k)=u^*(k) u(k)=u(k) ,舍弃求出的 U ∗ ( k ) U^*(k) U(k) 中后续其他时刻的输入,则由 x ( k + 1 ) = f ( x ( k ) , u ( k ) ) x(k+1) = f(x(k),u(k)) x(k+1)=f(x(k),u(k)) 可以求出时刻 k + 1 k+1 k+1 的状态
接着, k + 1 k+1 k+1 变为当前时刻,重复上述步骤,求出时刻 k + 2 k+2 k+2 的状态 x ( k + 2 ) x(k+2) x(k+2),…
以上就是MPC的基本原理

如果只优化一次,将计算出的 U ( k ) U(k) U(k) 序列依次执行,那么就变成了开环优化;而这里每一时刻优化后都只取 u ∗ ( k ) u^*(k) u(k) 执行( u ∗ ( k ) u^*(k) u(k) x ( k ) x(k) x(k)的函数),并且不断进行优化,构成滚动优化(闭环优化), 因此MPC实际上引入了反馈

0.3 MPC的优点

  • 处理控制输入和系统状态上的约束(Constraints)
    • 约束来源:actuator limits; safety; environmental; economic constraints
    • PID没办法解决约束问题
  • 近似最优控制
    • 与线性系统中的最优控制(LQR, 线性二次型调节器)有区别,在LQR中,我们找到的是最优的增益 k k k(假设,已知系统是线性反馈),MPC找的是 u u u

0.4 MPC的缺点

  • 需要在线优化(online optimization),可能会有较大的计算负载

0.5 MPC的未来

随着计算机算力提升,MPC或替代PID成为工业界控制主流
在这里插入图片描述

1 详细介绍

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

相关文章:

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

本笔记来自北航诸兵老师的课程 课程地址:模型预测控制(2022春)lecture 1-1 Unconstrained MPC 文章目录 0 MPC 简介0.1 案例引入0.2 系统模型0.3 MPC的优点0.4 MPC的缺点0.5 MPC的未来 1 详细介绍 0 MPC 简介 0.1 案例引入 MPC(…...

c语言结构体学习上篇

文章目录 前言一、结构体的声明1,什么叫结构体?2,结构体的类型3,结构体变量的创建和初始化4,结构体的类型5,结构体的初始化 二、结构体的访问1,结构体成员的点操作符访问2,结构体体成员的指针访问 前言 昨…...

Linux: eBPF: bcc-tools:tcpdrop使用需要注意的问题

最近使用bcc-tools的时候注意到,bcc-tools(eBPF相关软件)的使用版本和内核的版本紧密程度非常高。因为要使用内核的函数或者结构体,所以就必须版本一致是必须的,不然会出现下面的警告或者错误: WARNING: tcp_drop() kernel function not found or traceable. The kernel …...

AI:113-基于卷积神经网络的图像风格迁移

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…...

15、Kubernetes核心技术 - 探针

目录 一、概述 二、探针类型 2.1、就绪探针(Readiness Probe) 2.2、存活探针(Liveness Probe) 三、探针探测方法 3.1、exec 3.2、httpGet 3.3、tcpSocket 四、探针配置项 五、探针使用 5.1、就绪探针(Readin…...

GTK4 环境配置

1 安装gtk4包裹: # sudo yum install gtk4 gtk4-devel gtk4-devel-docs devhelp glib2 glib2-devel glib2-doc 2 安装 glade 4 git clone https://github.com/ag-python/cambalache.git 记住 把软件目录 复制到 一个你不会移动删除的地方(千万别删除这个软件文件夹 因为运行…...

Yolov8部署——segmentation部署以及批量推理

Yolov8部署——segmentation部署以及批量推理 参考:在windows上部署Yolov8主要参考下面两个仓库,https://github.com/xunzixunzi/tensorrt-cpp-api和https://github.com/xunzixunzi/YOLOv8-TensorRT-CPP,代码说是适合批量处理,但是代码中是以…...

再见2023,你好2024!

大家好,我是老三,本来今天晚上打算出去转一转,陆家嘴打车实在太艰难了,一公里多的路,司机走了四十分钟,还没到,再加上身体不适,咳嗽地比较厉害,所以还是宅在酒店里&#…...

【计算机毕业设计】SSM二手交易网站

项目介绍 该项目分为前后台,前台普通用户角色,后台管理员角色。 管理员主要功能如下: 登陆,商品分类管理,商品管理,商品订单管理,用户管理等功能。 用户角色主要功能如下: 包含以下功能:查看所有商品,用户登陆注册…...

纠删码ReedSolomon

随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用。为了数据的可靠性,HDFS通过多副本机制来保证。在HDFS中的每一份数据都有两个副本,1TB的原始数据需要占用3TB的磁盘空间,存储利用率只有1/3。而且系统中大部分…...

C++音视频开发技巧汇总(持续更新)

1.录制PCM数据 有时候我们需要录制PCM数据到文件以测试录制数据是否正确,一般可以使用以下代码实现: FILE *pf; fopen_s(&pf, "rec.pcm", "wb"); fwrite(myPcmArr, 1, outBufferLen, pf); 录制pcm文件后可以使用Audacity来导…...

4462 4.曙曙献爱心

#include<bits/stdc.h> using namespace std; int n,m,k; int a[1001]; int s[1001]; int f[1001][1001];//f[i][j]&#xff0c;i个警察&#xff0c;j个点&#xff0c;能管理的最大人数 int main(){cin>>n>>m>>k;for(int i1;i<n;i){cin>>a[i…...

浅谈命令模式

命令模式是一种行为设计模式&#xff0c;用于将一个请求封装成一个对象&#xff0c;从而使得请求的发送者和接收者解耦&#xff0c;并支持对请求进行参数化、队列化、撤销和重做等操作。 在命令模式中&#xff0c;有一下介个关键角色&#xff1a; Command&#xff08;命令&am…...

软件测试/测试开发丨Python 模块与包

python 模块与包 python 模块 项目目录结构 组成 package包module模块function方法 模块定义 定义 包含python定义和语句的文件.py文件作为脚本运行 导入模块 import 模块名from <模块名> import <方法 | 变量 | 类>from <模块名> import * 注意&a…...

java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业网站系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…...

MAC电脑安装java开发工具

一、安装brew 1.1、官网地址 链接 1.2、更新地址 二、安装 java brew install openjdk11 三、安装gradle Gradle安装与配置教程 - 知乎 四、GIT 4.1、GIT安装 brew install git 4.2、rsa ssh-keygen -t rsa -C "jhestarbucks.com" 五、自动搭建一个springBoot…...

高压继电器,未来几年市场将保持稳定增长

高压继电器是一种用于控制大功率电气设备的开关装置&#xff0c;广泛应用于电力系统、轨道交通、工业自动化等领域。随着各行业对电气控制需求的不断增加&#xff0c;高压继电器市场也在不断扩大。全球高压继电器市场分析&#xff1a; 在全球市场中&#xff0c;目前主要的高压继…...

在Go语言中实现HTTP请求的缓存

大家好&#xff0c;我是你们可爱的编程小助手&#xff0c;今天我们要一起探讨如何使用Go语言实现HTTP请求的缓存。听起来是不是很酷&#xff1f;让我们开始吧&#xff01; 首先&#xff0c;我们要明白什么是缓存。简单来说&#xff0c;缓存就是将数据存储在内存中&#xff0c;…...

技术扫盲:如何优雅的使用 java -jar

java -jar xxx.jar java -jar 是一个用于在命令行界面中执行 Java 可执行 JAR 文件的命令。它的语法如下&#xff1a; java -jar <JAR 文件路径> [参数]其中&#xff1a; java 是 Java 运行时环境的可执行文件。-jar 是一个选项&#xff0c;表示要执行的文件是一个 JA…...

『番外篇七』SwiftUI 获取视图全局位置在 NavigationStack 中失效的解决方法

概览 在 番外篇六』SwiftUI 取得任意视图全局位置的三种方法 这篇博文里,我们详细讨论了在 SwiftUI 中获取任意视图全局坐标的几种方法。 不过,我们也从中提到了某些方法无法适用于 NavigationStack 视图,本篇博文由此应运而生。 在本篇博文种,您将学到如下内容: 概览1.…...

GBASE南大通用 GCDW阿里云计算巢:自动化部署云原生数据仓库

目前&#xff0c;GBASE南大通用已与阿里云计算巢合作&#xff0c;双方融合各自技术优势&#xff0c;助力企业用户实现云上数据仓库的自动化部署&#xff0c;让用户在云端获取数据仓库服务“更简单”&#xff0c;让用户在云端使用数据仓库服务“更便捷”&#xff0c;满足企业用户…...

Docker实战02|Namespace

在上一文《Docker实战01&#xff5c;容器与开发语言》中主要介绍了Docker的基本概念与Docker安装、Go语言安装等实战技巧。 本文继续针对Namespace技术展开讲解并利用Go语言进行实践。 本系列所有代码均已经开源。关公众号回复「Go语言实现Docker」即可获得。 目录 2.1.2 U…...

01-03

利用模板类完成顺序表...

数据可视化与地理空间

写在开头 数据可视化是将数据以图形形式呈现,使其更易于理解和分析的过程。在地理空间分析中,数据可视化不仅能够展示地理位置信息,还能够有效地传达地理空间数据的模式、趋势和关联。本文将探讨数据可视化在地理空间分析中的作用,介绍Python中常用的数据可视化工具,并深…...

【elfboard linux开发板】4. 文件点灯与创建多进程

ps&#xff1a;提升效率的小tips&#xff1a; 灵活运用vim操作命令&#xff0c;gg快速跳转到文件开头&#xff0c;G跳转到结尾 多行操作 ctrl V shift i 插入修改内容 esc退出编辑 sudo vi /etc/vim/vimrc 在文件中添加如下内容省略重复工作&#xff1a; autocmd BufNewFile …...

黑马程序员SSM框架-Maven进阶

视频链接&#xff1a;Maven-01-分模块开发的意义_哔哩哔哩_bilibili 分模块开发与设计 分模块开发意义 分模块开发 依赖管理 依赖传递 依赖传递冲突问题 可以点击红框按钮查看依赖情况。 可选依赖和排除依赖 继承和聚合 聚合 聚合工程开发 继承 聚合和继承的区别 属性 属性…...

MFC综合实验二学习记录

文章目录 虚函数和纯虚函数的区别&#xff1f;MFC中什么是UPDATE_COMMAND_UI 消息如何查看控件对应的成员变量模态对话框的理解HGDIOBJ" 类型的值不能用于初始化 "CBrush *" 类型的实体错误MFC编程中CDC类型和HDC类型有什么区别&#xff1f;关于WIDING和ALTERNA…...

Python 中的运算符介绍(1)

算数运算符 常见的% 、//、/ 用法 赋值运算符 赋值运算&#xff1a;将等号右边赋值给等号左边 常见场景&#xff1a; 比较运算符 代码解析&#xff1a; 逻辑运算符 位运算符&#xff08;了解&#xff09; 三目运算符 身份证运算符 成员运算符...

达梦数据库查询各表数据量/以及达梦更新统计信息

1、达梦数据库查询各表数据量 达梦数据库与开源的MySQL不一样&#xff0c;MySQL查询各表数据量非常简单 而达梦数据库就有一些地方要注意&#xff0c;先用这句去查↓ SELECT table_name, num_rows FROM all_tables WHERE tablespace_name 表空间名; 如果结果如下图一样&…...

Java---- 静态内部类与非静态内部类的区别

在面试中回答的很不全&#xff0c;所以再此做一个总结。 1 static 静态修饰符 在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的。 static修饰表示静态的&#xff0c;在类加载时JVM会把它放到方法区&#xff0c;被本类以及本类中所有实例所公用。在编译后所分…...

建个企业网站还是开个淘宝店/美国最新新闻头条

http://blog.csdn.net/pipisorry/article/details/30311253 C语言的存储类型可分为&#xff1a;extern、auto、static、register。 外部变量定义在函数之外&#xff0c;通过同一个名字对外部变量的所有引用(即使这种引用来自于单独编译的不同函数)&#xff0c;实际上都是引用同…...

做外贸哪个网站可以接单/网址收录平台

1、下载bootstrap https://getbootstrap.com/docs/4.3/getting-started/download/ 2、在项目目录下创建static文件夹&#xff0c;将下载的bootstrap解压到该static下 3、新建html&#xff0c;layout.html,url_for引用bootstrap.css 这里的block为定义模块 <!DOCTYPE html…...

坑梓网站建设咨询/长沙网站制作主要公司

方法一&#xff1a;删除注册表选项&#xff0c;变为评估模式 1.windowR打开管理 2.输入regedit后回车&#xff0c;则就会打开注册表编辑器 3.里面有一个cacaheId然后删掉&#xff0c;果断的删掉&#xff0c;然后重新打开即可 方法二&#xff1a;删除动态库文件 4.找到Beyo…...

WordPress无法显示摘要/优化设计单元测试卷

import matplotlib.pyplot as plt import numpy as npx np.arange(20) y x**2plt.plot(x, y) 在jupyter notebook中使用matplotlib画图出现这个错误&#xff0c;修正方法&#xff1a; sudo pip install matplotlib2.2.0...

28网站制作/推广策略都有哪些

需求&#xff1a;一开始返回顶部图标是隐藏的&#xff0c;当滚动到指定位置的时候&#xff0c;小图标就会显示出来&#xff0c;&#xff0c;点击图标&#xff0c;会缓动的返回顶部 技术点&#xff1a;window.scrollTo(x,y)&#xff0c;浏览器显示区域跳转到指定的坐标 <!DOC…...

阳曲网站建设推荐咨询/免费的seo网站

原文链接&#xff1a;http://blog.csdn.net/only_wan/article/details/52975760 mvn 创建时在generating project in interactive mode卡住了&#xff0c;怎么解决&#xff1f; 从图中可以看出&#xff0c;为啥卡在generating project in interactive mode&#xff0c; 因为请求…...