前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >当模型预测控制遇见机器学习

当模型预测控制遇见机器学习

原创
作者头像
深蓝学院
修改于 2020-12-03 10:05:07
修改于 2020-12-03 10:05:07
3.5K1
举报

喻超 深蓝学院

作者简介:

作者喻超,加拿大滑铁卢大学在读博士,主要研究方向:基于机器学习的模型预测控制技术,及其在车辆动力学、自动驾驶规划和控制领域的应用,硕士毕业于上海交通大学,拥有8年电动汽车控制系统开发工作经验,曾担任上汽通用汽车电气化控制架构开发经理,美国通用汽车高级控制系统工程师。

最近几年,人工智能和机器学习受到了各行各业的热捧,已经不再是计算机科学系(CS)的“专利”,甚至连我这个传统的机械工程系(ME)研究生都跑来凑了个热闹。本文将不使用任何让人敬而远之的公式,试图通过自然语言深入浅出的讨论,当模型预测控制遇见机器学习,它们会擦出怎样的思想火花。

一、模型预测控制原理及应用

凡学过自动控制原理的学生,或者从事控制系统开发工作的工程师应该对于PID(比例Proportional-积分Integral-微分Derivative)这种最为古老和成功的控制方法并不陌生,而对于MPC(模型Model-预测Predictive-控制Control)这种新兴的强大的控制技术可能并不很熟悉。

国际自动控制联合会(英文缩写IFAC)每三年召开一次的世界大会是自动控制领域公认的顶级学术会议,其在2014年发布的一项调查报告显示,PID仍然是在工业领域具有最大影响力的控制技术,紧随其后的就是MPC。

图1. 影响工业界的控制技术

(来源: Tariq Samad, A Survey on Industry Impact and Challenges Thereof)

PID和MPC控制的共同之处在于其目的都是通过控制执行器,例如电机,阀门等,使被控对象,如汽车,化学反应器等,跟随一种期望的行为轨迹。

其不同之处在于,如图所示,PID控制器使用通过传感器采集到的被控对象当前的和过去的状态来控制执行器动作,而MPC控制器基于被控对象当前的状态,利用控制器内部简化的被控对象物理模型来预测被控对象在接下来一段时间内,一系列执行器动作作用下的行为轨迹。

进而通过优化工具搜索到能实现对期望轨迹最优跟随效果的一系列执行器动作,然后只将第一步动作施加在被控对象上,被控对象执行完毕后再次反馈其当前的状态给MPC控制器,以重复这个控制过程。

两种方法各有优劣,PID控制方法简单,工程实现容易,但存在超调问题,而且难以胜任多个输入和输出(Multi-Input and Multi-Output,简称MIMO)的复杂控制系统的多目标受限优化问题;MPC理论上可以实现最优的控制性能,并且可以轻松应对MIMO系统的挑战,但其性能非常依赖预测模型的精度。

图2. PID控制与MPC控制效果的差别

(来源: Ylva Lindberg, A Comparison Between MPC and PID Controllers)

图3. MPC控制原理示意

(来源: Melda Ulusoy, Understanding Model Predictive Control)

学术界的读者通常比较关心某个技术的理论和原理,而工业界的读者可能更加关心这种技术的量产应用。相比PID这种已经在产品控制器中大量使用的控制技术,MPC的量产应用,特别是在我所熟悉的汽车领域可以说还处在早期阶段。

这与MPC控制技术的研究起步较晚,技术门槛较高,以及量产控制器出于成本考虑所用芯片较为有限的计算能力和存储资源有关。

令人振奋的是,通用汽车(GM)与ODYS公司合作,在2018年将MPC技术成功的应用到了GM 的量产控制器,用于发动机扭矩控制和变速箱速比控制,并取得了不错的节油效果。

这是MPC在汽车工业界的第一次量产应用,感兴趣的读者可以阅读GM 和 ODYS 在SAE上联合发表的文章。另外,在百度Apollo开源自动驾驶平台上,MPC被用于百度自动驾驶车辆的路径跟踪控制。感兴趣的读者可以在百度Apollo的网站上观看相关培训视频和下载MPC代码学习。

