来自系列:了解模型预测控制
Mathworks Melda Ulusoy
本视频从提供快速应用程序实现MPC的快速技巧开始。为了降低MPC计算的复杂性,您可以尝试使用模型降阶技术,使用更短的预测和控制范围,减少约束的数量,并使用较低精度的数据表示和操作。
如果您需要进一步减少快速应用程序的采样时间,您可以使用显式MPC或SubOltiMal解决方案。通过使用脱机预先计算的最佳解决方案,显式MPC比传统MPC更少的运行时间计算。万博 尤文图斯通过在迭代次数超过指定的最大值后,可以保证MPC控制器的最坏情况执行时间。
在这个视频中,我们将讨论加快MPC运行速度的实现技巧。我们将继续使用上个视频中的煎饼比喻。让人们吃煎饼是一个复杂的过程。你需要准备好配料,做好煎饼,并在顾客失去耐心之前迅速上桌。另一个挑战是,你的餐厅里存放所有这些食材的空间有限。
同样,MPC在计算上也很复杂。其中一个原因是模型预测控制在每个时间步长都解决了一个在线优化问题。MPC问题是一个试图最小化二次代价函数的QP问题。MPC计算随着时间的推移变得越来越复杂状态数,约束,控制的长度和预测视野。如果MPC控制器在大型服务器上运行,则具有缓慢动态的应用程序,例如在过程行业中,那么计算复杂性不应该是一个大问题。但是,假设您要将MPC算法部署到自主车辆的ECU。然后,需要在毫秒的顺序中在小的采样间隔内解决优化问题。另一个挑战是您的嵌入式硬件的内存有限。需要存储用于MPC计算的矩阵随着优化变量的数量越来越多地增长,但您需要确保不耗尽内存。
有什么方法可以提高吞吐量并降低内存使用量?对于煎饼的例子,如果有成分对味道没有贡献,但需要花费大量时间准备,你可以从食谱中删除它们。这将减少准备和服务时间,并更容易将所有成分存储在有限空间中。类似地,为了降低MPC的复杂性和计算时间,您可以尝试应用用于丢弃不会有助于系统动态的状态的模型顺序减少技术。这也有助于减少控制器的内存占用空间。您可以尝试处理吞吐量和内存的其他事情是使用更短的控制和预测地平线,减少约束的数量,并使用低精度操作和用于实现MPC的数据表示。
您可以尝试这些快速技巧,以较小的示例时间为应用程序实现MPC。但是,如果您需要用更小的样本时间来控制系统,那么您可以尝试使用显式MPC。显式MPC的煎饼类比如下。每次做煎饼时,你可以使用预先准备好的煎饼粉,而不是把所有的材料都混合在一起,这样可以让你做得更快。显式MPC不是在线解决当前状态的优化问题,而是离线解决给定范围内的所有状态。对于给定范围内的每个x值,显式MPC预先计算出最优解。结果表明,这个解是由在x上分段仿射连续的线性函数组成的。任意约束将解空间切割成区域,每个区域映射成唯一的最优解。将这个想法扩展到两国体系会是这样的。离线计算最优解后,MPC在线所做的就是找到当前状态所在的区域,并评估线性函数来创建当前控制动作。将迭代优化过程简化为线性函数计算大大简化了运行时计算。 So, explicit MPC can be deployed for applications with a very small sample time.
预先制作的混合很棒,但如果你有各种各样的味道,那么找到你正在寻找的味道需要时间。并且对于每个不同的调味组合,您将需要有限的存储空间。类似地,如果存在许多区域,则搜索当前状态所在的区域可能是耗时的。而且,存储所有这些区域需要大的存储器占地面积。通过将它们合并在一起,有技术可以减少区域的数量。但是,在这种情况下,解决方案不再最佳。
更快地运行MPC的另一种方法是使用次优解决方案。回到煎饼类比:服务时间可以大大改变,基于板材装饰的幻想。不想等待长时间的客户可以从菜单中选择基本的煎饼选项。其他人更耐心,可以等待更长时间可以使用鸽友的选择。在MPC问题中,找到最佳解决方案的迭代次数是完全不可预测的,并且可以从一次步骤到另一个时间从一个时间变化。在最坏的情况下,计算时间可能超过控制器采样时间。但是,您希望确保在示例中找到解决方案,并且甚至还有一些需要在硬件上执行的其他任务的额外时间。要处理此问题,您可以确定优化迭代次数的最大值。此示例演示了解最佳解决方案需要10个迭代。但是,由于最大迭代次数设置为5,因此当达到5时,控制器停止优化并使用该迭代中的子优化解决方案。 Note that this is a suboptimal solution, but it still satisfies all the constraints of the optimization problem. To determine the maximum number of iterations, you can test your algorithm on your hardware and identify the execution time used by each iteration. Assuming that each iteration takes a similar execution time, you can choose the maximum number of iterations such that the total execution time does not exceed the controller sample time.
总之,运行MPC更快,您可以先尝试这些快速提示,看看它们是否适用于系统。对于具有非常小的采样时间的快速应用程序,您可以使用显式MPC,这通过预先计算脱机最佳解决方案来大大降低运行时计算。增加吞吐量并保证MPC控制器的最坏情况执行时间的另一种选择是使用SubOltimal解决方案。
在下一个视频中,我们将在Simulink中使用自主车辆转向系统示例,以演示如何使用MPC Designer应用程序设计MPC控制器。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。