主要内容

模型预测控制是什么?

模型预测控制(MPC)是一种最优控制技术的计算控制行动最小化代价函数的限制在一个有限的动力系统,消退,地平线。

在每个时间步,MPC控制器接收或估计的当前状态。然后计算的顺序控制行动,最大限度地减少成本在地平线通过求解一个约束优化问题,依靠内部植物模型和取决于当前的系统状态。然后控制器适用于植物只有第一个计算控制作用,无视以下的。在接下来的时间步重复过程。

MPC基本控制回路

反馈回路的MPC控制器(组成的一个优化和预测模型)连接到一个工厂。控制器接收到参考信号和植物产量,和输出设备控制动作。

二次成本函数时,植物是线性的,没有约束,地平线趋于无穷时,MPC相当于线性二次调节器(等)控制,或线性二次高斯(LQG)控制如果一个卡尔曼滤波器估计植物状态的输入和输出。

在实践中,尽管有限的地平线,MPC常常继承传统最优控制的许多有用的特征,如自然的能力处理多输入多输出(MIMO)植物,处理时间延迟的能力(可能是不同时间不同的渠道),和内置的健壮性属性建模错误。名义稳定性也可以保证通过使用特定的终端约束。其他额外的重要MPC特点是显式地处理约束的能力和利用信息的可能性将来参考和干扰信号,当可用。

介绍在这个问题上,先看两本书的参考文献部分。控制器内部的解释模型及其估计货币政策委员会预测模型控制器状态估计,分别。优化问题的概述,请参阅优化问题。关于解决的更多信息,请参阅QP解决者

在线解决约束最优控制在每个时间步需要大量的计算资源。然而在某些情况下,如线性约束的植物,你可以预计算和存储控制律在整个状态空间,而不是解决实时优化。这种方法被称为明确政策委员会。

MPC设计工作流

在最简单的情况下(也称为传统或线性,MPC),植物和约束是线性和二次成本函数,一般工作流开发MPC控制器包括以下步骤。