因此,总体而言,虽然MPC在汽车工业量产的应用案例还不多,但随着芯片技术的飞速发展,可以预见未来会有越来越多的基于MPC的产品控制器落地。

图4. MPC 用于GM量产发动机控制器扭矩控制和变速箱控制器速比控制

(来源: Alberto Bemporad, Supervisory Model Predictive Control of a Powertrain with a Continuously Variable Transmission)

图5. MPC用于百度Apollo自动驾驶车辆路径跟踪控制

(来源: Qi Luo, An Automated Learning-Based Procedure for Large-scale Vehicle Dynamics Modeling on Baidu Apollo Platform)

二、浅谈机器学习技术

在过去的几年,机器学习技术在不同的应用领域取得了巨大的成功,这主要归功于大量可获取的数据,更加高效的算法,以及越来越强大的传感器、芯片和通讯技术。机器学习(ML)是人工智能(AI)的一个分支,也是实现AI的一个途径。大家可以在书籍或网上找到很多关于ML的定义。

我从工程系统的角度理解,用一句话解释,那就是ML是利用数学(例如概率论)将工程系统的历史数据(Data)转换为数字(Numbers),并从中找出系统的行为模式(Patterns),以对其未来的行为进行预测(Prediction)。

如果只用一个词解释,那就是预测(Prediction)。ML跟MPC一样,都是预测,只不过ML的预测是基于数据(Data-based),而MPC的预测是基于物理模型(Model-based or Physics-based)。

机器学习方法可以分为如下几种类别:

监督学习:从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求是包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注的。常见的监督学习算法包括回归分析和统计分类。

无监督学习:与监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有生成对抗网络(GAN)、聚类。

迁移学习:专注于存储已有问题的解决模型,并将其利用在其他不同但相关问题上。比如说,用来辨识汽车的知识也可以被用来提升识别卡车的能力。

强化学习机器为了达成目标,随着环境的变动,而逐步调整其行为,并评估每一个行动之后所到的回馈是正向的或负向的。

图6. ML方法及问题分类

(来源: Daniel Bourke, Introducing the 2020 Machine Learning Roadmap)

这些ML的基础知识并非本文讨论的重点,仅作为接下来要讨论的内容的铺垫。

2020年9月份,计算机科学领域的世界知名学者、加州大学洛杉矶分校计算机科学教授朱松纯,以国家战略科学家的身份回国并任教清华大学自动化系。我读过他在2017年写的一篇很有意思的科普文章,中文题目为《人工智能的现状、任务、构架与统一》,英文题目为“AI:The Era of Big Integration”。

在这篇文章里,首先讲了一个“聪明的乌鸦”的故事来启示读者,然后科普了AI涉及到的六大学科的前沿问题,包括计算机视觉、自然语言理解与交流、认知与推理、机器人学、博弈与伦理以及机器学习,最后总结了一个很有意思的观点,在此先按下不表。

让我们先看看这只乌鸦是何等聪明。事实上,这是日本东北大学的一项研究,图a是一只乌鸦,它找到了一个坚果,然而砸碎坚果吃到果肉超出了它自己的物理动作能力。于是,它想到一个办法,那就是飞到高处,然后把坚果丢到地面上,试图砸开果壳。

这是在利用坚果自身的重力势能砸碎果壳。很可惜,这个办法不行(图b)。于是,它通过观察,又想到另一个办法,那就是飞到马路上的斑马线上空,然后把坚果丢到斑马线上让汽车轧过去。这其实是在利用汽车的重量轧碎果壳。这个方法成功了(图c和图d)。

生物都有趋利避害的本能,乌鸦知道如果在车辆穿过斑马线时去吃果肉,自己很可能会被轧死。但它观察到一个现象,那就是当允许行人通行的指示灯亮起时(图e),汽车都会停在斑马线前方。于是它选择在这个时候飞到斑马线上,安全的吃到了果肉(图f)。

