模型预测控制MPC(1)—— 基础概念

2024-04-15 07:36

本文主要是介绍模型预测控制MPC(1)—— 基础概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 历史沿革
    • 1.1 控制论
    • 1.2 最优控制与强化学习
  • 2. 模型预测控制

1. 历史沿革

  • 我本科做机器人的时候接触过一点控制,主要做了大量 PID 在嵌入式控制系统的应用;硕士期间研究方向是强化学习。在我调研 MPC 的过程中,发现它同时出现在最优控制和强化两个领域的教程中(好像更偏控制一点)。为了更好地理解这些方法在 big picture 中的定位,稍微梳理一下这些学科间的关系是有必要的

1.1 控制论

  • 控制论这一学科起源于 1948 年维纳的著作《控制论》,在这部奠基性质的论著中,维纳将控制论定义为关于在动物和机器中控制与通信的科学

    这里有几个关键词:动物机器控制通信,可见控制论早期是一个非常高层次的学科,它研究的核心问题是非常底层的且本质的,以至于可在多个相差甚远的学科之间共通

  • 控制论的几个核心思想

    • 一切通信和控制系统都包含有信息传输信息处理的过程
    • 控制论研究上具有统计属性。通信和控制系统接收的信息带有某种随机性质并满足一定统计分布,通信和控制系统本身的结构也必须适应这种统计性质,能对一类统计上预期的输入产生出统计上令人满意的动作
    • 信息反馈在控制系统中具有基础性地位
      1. 一个通信系统总能根据人们的需要传输各种不同的思想内容的信息
      2. 一个自动控制系统必须根据周围环境的变化自行调整自己的运动
  • 控制论用抽象的方式揭示了一切控制系统的信息传输和信息处理的特性和规律,研究用不同的控制方式达到不同控制目的可能性和途径,而不涉及具体信号的传输和处理。由于所关注问题的本质性,控制论后续在生物、工程、经济、军事等多个方面得到了进一步研究,发展出当今一系列重要学科

1.2 最优控制与强化学习

  • 工程控制论是控制论的一个重要分支,由钱学森于 1954 年创立的,它是受控工程系统的分析、设计和运行的理论。最优控制又是工程控制论的一个重要分支,它研究如何设计和实现系统的最优控制策略,以在给定约束条件下最大化或最小化某种性能指标

    最优控制的核心思想是通过对系统的数学模型进行建模,将控制问题转化为一个最优化问题,通过求解这个最优化问题来得到最优的控制策略。最优控制方法可以应用于各种动态系统,包括连续时间系统和离散时间系统。

  • 人工智能是计算机科学邻域的一个重要分支,它在多个方面受到控制论的影响和启发,特别是在强化学习这个分支中。主要体现在以下几个方面
    1. 动态系统建模:控制论强调对动态系统的建模和分析,这和强化学习考虑的智能体和环境的动态交互过程是想通的
    2. 状态空间表示:在强化学习中 MDP 状态-动作-奖励的表示方式与控制论中的状态空间表示相似
    3. 控制器设计与优化:在强化学习中涉及到对策略空间的搜索和优化。控制论中的优化技术,如动态规划、模型预测控制等,为强化学习中的策略学习提供了重要的方法和思想。特别是其中模型预测控制(MPC)可以视作一种Model-based类强化学习方法
    4. 稳定性和鲁棒性分析:控制论强调系统的稳定性和鲁棒性分析,这些稳定性分析方法和鲁棒控制思想为强化学习中的算法设计和性能分析提供了重要的参考和借鉴
  • 最后,可以用下图将 MPC 和 Model-based RL 在各学科中的地位呈现出来
    在这里插入图片描述