MPC设计工作流7步骤:指定工厂,定义信号类型,创建MPC对象,模拟闭环,细化设计,加快执行和部署控制器

  1. 指定工厂——定义内部植物MPC控制器使用模型预测植物行为预测地平线。通常,您通过线性化非线性植物获得这种植物模型在给定的操作点和指定它作为一个线性时不变对象,如党卫军,特遣部队,zpk。您还可以使用系统辨识工具箱™软件识别植物。注意,一个局限是,植物不能直接引线之间的控制输入和输出。这个步骤的更多信息,请参阅构造线性时不变模型,多输入多输出指定工厂,线性化模型模型金宝app,线性化模型模型使用M金宝appPC设计师,识别工厂的数据

  2. 定义信号类型- MPC设计目的,植物信号通常分为不同的输入和输出类型。你通常使用setmpcsignals指定,在工厂对象定义在前面的步骤中,是否每个植物输出测量或无节制的,是否每个植物输入是一个操纵变量(即控制输入)或测量或不可测量的干扰。此外,您可以指定类型的信号MPC设计师。有关更多信息,请参见MPC信号类型

  3. 创建MPC对象——指定信号类型的工厂对象后,您创建一个货币政策委员会MATLAB的对象®工作区中(或MPC设计师),并指定的对象,如样品时间控制器参数,预测和控制的视野,成本权重函数,约束和干扰模型。下面是概述您需要选择最重要的参数。

    1. 样品时间——一个典型的开始想由设定控制器样品时间,这样10到20个样本覆盖植物的上升时间。

    2. 预测地平线——未来样品的数量超过控制器试图最小化成本。它应该是足够长的时间来捕获瞬态响应和求职的重要动力学系统。长地平线提高性能和计算的要求。一个典型的预测地平线10到20个样本。

    3. 控制地平线——免费的数量控制,控制器使用最小化成本预测地平线。类似于预测地平线,较长的控制地平线提高性能和计算的要求。一个好的经验法则为控制层是设置从10%到20%的预测地平线,至少两到三个步骤。样品时间和地平线上的更多信息,见选择样本时间和视野

    4. 名义值——如果你的植物来自周围的一个非线性模型线性化操作点,一个良好的实践是设置的名义值输入、状态,状态导数(如果非零),和输出。这样做允许您指定约束的实际输入和输出(而不是这样做在偏离他们的名义值),并允许您模拟闭环和可视化信号使用仿真软件时更容易金宝app®或者是sim卡命令。

    5. 规模因素——良好的实践是指定规模因素对于每个工厂的输入和输出,尤其是当他们的范围和大小有很大的不同。适当规模的因素提高底层优化问题的数值条件和简化重调优。一个好的建议是设定一个比例因子近似地等于跨度(最大和最小值之间的差异在工程单位)相关的信号。有关更多信息,请参见指定规模因素

    6. 约束,约束通常反映物理限制。您可以指定约束是硬(优化)不能违反或软(可以在小程度上违反了)。一个好建议是硬约束,如果有必要,在输入或他们的变化率,设置输出约束时,如果有必要,柔软。设置硬约束对输入和输出都可以导致不可行性,一般不推荐。有关更多信息,请参见指定的约束

    7. 权重——你可以优先考虑控制器通过调整成本的性能目标函数优化权重。一般来说,更大的输出权重提供积极的参考跟踪性能,而更大的权重操纵变量利率促进平滑控制行动,提高鲁棒性。有关更多信息,请参见调整权重

    8. 干扰和噪声模型,控制器使用的内部预测模型计算控制动作通常包括植物模型增强模型的干扰和测量噪声的影响。扰动模型指定的动态特性不可测量的干扰输入和输出,分别,所以他们可以更好地拒绝。默认情况下,这些干扰模型是假定为集成商(因此允许控制器拒绝状干扰),除非你指定它们。测量噪声通常被认为是白色的。有关植物的更多信息和干扰模型货币政策委员会预测模型,调整干扰和噪声模型

    在创建了货币政策委员会对象,好的做法是使用等功能cloffset计算闭环稳态输出敏感,因此检查控制器是否可以拒绝恒定输出干扰。更普遍审查也检查对象潜在的问题。进行更深层次的灵敏度和鲁棒性分析的时间框架你期望没有约束是活跃的,你也可以将无约束控制器转换成一个线性时不变系统对象使用党卫军,zpk,或特遣部队。相关的例子,请参阅评估模型预测控制器的稳定性和鲁棒性问题,测试使用MPC设计师MPC控制器的鲁棒性,计算稳态输出灵敏度获得,提取控制器

    注意,许多推荐的参数选择的默认值货币政策委员会对象;然而,由于这些参数通常是几个problem-dependent权衡的结果,你必须为您的特定植物选择有意义的参数和要求。

  4. 模拟闭环——创建一个MPC控制器之后,您通常会评估你的控制器的性能通过模拟闭环和你工厂使用以下选项之一。

    • 使用MATLAB,您可以使用模拟闭环sim卡(线性植物模型更方便)mpcmove(更一般的离散时间更灵活,使植物或扰动信号和一个自定义的状态估计量)。

    • 使用仿真软件金宝app,您可以使用MPC控制器块(这需要你货币政策委员会对象作为参数)与植物模型闭环仿真软件造成的。金宝app这个选项允许最大的灵活性的模拟更复杂的系统和产品代码的易产生你的控制器。

    • 使用MPC设计师,您可以模拟线性闭环响应,同时优化控制器参数。

    注意,这些选项允许您还模拟模型不匹配(实际的情况略有不同的内部植物模型预测控制器使用)。一个相关的例子,看到模拟MPC控制器与植物模型不匹配。当参考和测量干扰提前,MPC可以使用这些信息(也称为预见性或预览)提高控制器的性能。看到信号预览为更多的信息和改善控制性能与预见性(预览)一个相关的例子。类似地,您可以指定优化权重预测地平线和约束不同。相关的例子,请参阅在运行时更新约束,在运行时不同的输入和输出范围,在运行时调整权重,在运行时调整视野

  5. 完善设计——在一个初始评估的闭环通常需要细化设计通过调整控制器参数和评估不同的模拟场景。除了在步骤3中描述的参数,你可以考虑:

  6. 加快执行——看MPC控制器部署

  7. 部署控制器——看MPC控制器部署

控制非线性和时变的植物

通常植物可以精确地近似线性控制只能在本地植物,在一个给定的操作点。这个近似可能不再是准确的变化随着时间的流逝和工厂操作点。