我们不难发现,在这个过程中,乌鸦巧妙的利用了物理学中的重力。

朱松纯教授认为,物理学往往把生物智能排除在研究之外,而人工智能也很少关注物理学,但两者本质上是相通的:当你有了一个概率分布,你就有了势能函数,然后就有了相互作用,也就是力和场。

因此,他认为人工智能本质上必将是以牛顿和达尔文为代表的物理学和进化论两大理论的统一。

图7. 牛顿(物理学)和达尔文(进化论)

(来源: Song-Chun Zhu, AI: The Era of Big Integration)

图8. 牛顿和达尔文

(来源: Song-Chun Zhu, AI: The Era of Big Integration)

三、基于机器学习的模型预测控制

写到这里,终于可以毫无违和感的引出本文的主题——基于机器学习的模型预测控制,英文名为Learning-based MPC。

前面讲了传统的MPC是在控制器内部基于牛顿力学搭建了一个简化的被控对象物理模型以用于预测,并基于预测,在一定的约束条件下搜索最优的控制解。通过合理的设置约束条件,MPC可以确保控制行为的安全性(Safety Guarantees)。

然而,这种控制方法的性能(Performance)非常依赖于物理模型的精度。为了提高控制性能,通常的做法是搭建更加复杂的物理模型,或者使用非线性的优化求解器。

这些做法面临几大挑战,一是难以通过物理学方法(例如牛顿力学)对越来越复杂的工程系统(例如自动驾驶)进行足够精确的建模,特别是当被控对象的运行环境存在较大不确定性;

另一方面,过于复杂的物理模型和非线性优化必然带来过高的计算负荷和存储需求,导致这种方法通常止步于计算机仿真和实验室用于学术研究的高性能控制器,难以进一步走向能大规模量产的低成本控制器;

此外,传统的MPC控制是不具有进化能力的,其物理模型和控制参数并不会随被控对象和运行环境的变化(例如产品的老化)做出自适应的调整。

ML是基于数据来进行预测,随着有效数据的积累,理论上ML的预测能力可以持续的进化。

ML也存在一些问题,一是其预测性能非常依赖于训练数据的数量,然而,在很多的应用领域难以获取大量有效的训练数据,这就极大的限制了ML的应用。

另一方面,很多的ML方法(例如深度神经网络DNN)被视为黑盒子,其预测性能难以被解释。还有很重要的一点,一旦学习失败,ML通常难以保证安全(No Safety Guarantees),这种失效对于很多安全性要求比较高(Safety Critical)的工程应用是难以接受的。

基于上述讨论不难看出,MPC的不足刚好是ML的优势,而ML的不足又刚好是MPC的优势。

因此,加州大学伯克利分校的学者在2012年首次提出了一种基于机器学习的模型预测控制方法,把MPC和ML两种技术完美的结合起来,并通过理论和试验证明了该方法的安全性,以及比传统MPC更优的控制性能。这种新的方法的提出如同打开了一扇门,让牛顿和达尔文走到了一起。

从此之后,越来越多的学者开始研究这种新的控制方法,设计出了不同的变种,并探索了不同的ML方法(如回归,强化学习,深度学习等)在MPC控制问题上的应用。

我在今年7月份参加了IFAC 2020国际会议(自动控制领域的顶级会议)。在该会议上,Alberto Bemporad 教授受邀做了题为Machine Learning: A New ICE (Identification, Control, Estimation) Age 的主题报告。

Alberto Bemporad 是意大利Lucca IMT先进技术研究院的教授,MATLAB MPC 工具箱的作者,MPC研究领域的专家,同时也是上文提到的是与GM合作率先实现MPC控制技术在汽车工业量产应用的ODYS公司的创始人。

Alberto Bemporad 教授的报告内容非常精彩,受限于篇幅,我这里只引用其中两页纸并略作解释。

