主要内容

什么是模型预测控制?

模型预测控制(MPC)是一种最优控制技术,在有限的后退视界上,计算控制动作使约束动力系统的代价函数最小化。

在每个时间步骤中,MPC控制器接收或估计工厂的当前状态。然后,它通过求解依赖于内部工厂模型和当前系统状态的约束优化问题来计算控制操作的顺序,从而使成本最小化。然后,控制器仅将第一个计算的控制动作应用于该装置,而忽略下面的控制动作。在接下来的时间步骤中,该过程重复进行。

MPC基本控制回路

反馈回路与MPC控制器(由优化器和预测模型组成)连接到工厂。控制器接收参考信号和工厂输出,并输出工厂控制动作。

当代价函数为二次函数,对象为线性且无约束,视界趋于无穷时,MPC相当于线性二次调节器(LQR)控制,如果卡尔曼滤波器从其输入和输出估计对象状态,则MPC相当于线性二次高斯(LQG)控制。

在实践中,尽管有限的范围,MPC通常继承了传统最优控制的许多有用特性,例如自然处理多输入多输出(MIMO)植物的能力,处理时间延迟的能力(可能在不同通道中有不同的持续时间),以及对建模错误的内置鲁棒性。标称稳定性也可以通过使用特定的终端约束来保证。其他重要的MPC特性包括显式处理约束的能力,以及在可用时利用未来参考信息和干扰信号的可能性。

在每个时间步在线求解约束最优控制需要大量的计算资源。然而,在某些情况下,例如线性约束植物,您可以预先计算并存储整个状态空间的控制律,而不是实时求解优化。这种方法被称为显式MPC。

