主要内容

mpcmove

计算最优控制动作并更新控制器状态

描述

使用此命令可以用一个植物模型来闭环模拟MPC控制器。调用mpcmove在for循环中重复计算被操纵变量并在每个时间步上更新控制器状态。

例子

mv= mpcmove (MPCobjxcymrv返回最优移动mv并更新状态xc控制器的MPCobj

被操纵的变量mv在当前时间计算给出:

  • 控制器对象,MPCobj

  • 一个指向当前估计扩展状态的指针,xc

  • 测量的植物产量,ym

  • 输出引用,r

  • 测量的扰动输入,v

如果ymrv被指定为[],或者如果它作为最后一个输入参数缺失,mpcmove使用适当的MPCobj.Model.Nominal而不是价值。

当使用默认状态估计时,mpcmove还更新句柄对象引用的控制器状态xc.因此,当使用默认状态估计时,xc总是指向更新后的控制器状态。在使用自定义状态估计时,应该进行更新xc之前每一个mpcmove调用。

例子

mv信息) = mpcmove (MPCobjxcymrv返回关于要计算的已解决优化问题的附加信息mv

___) = mpcmove (___选项中的默认约束和权重MPCobj中指定的值选项,一个mpcmoveopt对象。使用选项在闭环模拟过程中提供约束和权重的运行时调整。

例子

全部折叠

用一个MV和一个测量值OV进行闭环模拟。

定义一个工厂模型,并创建一个带有MV约束的模型预测控制器。

ts = 2;工厂= ss (0.8, 0.5, 0.25, 0, ts);mpcobj = mpc(植物);
——>“PredictionHorizon”属性为空。假设默认10。“ControlHorizon”属性为空。假设默认2。- - - >“权重。“操纵变量”属性为空。假设默认的0.00000。- - - >“权重。“操纵变量率”属性为空。假设默认的0.10000。 -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000.
mpcobj.MV(1)。Min = 2;mpcobj.MV(1)。Max = 2;

获取一个指向控制器状态的句柄对象。

xc = mpcstate (mpcobj)
假设在测量的输出通道1中添加的输出干扰是集成白噪声。——>”模式。噪音" property is empty. Assuming white noise on each measured output. MPCSTATE object with fields Plant: 0 Disturbance: 0 Noise: [1x0 double] LastMove: 0 Covariance: [2x2 double]

该控制器有一个用于内部设备模型的状态,一个用于扰动模型的状态,以及一个用于保存被操纵变量的最后一个值的状态。所有这三个状态都初始化为零。

设置参考信号。没有测量到干扰。

r = 1;

通过调用模拟闭环响应mpcmove迭代。在模拟过程中,假设被模拟的植物与预测模型相同。因此植物状态x在这种情况下是相同的xc。计划T和植株产量为yC * xu + D *0.25 * x0.25 * xc.Plant。在这里,mpcmove更新引用的控制器状态xc(因此包括xc。植物),并返回操作过的变量u(我),它仅用于绘图。

t = 0: ts: 40岁;N =长度(t);y = 0 (N, 1);u = 0 (N, 1);1:N y(i) = 0.25*x . plant;你(我)= mpcmove (mpcobj xc y(我),r);结束

分析结果。

(ts,美国)=楼梯(t, u);情节(ts、美国、的r -、t、y,“b——”)传说(“MV”机汇的

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些物体代表MV OV。

在模拟过程中修改MV上界mpcmoveopt对象。因为options参数会覆盖selectedmpcobj属性,再次指定MV约束。

MPCopt = mpcmoveopt;MPCopt。MVMin = 2;MPCopt。MVMax = 2;

模拟闭环响应,并在8秒(迭代的第5步)引入实时上限变化。

xc = mpcstate (mpcobj);y = 0 (N, 1);u = 0 (N, 1);1:N y(i) = 0.25*x . plant;如果i == 5 MPCopt。MVMax = 1;结束你(我)= mpcmove (mpcobj xc y(我),r, [], MPCopt);结束

分析结果。

(ts,美国)=楼梯(t, u);情节(ts、美国、的r -、t、y,“b——”)传说(“MV”机汇的

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些物体代表MV OV。

定义一个植物模型。

ts = 2;工厂= ss (0.8, 0.5, 0.25, 0, ts);

建立一个对被操纵变量和被操纵变量变化率都有约束的模型预测控制器。预测的范围是10间隔,控制水平被阻塞。

MPCobj = mpc(Plant,ts,10,[2 3 5]);
- - - >“权重。“操纵变量”属性为空。假设默认的0.00000。- - - >“权重。“操纵变量率”属性为空。假设默认的0.10000。- - - >“权重。OutputVariables属性为空。假设默认的1.00000。
MPCobj.MV(1)。Min = 2;MPCobj.MV(1)。Max = 2;MPCobj.MV(1)。杀鼠灵= 1;MPCobj.MV(1)。RateMax = 1;

初始化(并返回一个句柄)控制器内部状态以进行模拟。

xc = mpcstate (MPCobj);
假设在测量的输出通道1中添加的输出干扰是集成白噪声。——>”模式。噪音" property is empty. Assuming white noise on each measured output.
xc。植物= 2.8;xc。LastMove = 0.85;

计算当前时刻的最优控制移动。

y = 0.25 * xc.Plant;r = 1;[u,信息]= mpcmove (MPCobj xc y, r);

分析预测的最优序列。

楼梯(ts,美国)= (Info.Topt Info.Uopt);情节(ts、美国、的r -Info.Topt Info.Yopt,“b——”)传说(“MV”机汇的

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些物体代表MV OV。

情节忽略了Info.Uopt(结束)因为它是

检查最优成本。

信息。成本
ans = 0.0793

输入参数

全部折叠

模型预测控制器,指定为MPC控制器对象。若要创建MPC控制器,请使用货币政策委员会

类指定的指向当前控制器状态的句柄对象mpcstate对象。

请注意

xc是否句柄对象,如果将其复制到新变量,新变量仍然指向相同的当前状态货币政策委员会对象。如果这个状态发生变化,这将反映在两者中xc和它的副本。要保存原始状态以供以后使用,可以进行保存xcMAT-file。在模拟中,mpcmove也更新xc当计算一个新的控制移动时。有关句柄对象的更多信息,请参见处理对象的行为

在开始模拟之前mpcmove,初始化控制器,并将句柄返回到其状态xc = mpcstate (MPCobj).的默认属性xc是合适的。mpcmove修改控制器状态。处理对象xc始终反映控制器的当前(更新)状态。

如果使用默认状态估计,mpcmove预计xc代表xc (n | n - 1).的mpcmove命令使用该信息更新前一个控制间隔中的状态值。因此,您不应该以编程方式进行更新xc在所有。默认状态估计器使用稳态卡尔曼滤波器。

如果使用自定义状态估计,mpcmove预计xc代表xc [n | n].因此,在每一个之前mpcmove命令,必须设置xc。植物xc。干扰,xc。Noise对这些状态(使用最新的测量)在当前控制间隔的最佳估计。

电流测量输出值的时间k,指定为长度的列向量Nym,在那里Nym是测量输出的数量。

如果使用自定义状态估计,请设置ym = []

设备输出参考值,指定为p——- - - - - -Ny数组,p预测的视界是MPCobj而且Ny是输出的数量。行r(我,:)定义step的参考值预测视界。

r必须包含至少一行。如果r包含少于p行,mpcmove重复最后一行以填充p——- - - - - -Ny数组中。因此,如果只提供一行,则常量引用适用于整个预测范围。

为了实现引用预览,当引用以可预测的方式变化时,它可以改进跟踪,r必须包含预期的变化,理想的p步骤。

电流和预期的测量扰动,用a (p+ 1)——-N医学博士数组,p预测的视界是MPCobj而且N医学博士是测量到的扰动数。第一行v指定当前测量的扰动值。行: v (i + 1)定义在阶跃处的预期扰动值预测视界。

测量扰动的建模提供了前馈控制作用。如果您的植物模型不包括测量扰动,请使用v[]

如果你的模型包括测量过的扰动,v必须包含至少一行。如果v包含少于p+ 1行,mpcmove复制最后一行以填充(p+ 1)——-N医学博士数组中。如果你只提供一行,一个恒定的测量扰动适用于整个预测水平。

为了实现扰动预览,当扰动以可预测的方式变化时,它可以改进跟踪,v必须包含预期的变化,理想的p步骤。

运行时选项,指定为mpcmoveopt对象。使用选项覆盖选定的属性MPCobj在模拟。这些选项适用于电流mpcmove时间瞬间。使用选项产生与重定义或修改相同的结果MPCobj每次打电话给mpcmove,但所涉及的开销却大大减少。使用选项等价于使用MPC控制器金宝app®块与可选输入信号相结合,以修改控制器设置,如MV和OV约束。

输出参数

全部折叠

最佳操作变量移动,作为长度的列向量返回Nmv,在那里Nmv是被操纵变量的数量。

如果控制器检测到不可行优化问题或在求解病态优化问题时遇到数值困难,mv仍然是它最近成功的解决方案,xc。LastMove

否则,如果优化问题是可行的,求解器达到指定的最大迭代次数,但没有找到最优解,mv:

  • 保持其最新成功的解决方案,如果优化器。使用SuboptimalSolution属性的值为

  • 次优解是否在最终迭代后达到优化器。使用SuboptimalSolution属性的值为真正的.有关更多信息,请参见次优的QP解决方案

解决方案详细信息,作为具有以下字段的结构返回。

预测的最佳操纵变量调整(移动),返回为(p+ 1)——-Nmv数组,p预测的视界和Nmv是被操纵变量的数量。

Uopt(我,:)包含当时计算的最优值k +张,因为我= 1,…,p,在那里k是当前时间。第一行信息。Uopt包含与输出参数相同的操作变量值mv.由于控制器不计算最优控制动作k + p: Uopt (p + 1)等于Uopt (p,:)

最佳输出变量序列,返回为a (p+ 1)——-Ny数组,p预测的视界和Ny是输出的数量。

第一行信息。Yopt包含按时间计算的输出k基于估计状态和测量扰动;它不是当时的测量输出kYopt(我,:)包含当时的预测输出值k +张,因为我= 1,…,p + 1

Yopt(我,:)包含按时间计算的输出值k +张,因为我= 2,…,p + 1,在那里k是当前时间。: Yopt (1)是根据估计状态和测量扰动计算的。

最佳预测模型状态序列,返回为a (p+ 1)——-Nx数组,p预测的视界和Nx是设备和未测量扰动模型中的状态数(来自噪声模型的状态不包括在内)。

Xopt(我,:)包含当前计算的状态值k +张,因为我= 2,…,p + 1,在那里k是当前时间。: Xopt (1)与当前状态的状态值相同。

时间间隔,作为长度的列向量返回p+ 1。Topt (1)= 0,表示当前时间。随后的时间步长Topt(我)是由Ts *(张),在那里Ts = MPCobj。Ts为控制器采样时间。

使用Topt当策划UoptXopt,或Yopt序列。

松弛变量ε,用于约束软化,返回为0或者一个正的标量值。

  • ε = 0 -在整个预测范围内满足所有约束条件。

  • ε > 0 -至少违反了一个软约束。当违反多个约束时,ε表示最坏情况的软约束违反情况(根据每个约束的ECR值进行缩放)。

看到优化问题为更多的信息。

求解器迭代的次数,作为以下之一返回:

  • 正整数-解决确定最优序列的优化问题所需的迭代次数。

  • 0-优化问题无法在指定的最大迭代次数内解决。

  • 1-优化问题不可行。如果没有一个解能满足所有的硬约束,那么优化问题是不可行的。

  • 2—求解优化问题时出现数值错误。

优化解决方案状态,返回为以下之一:

  • “可行的”-获得最优解(迭代> 0)

  • “不可行”-求解器检测到一个没有可行解决方案的问题(迭代= -1)或出现数值错误(迭代= 2)

  • “不可靠”-解算器收敛失败(迭代= 0)。在本例中,如果MPCobj.Optimizer.UseSuboptimalSolutionu冻结在最近成功的解决方案。否则,它将使用在最后一次求解迭代中发现的次优解。

目标函数代价,作为非负标量值返回。成本量化了控制者实现其目标的程度。有关更多信息,请参见优化问题

成本值只有在QPCode =“可行的”,或者当QPCode =“可行的”而且MPCobj.Optimizer.UseSuboptimalSolution真正的

提示

  • mpcmove更新xc,即使它是一个输入参数。

  • 如果ymrv被指定为[],或者如果它作为最后一个输入参数缺失,mpcmove使用适当的MPCobj.Model.Nominal而不是价值。

  • 要查看整个预测范围的预测最优行为,绘制中提供的适当序列信息

  • 要确定优化状态,请检查信息。迭代而且信息。QPCode

选择

  • 使用sim卡当不使用运行时约束或权重变化时,用于设备不匹配和噪声模拟。

  • 使用MPC设计师交互式设计和模拟模型预测控制器的应用程序。

  • 使用MPC控制器块,用于代码生成。金宝app

  • 使用mpcmoveCodeGeneration在代码生成之前模拟MPC控制器。

版本历史

之前介绍过的R2006a