在第一页报告里,Bemporad教授认为ML可以在三个方面赋能MPC,分别是:

1)利用ML算法(例如非线性回归)从数据中学习预测模型,以提高预测模型的精度,进而实现更优的控制;

2)利用ML算法(例如强化学习)从数据中直接学习并生成MPC控制策略,以及MPC控制参数标定;

3)利用ML算法(例如深度神经网络)从数据中学习和重构不可直接测量,而需要估计的MPC控制所需的状态量。

在总结报告中,Bemporad教授认为ML和MPC的结合会产生“化学反应”,并会极大的提高控制系统的设计和开发水平,同时指出单独使用ML搭建的黑盒模型(例如DNN)不能替代自动控制技术,因此应尽量使用灰盒模型(即ML+MPC)以实现可解释的最优性能,同时确保控制系统的稳定性和安全性。

感兴趣的读者可以阅读Bemporad 教授发表的一系列文章。朱松纯教授和Alberto Bemporad 教授,一位是ML领域的知名学者,一位是MPC领域的顶级专家,他们的观点居然不谋而合,何其妙哉!

图9. ML如何赋能MPC

(Source: Alberto Bemporad, Presentation at IFAC 2020)

图10. 当MPC遇到ML

(Source: Alberto Bemporad, Presentation at IFAC 2020)

四、总结

本文首先介绍了模型预测控制技术(MPC)的原理,及其在汽车控制领域的应用。

然后简要的谈了谈机器学习技术(ML)的基本概念,引用了全球著名的人工智能专家朱松纯教授的科普文章中“聪明的乌鸦”的故事,并借用他的观点“人工智能本质上必将是达尔文与牛顿为代表的两大理论的统一”引出了本文重点讨论的基于机器学习的模型预测控制技术(Learning-based MPC)这一前沿的技术方向。

最后结合MPC领域专家Alberto Bemporad 教授在IFAC 2020国际会议上的报告,讨论了ML将如何赋能MPC。

受限于篇幅,本文没有展开讨论Learning-based MPC技术及其研究进展。

本文来自作者喻超的投稿文章,作者承诺文章为原创文章,如文章有任何版权问题请及时联系我们,我们会第一时间处理。