MPC设计流程

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

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

  1. 指定工厂-定义MPC控制器用于在预测范围内预测植物行为的内部植物模型。通常,您可以通过在给定的工作点上线性化非线性工厂并将其指定为LTI对象来获得该工厂模型,例如党卫军特遣部队,zpk.您还可以使用系统识别工具箱™软件来识别工厂。请注意,一个限制是该装置不能在其控制输入和任何输出之间有直接的馈通。有关此步骤的详细信息,请参见构造线性时不变模型指定多输入多输出工厂线性化Simulin金宝appk模型使用MPC设计器线性金宝app化Simulink模型,从数据中识别植物

  2. 定义信号类型为了MPC的设计目的,植物信号通常分为不同的输入和输出类型。你通常使用setmpcsignals在上一步中定义的植物对象中,指定每个植物输出是测量的还是未测量的,以及每个植物输入是被操纵的变量(即控制输入)还是测量的或未测量的扰动。或者,您可以指定信号类型MPC设计师.有关更多信息,请参见MPC信号类型

  3. 创建MPC对象—在plant对象中指定信号类型后,您可以创建一个货币政策委员会MATLAB中的对象®工作区(或在MPC设计师),并在对象中指定控制器参数,如采样时间、预测和控制范围、代价函数权值、约束条件和扰动模型。下面是需要选择的最重要参数的概述。

    1. 采样时间-一个典型的开始猜测包括设置控制器采样时间,使10到20个样本覆盖植物的上升时间。

    2. 预测范围-未来样本的数量,控制器试图最小化成本。它应该足够长以捕捉瞬态响应并覆盖系统的重要动态。较长的时间范围增加了性能和计算需求。一个典型的预测范围是10到20个样本。

    3. 控制范围-控制器用来在预测范围内使成本最小化的自由控制移动的数量。与预测阶段类似,较长的控制阶段会增加性能和计算需求。对于控制水平,一个好的经验法则是将其设置为预测水平的10%到20%,同时至少有两到三个步骤。有关采样时间和视界的更多信息,请参见选择采样时间和范围

    4. 标称值——如果您的设备是由围绕一个工作点的非线性模型的线性化派生出来的,一个好的做法是为输入、状态、状态导数(如果非零)和输出设置标称值。这样做允许您指定对实际输入和输出的约束(而不是对其标称值的偏差进行约束),并允许您在使用Simulink时更容易地模拟闭环和可视化信号金宝app®或者是sim卡命令。

    5. 比例因子——好的做法是为每个工厂的投入和产出指定比例因子,特别是当它们的范围和大小非常不同的时候。适当的比例因子改善了潜在优化问题的数值条件,使权重调整更容易。一个很好的建议是将比例因子设置为近似等于相关信号的跨度(工程单位中最大值和最小值之间的差值)。有关更多信息,请参见指定比例因子

    6. 约束——约束通常反映物理限制。您可以指定硬约束(在优化中不能违反)或软约束(在一定程度上可以违反)。一个很好的建议是,如果有必要,在输入或其变化率上设置硬约束,而如果有必要,将输出约束设置为软约束。同时对输入和输出设置硬性约束可能导致不可行,一般不建议这样做。有关更多信息,请参见指定的约束

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

    8. 干扰和噪声模型-控制器用于计算控制动作的内部预测模型通常由影响设备的干扰和测量噪声模型增强的设备模型组成。扰动模型分别规定了输入和输出上的不可测扰动的动态特性,因此可以更好地抑制扰动。默认情况下,这些扰动模型被假定为积分器(因此允许控制器拒绝阶跃式扰动),除非您另有指定。测量噪声通常被认为是白色的。有关植物和扰动模型的更多信息,请参见MPC预测模型,调整干扰和噪声模型

    创建货币政策委员会对象,较好的做法是使用函数cloffset计算闭环稳态输出灵敏度,从而检验控制器是否能抑制恒定输出扰动。更一般的审查还检查对象的潜在问题。要对期望没有约束活动的时间框架执行更深入的灵敏度和鲁棒性分析,还可以使用将无约束控制器转换为LTI系统对象党卫军zpk,或特遣部队.相关示例请参见回顾模型预测控制器的稳定性和鲁棒性问题使用MPC设计器测试MPC控制器的鲁棒性计算稳态增益,提取控制器

    方法的默认值中包含了许多推荐的参数选项货币政策委员会对象;然而,由于这些参数中的每一个通常都是几个依赖于问题的权衡的结果,您必须选择对您的特定工厂和需求有意义的参数。

  4. 模拟闭环-在创建MPC控制器后,您通常通过使用以下选项之一在工厂中进行闭环模拟来评估控制器的性能。

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

    • 使用Simu金宝applink,您可以使用MPC控制器Block(这需要你的货币政策委员会对象作为参数),在闭环中使用Simulink中构建的植物模型。金宝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. 增益调度MPC -在这种方法中,您离线设计多个MPC控制器,每个相关工作点一个。然后,在线切换主动控制器作为工厂工作点的变化。虽然切换控制器在计算上很简单,但这种方法比自适应MPC需要更多的在线内存(通常也需要更多的设计工作)。它应该保留在线性化的植物模型具有不同阶数或时间延迟的情况下(并且切换变量相对于植物动态变化缓慢)。使用增益计划MPC。的数组货币政策委员会对象,然后使用mpcmoveMultiple函数或多MPC控制器块进行模拟。有关更多信息,请参见Gain-Scheduled MPC.有关示例,请参见非线性化学反应器的增益控制

  4. 非线性MPC—当前面所有的方法都不合适,或者需要使用非线性约束或非二次代价函数时,您可以使用这种策略来控制高度非线性的工厂。这种方法比以前的方法需要更多的计算量,并且它还要求您在植物状态不完全可用时设计一个实现非线性状态估计器。有两种非线性MPC方法可用。

    1. 多级非线性MPC -对于多级MPC控制器,视界(阶段)中的每一步都有自己的决策变量和参数,以及自己的非线性代价和约束。关键是,特定阶段的成本和约束函数只是该阶段决策变量和参数的函数。虽然指定多个代价和约束函数可能需要更多的设计时间,但它也允许有效地制定基础优化问题和更小的数据结构,与一般非线性MPC相比,这显著减少了计算时间。如果你的非线性MPC问题有代价和约束函数,不涉及跨阶段项,就使用这种方法。要使用多级非线性MPC,您需要创建一个nlmpcMultistage对象,然后使用nlmpcmove函数或多级非线性MPC控制器块进行模拟。有关更多信息,请参见多级非线性MPC

    2. 通用非线性MPC -这种方法是最通用的,计算成本高的MPC形式。因为它显式地提供了标准权重和线性边界设置,所以对于唯一的非线性来自于植物模型的设计来说,它是一个很好的起点。此外,您可以使用RunAsLinearMPC选项中的nlmpc对象来评估线性、时变或自适应MPC是否能达到相同的性能。如果是这样,使用这些设计选项,并可能评估增益计划MPC;反之,考虑多级非线性MPC。一般的非线性MPC仅作为初始设计,或当所有先前的设计方案都不可行的时候。要使用一般的非线性MPC,您需要创建一个nlmpc对象,然后使用nlmpcmove函数或非线性MPC控制器块进行模拟。有关更多信息,请参见一般非线性MPC

