了解模型预测控制5--如何加速运行MPC

        本节,我们将讨论如何操作以更快地运行MPC。

        我们仍会用到上一篇文章中提到的“煎饼”进行类比,制作煎饼是一个复杂的过程,你需要准备配料、摊煎饼,在客人失去耐心之前赶紧上菜,难点还在于我们必须在有限的空间内存放所有配料。

        同理,在计算领域,MPC也很复杂。一个原因是模型预测控制每步只会处理一种在线优化问题。

 

        MPC问题的产生来源于QP问题的出现,后者强调最小化二次成本函数。MPC算法会随着状态、约束条件、控制长度和预测时域的增多而越发复杂。

 

        如果MPC控制器在大型动态应用服务器上缓慢运行,如工厂流程化作业,那么计算复杂性也不是什么大问题。然而,假设我们想在自动驾驶汽车的ECU上部署MPC算法,那么我们需要在毫秒级的小取样间隔内解决优化问题。另外,嵌入式硬件的内存有限,MPC计算需要存储的矩阵随优化变量数量的增加而快速增长,为此,我们必须确保内存不会耗尽。

 

        哪些方法可以提高通量、减少内存的使用?以煎饼为例,如果某些食材对味道的影响不大但却需要很多时间进行准备,你应果断把其从食谱中将其去掉,这能大大减少备菜和上菜的时间,让所有材料都能轻易地储存在有限的空间内。

 

        同理,为了降低MPC计算的复杂度和时间,你可以尝试“模型降阶”法,舍弃对系统动力没有贡献的状态,这也有助于减少对控制器内存的占用。

 

        此外,为了提高通量、减少内存,我们还可以缩短控制时间和预测范围,减少限制条件的数量或使用更低精度的操作和数据表达来实现MPC。

 

        对于取样时间较短的应用,我们可以采用这些技巧来实现MPC。但是,如果控制系统的取样时间更短,那么可以使用显式MPC以煎饼类比,显式MPC指的是每次摊煎饼时,我们可以用预先配制好的煎饼粉,而不是临时把所有配料混在一起,以节省时间。

 

        显式MPC不是在线为当前状态解决优化问题,而是离线解决既定范围内的所有状态。对于既定范围内的每个x值,显式MPC都能预先算出最优解,这个解由线性函数组成,分段仿射且在x轴上是连续的,任何约束条件能将“解”切割成不同区域,每个区域映射出唯一最优解。

 

        在二态体系中,可以这样理解,离线计算出最优解后,MPC会在线找到当前状态所在的区域,并评估线性函数,以此创建当前控制操作。将迭代优化过程转化为线性函数,大大简化了运行时间计算,因此,可以在非常短的取样时间内,为应用程序部署显式MPC。

 

        预先配制的调料固然很好,但如果你想要其他不同的口味,那就得多花些时间琢磨了,配制不同口味的调料,都需要占用一定的空间。同理,如果有很多区域,搜索当前状态所在的区域可能十分耗时,此外,存储所有区域又需要占用很大的内存,我们可以通过合并区域来减少区域数量,然而,这也不是最优解。

        另一种更快运行MPC的方法是,使用次优解。以煎饼为例,上菜时间会因餐盘装饰的不同而产生很大变化,不想等待太久的顾客,可以选择菜单上的基础款,其他更有耐心、愿意等待更长的时间的人,可以选择豪华款。在MPC问题中,寻找最优解的迭代次数是完全不可预测的,从一个步骤到另一个步骤会发生巨大的变化,在最坏的情形下,计算时间可能超过控制器的取样时间。

 

        然而,我们希望在取样时间内找到解决方案,甚至还有一些空余时间来执行硬件上的其他任务,为了解决这一问题,我们可以确定迭代优化次数的最大值。示例中,我们需要10次迭代才能找到最优解。然而,由于最大迭代次数被设置为5次,当达到5次时,控制器会停止优化并使用该迭代的次优解。注意,尽管是次优解,但仍能满足优化问题的所有约束条件。

 

        如要确定最大迭代次数,可以在硬件上测试算法,确定每次迭代的执行时间。假设每次迭代的执行时间相似,你可以选择最大的迭代次数,前提是总执行时间不超过控制器取样时间。

 

        总之,为了更快地运行MPC, 你可以先尝试这些小技巧,看看它们是否适用于你的系统。对于取样时间极短的快速应用程序而言,我们可以使用显式MPC,通过离线预计算最优解,来大大减少运行时间计算。另外一个提高通量、确保最坏情形下,MPC控制器执行不超时的办法是使用次优解。

 

如果你想了解更多关于模型预测控制的知识,请观看下列视频:

【MPC模型预测控制器】1_最优化控制和基本概念_哔哩哔哩_bilibili

关于如何使用Simulink和模型预测控制工具箱设计MPC控制器请观看下列视频:

【Model Predictive Control】了解模型预测控制,第六部分:如何使用 Simulink 和模型预测控制工具箱设计 MPC 控制器_哔哩哔哩_bilibili

【Model Predictive Control】了解模型预测控制,第七部分:使用 Simulink 和模型预测控制工具箱 - MATLAB&Simulink_哔哩哔哩_bilibili

文章内容的视频地址如下:

【Model Predictive Control】了解模型预测控制,第五部分:如何加速运行 MPC - MATLAB&Simulink_哔哩哔哩_bilibili

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此时@此刻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值