深蓝学院诚邀大家投稿,为人工智能贡献自己的一份力量!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
怎么联系你
怎么联系你
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
TienChin 活动管理-添加活动页面
直接将原有的 index.vue 的全部内容替换成下面的,这里先替换,我只是补齐文档,后面新模块开发我会一步一步进行记录起来:
程序员NEO
2023/10/12
6650
猿实战08——属性库实现之属性关系绑定
属性和属性值,看上去很不起眼,数据粒度也很小,但是正式因为数据粒度小,灵活多变,组织得当可以强有力的区分千变万化的商品。
山旮旯的胖子
2020/09/05
8800
猿实战08——属性库实现之属性关系绑定
TienChin 活动管理-活动列表展示
程序员NEO
2023/10/12
5510
TienChin 活动管理-活动列表展示
vue2.0+Element-ui实战案例
我们将会选择使用一些 vue 周边的库vue-cli, vue-router,axios,moment,Element-ui搭建一个前端项目案例,后端数据接口,会使用json-server快速搭建一个本地的服务,方便对数据的增删改查,
小周sir
2019/09/23
2.3K0
vue2.0+Element-ui实战案例
基于HTML+CSS+JavaScript角色后台管理系统设计毕业论文源码
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工程师
IT司马青衫
2022/08/16
1.2K0
基于HTML+CSS+JavaScript角色后台管理系统设计毕业论文源码
ElementUI Dialog 对话框,组件之间传值
Dialog 组件的内容可以是任意的,甚至可以是表格或表单,下面是应用了 Element Table 和 Form 组件的两个样例。
py3study
2021/01/29
4.9K0
手把手教你实现一个Vue无限级联树形表格(增删改)
平时我们可能在做项目时,会遇到一个业务逻辑。实现一个无限级联树形表格,什么叫做无限级联树形表格呢?就是下图所展示的内容,有一个祖元素,然后下面可能有很多子孙元素,你可以实现添加、编辑、删除这样几个功能。
马克社区
2022/05/11
1.6K0
el-table 多表格弹窗嵌套数据显示异常错乱问题
使用vue+element开发报表功能时,需要列表上某列的超链接按钮弹窗展示,在弹窗的el-table列表某列中再次使用超链接按钮点开弹窗,以此类推多表格弹窗嵌套,本文以弹窗两次为例 最终效果如下示例页面
GoodTime
2024/03/05
3230
el-table 多表格弹窗嵌套数据显示异常错乱问题
vue的修饰符!sync和el-dialog弹窗组件
父组件 index.vue: <template> <info :value="myValue" @valueChanged="e => myValue = e"></info> </template> <script> inport info from './info.vue'; export default { components: { info, }, data() { return {
leader755
2022/03/09
7830
微服务项目:尚融宝(42)(核心业务流程:借款额度审批(2))
创建 src/views/core/borrow-info/detail.vue 
一个风轻云淡
2022/11/15
3870
微服务项目:尚融宝(42)(核心业务流程:借款额度审批(2))
实现表格行的拖拽以及分页
在做一些后台管理系统时,表格的数据信息展示是很常见的需求,而对应的都是一些增删改查的操作
itclanCoder
2021/12/06
3.1K0
实现表格行的拖拽以及分页
猿实战13——实现你没听说过的前台类目
上几个章节,猿人君教会了你实现了属性/属性值和后台类目的绑定关系,今天,猿人君就带你来实现前台类目。
山旮旯的胖子
2020/09/23
6720
猿实战13——实现你没听说过的前台类目
Vue电商实践项目(二)
1.实现后台首页的基本布局 2.实现左侧菜单栏 3.实现用户列表展示 4.实现添加用户
用户6808043
2022/02/24
5.1K0
vue表格分页以及增删改查的实际应用
效果 1:表格以及分页 2:增加一条数据 3:删除一条数据 4:修改一条数据 5:查询一条数据 实例: <template> <div class="tab-container"> <d
王小婷
2021/03/17
1.9K0
TienChin-课程管理-添加课程页面
这个 index.vue 是 course 文件夹下面的 index.vue 别弄错了。
程序员NEO
2023/10/12
2200
Vue + Element ui 实现动态表单,包括新增行/删除行/动态表单验证/提交功能
最近通过Vue + Element ui实现了动态表单功能,该功能还包括了动态表单新增行、删除行、动态表单验证、动态表单提交功能,趁热打铁,将开发心得记录下来,方便以后再遇到类似功能时,直接拿来应用。
朱季谦
2023/07/21
6.4K0
Vue + Element ui 实现动态表单,包括新增行/删除行/动态表单验证/提交功能
vue3+element-plus 表格table实现树状结构父子级互不影响
用户5899361
2024/01/31
1.1K0
element ui 图片上传封装多张或单张
最近写了一个后台管理项目,发现每个后台项目都离不开上传图片,决定把上传图片做个封装,话不多说直接上代码!
前端小白@阿强
2020/08/11
2.4K0
手把手教你实现一个Vue无限级联树形表格(增删改)
平时我们可能在做项目时,会遇到一个业务逻辑。实现一个无限级联树形表格,什么叫做无限级联树形表格呢?就是下图所展示的内容,有一个祖元素,然后下面可能有很多子孙元素,你可以实现添加、编辑、删除这样几个功能。
Vam的金豆之路
2021/12/01
5880
手把手教你实现一个Vue无限级联树形表格(增删改)
不需要web服务器,如何构建一个可以内部跨域的http服务(Vue+Flask)
前端把需要测试的接口地址,报文通过axios 发送给后端Flask服务,Flask服务通过 requests 模块实现测试
山河已无恙
2023/03/02
8560
推荐阅读
相关推荐
TienChin 活动管理-添加活动页面
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档