MPC控制器部署

当您对控制器设计的仿真性能感到满意时,您通常会寻找加快执行的方法,以便为未来的仿真优化设计,并满足嵌入式应用程序更严格的计算要求。

可以使用几种策略来提高MPC控制器的计算性能。

  1. 尽量增加采样时间——采样频率必须足够高,以覆盖系统的重要带宽。然而,如果采样时间太小,不仅会减少控制器的可用计算时间,而且还必须使用更大的预测范围来覆盖系统响应,这增加了计算需求。

  2. 尝试缩短预测和控制范围——由于这两个范围直接影响最终优化问题中的决策变量和约束的总数,它们严重影响内存使用和所需计算的数量。因此,请检查是否可以在较短的视界内获得类似的跟踪响应和对不确定性的鲁棒性。注意,采样时间也起着一定的作用。采样频率需要足够高(相当于采样时间足够小),以覆盖系统的重要带宽。然而,如果采样时间过短,不仅硬件上的可用执行时间较短,而且还需要大量的预测步骤来覆盖系统响应,这将导致在每个时间步骤中需要解决的优化问题的计算成本更高。

  3. 仅在需要时使用变化的参数——通常模型预测控制工具箱™允许您在运行阶段改变一些参数(例如权重或约束系数)。虽然这种功能在某些情况下是有用的,但它大大增加了软件的复杂性。因此,除非特别需要,否则对于部署,应该考虑显式地将这些参数指定为常量,从而防止在线更改它们的可能性。相关示例请参见在运行时更新约束在运行时改变输入和输出边界在运行时调整权重,在运行时调整视野

  4. 限制控制器可用于解决二次优化问题的最大迭代次数,并将其配置为在达到最大迭代次数时使用当前次优解决方案。使用次优解可以缩短控制器计算控制动作所需的时间,并且在某些情况下不会显著降低性能。在任何情况下,由于从一个控制间隔到下一个控制间隔的迭代次数可能发生巨大变化,因此对于实时应用程序,建议限制最大迭代次数。这样做有助于确保最坏情况的执行时间不会超过硬件平台上允许的总计算时间,这是由控制器采样时间决定的。相关示例请参见在快速MPC应用中使用次优解决方案

  5. 优化求解器及其选项-默认的模型预测控制工具箱求解器是一个“密集的”“活动集”求解器KWIK算法在许多情况下,它通常表现良好。但是,如果整个视界中操纵变量、输出和约束的总数很大,则可以考虑使用内部点求解器。如果内部植物是高度开环不稳定的,考虑使用稀疏求解器。有关优化问题的概述,请参见优化问题.有关解算器的更多信息,请参见QP解决者而且非线性MPC优化求解器的配置.相关示例请参见用自定义QP求解器模拟MPC控制器而且使用自定义求解器的非线性MPC优化结核病治疗

对于采样时间非常快的应用,可以考虑使用显式MPC。证明了线性MPC问题(二次代价函数、线性对象和约束)的解是多面体上的分段仿射(PWA)。换句话说,约束将状态空间划分为多面体“临界”区域,其中最优控制动作是状态的仿射(线性加常数)函数。显式MPC背后的思想是预先计算,离线和一劳永逸,每个区域的这些状态函数。然后可以将这些函数存储在控制器中。在运行时,控制器根据当前工作点所在的临界区域,选择并应用适当的状态反馈律。由于显式MPC控制器不在线解决优化问题,它们需要更少的计算,因此对于需要小采样时间的应用非常有用。另一方面,它们也有更大的内存占用。事实上,过多的内存需求可能使这种方法不再适用于中型到大型问题。此外,由于显式MPC预计算离线控制器,它不支持运行时更新参数,如权重,约束或视野。金宝app

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

提高隐式和显式MPC计算性能的最后一个选择是简化问题。一些参数,如约束的数量和状态变量的数量,大大增加了所得到的优化问题的复杂性。因此,如果前面的选项不令人满意,可以考虑重新调整这些参数(并可能使用更简单的低保真度预测模型)来简化问题。

一旦您对设计的计算性能感到满意,就可以从MATLAB或Simulink生成部署到实时应用程序的代码。金宝app有关更多信息,请参见生成代码并将控制器部署到实时目标