2. 模型预测控制

  • 模型预测控制(Model predict control, MPC)代表这样一种思想:智能体在交互过程中学习环境的状态转移,仅对环境建模,不对策略显示建模。在每个时刻,MPC 基于当前环境观测,利用环境模型进行多步规划,并选择第一步的动作执行。
    • 从控制角度看,MPC 中 k 时刻的动作决定了 k+1 时刻的观测,这带来了反馈,因此其属于一种闭环控制方法
    • 从强化学习角度看,MPC 学习一个环境模型,然后利用它帮助智能体训练和决策,属于一种 Model-based 方法
  • MPC 的交互过程如下图所示
    在这里插入图片描述
    1. 基于当前环境信息,基于学到的环境模型进行多步预测
    2. 基于某种性能指标,对整条预测轨迹进行优化。这里本质是通过求解约束优化问题来优化动作序列
    3. 执行最优动作序列中的第一个动作
    4. 在下一个时刻重复以上三步,直到环境终止
  • MPC 可以形式化定义如下:在 k k k 时刻,基于初始状态 s k s_k sk 和学到的环境模型 P ^ ( s ′ ∣ s , a ) \hat{P}(s'|s,a) P^(ss,a) 预测并优化动作序列 a k , a k + 1 , . . . a_k, a_{k+1},... ak,ak+1,...,使得预测的多步(设为 H H H 步)轨迹
    τ k : k + H = { s k , a k , s k + 1 , a k + 1 . . . } s . t . s i + 1 ∼ P ^ ( ⋅ ∣ s i , a i ) \tau_{k:k+H} = \{s_k, a_k, s_{k+1}, a_{k+1}...\}\quad s.t. \quad s_{i+1} \sim \hat{P}(·|s_i, a_i) τk:k+H={sk,ak,sk+1,ak+1...}s.t.si+1P^(si,ai) 在性能指标 r ( s , a ) r(s,a) r(s,a) 下的累积和最大,得到最优预测动作序列
    a k : k + H ∗ = arg max ⁡ τ k : k + H ∑ i = k H r ( s i , a i ) = { a k ∗ , a k + 1 ∗ , . . . a k + H ∗ } a^*_{k:k+H} = \argmax_{\tau_{k:k+H}}\sum_{i=k}^H r(s_i, a_i) = \{a_k^*, a_{k+1}^*,...a_{k+H}^*\} ak:k+H=τk:k+Hargmaxi=kHr(si,ai)={ak,ak+1,...ak+H} 然后选择动作序列中的第一个动作 a k ∗ a_k^* ak 执行,接下来在 k + 1 k+1 k+1 时刻重复以上操作得到 a k + 1 ∗ a^*_{k+1} ak+1 执行

    控制领域常用 x x x 表示状态,用 u u u 表示动作,用 l l l 表示性能指标。本文使用偏向强化学习的写法,用 s , a , r s,a,r s,a,r 表示状态观测、动作和奖励函数

  • 从控制角度看
    • MPC 相比其他控制方法的优势
      1. 由于在每一步求解一个(约束)优化问题,可以自然地引入约束(e.g. 动作范围;状态安全性;经济性…)
      2. 每个时刻根据当前状态重新优化轨迹,环境估计良好的前提下可以做到近似的最优控制
    • MPC 相比其他控制方法的劣势
      1. 需要在线求解(约束)优化问题,对于某些系统计算成本较高

这篇关于模型预测控制MPC(1)—— 基础概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/905218

相关文章

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

JavaScript装饰器从基础到实战教程

《JavaScript装饰器从基础到实战教程》装饰器是js中一种声明式语法特性,用于在不修改原始代码的情况下,动态扩展类、方法、属性或参数的行为,本文将从基础概念入手,逐步讲解装饰器的类型、用法、进阶... 目录一、装饰器基础概念1.1 什么是装饰器?1.2 装饰器的语法1.3 装饰器的执行时机二、装饰器的

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

Java领域模型示例详解

《Java领域模型示例详解》本文介绍了Java领域模型(POJO/Entity/VO/DTO/BO)的定义、用途和区别,强调了它们在不同场景下的角色和使用场景,文章还通过一个流程示例展示了各模型如何协... 目录Java领域模型(POJO / Entity / VO/ DTO / BO)一、为什么需要领域模

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事