您可以使用几种方法来处理这些情况,从简单的到更一般的和复杂的。

  1. 适应性MPC -如果订单(数量和时间延迟)的植物不会改变,你可以设计一个MPC控制器(例如初始操作点),然后在运行时可以更新控制器预测模型在每个时间步(尽管控制器仍假设预测模型在未来保持不变,在其预测地平线)。

    注意,虽然这种方法是最简单的,它需要你不断的(也就是说,在每个时间步)计算线性化植物,必须提供给控制器。你可以在三个主要方面。

    1. 如果你有一个可靠的植物模型,你可以在网上提取局部线性植物通过线性化方程,假设这个过程并不需要大量的计算。如果你有简单的符号为你们工厂模型方程,可以得出,离线,线性化的一个象征性的表达植物矩阵在任何给定的运行条件。在网上,你可以计算这些矩阵和供应他们自适应MPC控制器无需在每次执行一个数值线性化的步骤。使用这种策略为例,看看自适应MPC控制使用逐次线性化的非线性化学反应器

    2. 或者,您可以提取一组线性化植物模型离线,覆盖相关地区的州输入空间,然后在网上你可以用一个线性变参数(LPV)植物获得,由线性插值工厂当前的操作点。使用这种策略为例,看看自适应MPC控制使用线性变参数系统的非线性化学反应器

    3. 如果工厂没有准确地表示为一个数学模型,但是你可以假设一个已知结构的一些估计参数,稳定,和少量的输入噪声,可以使用过去的植物工厂的输入和输出来估计模型在线,虽然这可以计算密集型。使用这种策略为例,看看自适应MPC控制的非线性化学反应器使用在线估计模型

    这种方法需要一个货币政策委员会对象,要么是mpcmoveAdaptive函数或自适应MPC控制器块。有关更多信息,请参见自适应政策委员会模型更新策略

  2. 线性时变MPC,这种方法是一种自适应的MPC控制器提前知道其内部工厂模式如何改变未来,因此使用这些信息在计算最优控制在预测地平线。在这里,在每一个时间步,你不仅供应控制器当前植物模型也是植物模型对未来所有的步骤,在整个预测地平线。计算未来的植物模型的步骤,您可以使用操纵变量和植物状态预测的MPC控制器每一步操作点的可线性化的非线性植物模型。

    时,这种方法尤其有用植物模型改变明显(但可以预见)在预测地平线。它需要一个货币政策委员会对象和使用mpcmoveAdaptive或者是自适应MPC控制器块。有关更多信息,请参见时变MPC

  3. Gain-Scheduled MPC——在这种方法你设计多个MPC控制器脱机,每个相关的操作点。在线,您切换主动控制器的工厂操作点的变化。虽然切换控制器计算简单,这种方法需要更多的在线内存(通常更多的设计工作)比自适应MPC。应该留给情况下的线性化植物模型有不同的订单或时间延迟(和开关变量的变化缓慢,对植物动力学)。使用gain-scheduled MPC。你创建一个数组货币政策委员会对象,然后使用mpcmoveMultiple函数或多个MPC控制器为模拟块。有关更多信息,请参见Gain-Scheduled MPC。例如,看到的Gain-Scheduled MPC控制非线性化学反应器

  4. 非线性MPC——你可以使用这一策略来控制高度非线性植物当所有前面的方法是不合适的,或者当您需要使用非线性约束或non-quadratic成本函数。这种方法比以往更多的计算量,同时也需要你设计一个实现一个非线性状态估计如果核电站状态并非完全可用。两种非线性MPC方法是可用的。

    1. 多级非线性MPC -多级MPC控制器,将来的每一步地平线(阶段)都有自己的决策变量和参数,以及自己的非线性成本和约束。至关重要的是,成本和约束函数在一个特定的阶段是决策变量和参数的函数只在那个阶段。同时指定多个成本和约束函数可以需要更多的设计时,它还允许一个有效的制定底层优化问题和一个较小的数据结构,大大减少了计算时间比一般的非线性MPC。使用这种方法如果你的非线性MPC问题有成本和约束函数不涉及cross-stage条款,这是常有的事。使用多级非线性MPC你需要创建一个nlmpcMultistage对象,然后使用nlmpcmove函数或多级非线性MPC控制器为模拟块。有关更多信息,请参见多级非线性MPC

    2. 通用非线性MPC -这是最一般的方法,计算昂贵,MPC的形式。它显式地提供标准重量和线性范围设置,它可以为设计一个好的起点,唯一的非线性模型来自工厂。此外,您可以使用RunAsLinearMPC选项nlmpc对象评估是否线性时变或自适应MPC可以达到相同的性能。如果是这样的话,使用这些设计选项,可能评估获得预定政策委员会;否则,货币政策委员会考虑多级非线性。使用通用非线性MPC只作为初步设计,或当所有以前的设计方案不可行。使用通用的非线性MPC,您需要创建一个nlmpc对象,然后使用nlmpcmove函数或非线性MPC控制器为模拟块。有关更多信息,请参见通用非线性MPC

