主要内容

convertToMPC

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

自从R2018b

描述

在实践中,产生类似的性能时,线性MPC是优于非线性MPC由于其较高的计算效率。使用convertToMPC功能,您可以将一个非线性MPC控制器转换成一个或多个线性MPC控制器在特定的操作点。然后您可以使用线性控制器实现gain-scheduled或自适应MPC和比较基准的非线性MPC控制器的性能。例如,看到的非线性和Gain-Scheduled MPC控制乙烯氧化的植物

使用convertToMPC,你的非线性控制器必须没有定制成本或约束函数,因为这些不支持定制函数线性MPC控制器。万博1manbetx

例子

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。最小值= 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)(0.3 - 0.03 1)选项);uMedium = (0.24 - 0.5);xMedium = fsolve (@ (x) oxidationStateFcn (x, uMedium)(0.3 - 0.03 1)选项);uHigh = (0.15 - 0.5);xHigh = fsolve (@ (x) oxidationStateFcn (x, uHigh)(0.3 - 0.03 1)选项);

创建这些名义上的线性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对象(03 - mar - 2023上创建05:58:18):- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -采样时间:1(秒)预测地平线:10控制层:3工厂模式:- - - - - - - - - - - - - - - - 1操纵变量(s) - - > | 4州| | | - - > 1测量输出(s)测量扰动(s) - - >输入| 2 | | | - - > 0无边无际的输出(s) 0无边无际的干扰(s) - - > | | 1输出- - - - - - - - - - - - - - - -指数:(输入向量)操纵变量:[1]测量干扰:[2](输出向量)测量输出:[1]干扰和噪声模型:输出扰动模型:默认(类型”getoutdist (mpcobjLow)”)测量噪声模型:默认(缩放后单位增益)重量:ManipulatedVariables: 0 ManipulatedVariablesRate: 0.1000 OutputVariables: 1 ECR: 100000状态估计:默认的卡尔曼滤波器类型(“getEstimator (mpcobjLow)”)约束:0.0704 < = u1 < = 0.7042, u1 /率无约束,日元是无约束使用内置的“激活集”与120年MaxIterations QP解算器。

输入参数

全部折叠

非线性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控制器为每个名义创建条件,返回以下之一:

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

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

convertToMPC复制下面的控制器性能nlmpcobj的控制器mpcobj:

  • 样品时间

  • 预测和控制的视野

  • 调整权重

  • 输出变量界限、操纵变量和操作变量率

  • 规模因素、名称和单位变量和干扰

如果nlmpcobj:

  • 无边无际的干扰通道,那么控制器mpcobj有统一收益为其输入和输出扰动模型。

  • 没有不可测量的干扰通道,那么控制器mpcobj有默认输出扰动模型。

任何国家界限nlmpcobj在转换期间下降。

版本历史

介绍了R2018b