主要内容

convertToMPC

转换nlmpc对象转换为一个或多个货币政策委员会对象

描述

在实际应用中,线性MPC比非线性MPC具有更高的计算效率。使用convertToMPC功能,您可以将非线性MPC控制器转换为一个或多个线性MPC控制器在特定的操作点。然后,您可以使用线性控制器实现增益调度或自适应MPC,并将它们的性能与基准非线性MPC控制器进行比较。例如,请参见乙烯氧化装置的非线性增益计划MPC控制

使用convertToMPC,你的非线性控制器不能有自定义的成本或约束函数,因为这些自定义函数不支持线性MPC控制器。金宝app

例子

mpcobj= convertToMPC (nlmpcobj输入转换非线性MPC控制器对象nlmpcobj在指定的标称条件下,将一个或多个线性MPC控制器对象输入.线性MPC控制器的数量,N,等于其中的行数输入

mpcobj= convertToMPC (nlmpcobj输入MOIndex指定测量输出的指数。当控制器有未测量的输出信号时,请使用此语法。

mpcobj= convertToMPC (nlmpcobj输入MOIndex参数指定每个标称条件的预测模型参数值。当控制器预测模型有可选参数时,请使用此语法。

例子

全部折叠

创建一个非线性MPC控制器,有四个状态,一个输出变量,一个操纵变量,和一个测量扰动。

nlobj = nlmpc (4 1“MV”, 1“医学博士”2);

指定控制器样本时间和范围。

nlobj。PredictionHorizon = 10;nlobj。ControlHorizon = 3;

指定预测模型的状态函数。

nlobj.Model.StateFcn =“oxidationStateFcn”

指定预测模型输出函数和输出变尺度因子。

nlobj.Model.OutputFcn = @(x,u) x(3);nlobj.OutputVariables.ScaleFactor = 0.03;

指定操纵变量约束和比例因子。

nlobj.ManipulatedVariables.Min = 0.0704;nlobj.ManipulatedVariables.Max = 0.7042;nlobj.ManipulatedVariables.ScaleFactor = 0.6;

指定测量的扰动比例因子。

nlobj.MeasuredDisturbances.ScaleFactor = 0.5;

计算三个线性MPC控制器的状态和输入运行条件fsolve函数。

选择= optimoptions (“fsolve”“显示”“没有”);uLow = [0.38 0.5];xLow = fsolve(@(x) oxidationStateFcn(x,uLow),[1 0.3 0.03 1],options);uMedium = [0.24 0.5];xMedium = fsolve(@(x) oxidationStateFcn(x,uMedium),[1 0.3 0.03 1],options);uHigh = [0.15 0.5];xHigh = fsolve(@(x) oxidationStateFcn(x,uHigh),[1 0.3 0.03 1],options);

为每一个这些标称条件创建线性MPC控制器。

mpcobjLow = convertToMPC (nlobj xLow uLow);mpcobjMedium = convertToMPC (nlobj xMedium uMedium);mpcobjHigh = convertToMPC (nlobj xHigh uHigh);

您还可以使用标称条件数组创建多个控制器。数组中的行数指定要创建的控制器数。线性控制器以单元阵列的形式返回货币政策委员会对象。

u = [uLow;uMedium;uHigh];x = [xLow;xMedium;xHigh];mpcobjs = convertToMPC (nlobj, x, u);

查看属性mpcobjLow控制器。

mpcobjLow
MPC对象(2021年- 2月23日13:19:55创建 ): --------------------------------------------- 采样时间:1(秒)预测地平线:10控制层:3植物模型:-------------- 1操纵变量(s) - > | 4州  | | |--> 1测量输出(s)测量扰动(s) - > | 2输入  | | |--> 无边无际的输出(s) 0无边无际的干扰(s) - > | 1输出  | -------------- 指标:(输入向量)操纵变量:[1]测量干扰:[2](输出向量)测量输出:[1]干扰和噪声模型:输出干扰模型:默认(类型“getoutdist(mpcobjLow)”的详细信息)测量噪声模型:默认(缩放后的单位增益)权重:操纵变量:0操纵变量率:0.1000输出变量:1 ECR: 100000状态估计:约束:0.0704 <= u1 <= 0.7042, u1/rate是不受约束的,y1是不受约束的

输入参数

全部折叠

非线性MPC控制器,指定为nlmpc对象。

请注意

你的nlmpc控制器对象不能有自定义成本或约束函数。

命名状态值,指定为N——- - - - - -Nx数组,Nx等于nlmpcobj.Dimensions.NumberOfStates.每一行的指定要在转换中使用的名义状态集。

行数输入必须匹配。

标称输入值,指定为N——- - - - - -Nu数组,Nu等于nlmpcobj.Dimensions.NumberOfInputs.每一行的输入指定要在转换中使用的标称输入集。

行数输入必须匹配。

测量的输出指标,指定为长度向量Ny,在那里Ny为输出数。如果MOIndex[]在美国,每个产出都是被衡量的。否则,没有列出的输出MOIndex是无边无际的。

convertToMPC使用MOIndex中配置默认状态估计器mpcobj

预测模型参数值,指定为N——- - - - - -Np单元阵列,Np等于nlmpcobj.Model.NumberOfParameters.每一行的参数为给定的标称条件指定模型参数值。在每一行中,参数的顺序必须与模型函数中指定的顺序匹配。每个参数必须是具有正确尺寸的数字参数;即预测模型函数所期望的维度。

对于每个标称条件,这些参数被传递给状态函数(nlmpcobj.Model.StateFcn)及输出函数(nlmpcobj.Model.OutputFcn)的非线性MPC控制器。

行数参数必须匹配的行数输入

如果控制器预测模型有可选参数,则必须指定参数

输出参数

全部折叠

为每个标称条件创建的线性MPC控制器,返回如下之一:

  • 货币政策委员会对象的时候N= 1。

  • 单元阵列的货币政策委员会物体的长度NN> 1。每个对象对应于一个名义条件。

convertToMPC复制下列控制器属性nlmpcobj到控制器mpcobj

  • 样品时间

  • 预测和控制层

  • 调整权重

  • 输出变量、被操纵变量和被操纵变量的边界

  • 变量和干扰的比例因子、名称和单位

如果nlmpcobj

  • 有未测扰动通道,那么控制器在mpcobj它们的输入和输出扰动模型都有统一增益。

  • 没有未测扰动通道,那么控制器在mpcobj具有默认输出干扰模型。

任何州的边界nlmpcobj在转换期间被删除。

介绍了R2018b