MPC控制器部署

当你满意控制器设计的模拟性能,您通常会寻找方法来加快执行,为了未来的模拟和优化设计满足嵌入式应用程序的更严格的计算要求。

您可以使用一些策略来提高计算性能的MPC控制器。

  1. 试图增加样品时间,采样频率必须足够高的重要系统的带宽。然而,如果样品时间太小,你不仅减少控制器的可用计算时间但你还必须用一个更大的预测地平线的系统响应,从而增加计算的要求。

  2. 尽量缩短预测和控制视野——因为视野直接影响决策变量和约束的总数在生成的优化问题,它们严重影响内存使用和需要的数量计算。因此,检查是否可以获得类似的跟踪响应和健壮性不确定性较短的视野。请注意,样品时间也在其中发挥作用。需要足够高的采样频率(等同于样品时间足够小)的重要系统的带宽。然而,如果样品时间太小了,不仅你的可用的硬件上执行时间较短,但你也需要更多的预测步骤的系统响应,从而导致一个更需要大量的计算在每个时间步优化问题需要解决。

  3. 通常只在需要时使用不同的参数,模型预测控制工具箱™允许你改变一些参数(如重量或约束系数)run-rime。虽然这个功能是有用的在某些情况下,它大大增加了软件的复杂性。因此,除非特别需要,部署,考虑显式地指定常数等参数,从而防止在线改变它们的可能性。相关的例子,请参阅在运行时更新约束,在运行时不同的输入和输出范围,在运行时调整权重,在运行时调整视野

  4. 限制的最大迭代数,控制器可以使用它来解决二次优化问题,并配置它时使用当前的次优解的最大迭代次数。使用一个次优的解决方案缩短了时间控制器计算所需的控制作用,在某些情况下它不显著降低性能。在任何情况下,由于迭代的数量可以改变戏剧性地从一个控制间隔下,对于实时应用程序,建议限制的最大迭代数。这样做可以帮助确保最坏执行时间不超过总计算时间允许在硬件平台上,这是由控制器样品时间。一个相关的例子,看到在快速MPC应用程序使用次优的解决方案

  5. 优化解算器及其选项,默认的模型预测控制工具箱求解是一种“密度”,解决基于“有效集”KWIK算法在许多情况下,它通常表现良好。然而,如果操纵变量的总数,输出,和约束整个地平线很大,你可能会考虑使用一个内点解算器。如果内部植物高度开环不稳定,考虑使用稀疏解算器。优化问题的概述,请参阅优化问题。关于解决的更多信息,请参阅QP解决者为非线性MPC配置优化解算器。相关的例子,请参阅模拟MPC控制器与一个定制的QP解算器使用非线性优化结核病治疗MPC与一个定制的解决者

为极快示例应用程序时,考虑使用显式的货币政策。它可以证明,货币政策委员会的线性问题的解决方案(二次成本函数,线性植物和约束)分段仿射(PWA)多面体。换句话说,约束将状态空间划分为多面体的“关键”区域的最优控制行动是一个仿射函数的线性加上一个常数)的状态。背后的想法明确的MPC precalculate,离线一旦所有,国家为每个地区的这些功能。这些函数可以被储存在你的控制器。在运行时,控制器选择和应用适当的状态反馈法,根据临界区,当前操作点。自显式MPC控制器不能解决在线优化问题,他们需要更少的计算,因此用于应用程序需要小样本。另一方面,他们也有更大的内存占用。事实上,过度的内存需求可以使这种方法不再可行的中型到大型问题。也,因为明确的MPC pre-computes离线控制器,它不支持运行时更新参数,如重量、约束或视野。金宝app

使用显式的MPC,您需要生成一个explicitMPC从现有对象货币政策委员会对象,然后使用mpcmoveExplicit函数或明确的MPC控制器为模拟块。有关更多信息,请参见明确的政策委员会

最后一个选项来考虑提高计算性能的隐式和显式MPC是简化问题。一些参数,如数量约束和状态变量的数量,大大增加的复杂性产生的优化问题。因此,如果前面的选项并不是令人满意的,考虑重调这些参数(和潜在的使用更简单的低质量的版本预测模型)来简化问题。

一旦你满意你的设计的计算性能,您可以生成部署代码从MATLAB实时应用程序或仿真软件。金宝app有关更多信息,请参见生成代码和部署控制器实时目标