主要内容

mpcmoveexplict.

用显式MPC计算最优控制

描述

m=mpcmove显式(empcobj.,x,ym,R,v)使用显式模型预测控制律计算当前时间的最佳操纵变量移动。此结果取决于显式MPC控制器中包含的属性和控制器状态。结果还取决于测量的输出变量、输出参考(设定点)和测量的干扰输入。mpcmoveexplict.更新控制器状态,x,使用默认状态估计时。称呼mpcmoveexplict.反复模拟闭环模型预测控制。

[m,信息]=mpcmove显式(empcobj.,x,ym,R,v)返回有关结构中计算的其他详细信息。若要确定最优控制计算是否正常完成,请检入数据信息.

[m,信息]=mpcmove显式(empcobj.,x,ym,R,v,MVUse)指定上一个中使用的操纵变量值mpcmoveexplict.命令,允许命令行模拟来模拟显式MPC控制器万博1manbetx®块具有可选的外部MV输入信号。

输入参数

全部崩溃

要模拟的显式MPC控制器,指定为显式MPC控制器对象。使用generateexplicitmpc.创建显式MPC控制器。

当前的MPC控制器状态,指定为一个mpcstate目的。

在使用开始模拟之前mpcmoveexplict.,使用初始化控制器状态x=mpcstate(EMPCobj)。然后,修改的默认属性x作为适当的。

如果使用默认状态估计,mpcmoveexplict.期望x代表X [n | n-1].这mpcmoveexplict.命令在以前的控制间隔中更新状态值,其中包含该信息。因此,您不应该以编程方式更新x根本默认状态估计器采用线性时变卡尔曼滤波器。

如果您使用的是自定义状态估计,mpcmoveexplict.期望x代表x[n | n]. 因此,在每次mpcmoveexplict.命令,您必须设置x、 种植,X.Disturbance., 和x、 噪音在当前控制间隔内(使用最新测量值)对这些状态进行最佳估计。

当前测量的输出,指定为长度的行矢量Nym哪里Nym是测量输出的数量。如果使用自定义状态估计,ym被忽略了。如果你设置了ym=[]然后mpcmoveexplict.使用适当的标称值。

工厂输出参考值,指定为长度的向量NY.mpcmoveexplict.对整个预测地平线使用常数引用。与此相反mpcmovempcmoveAdaptive,mpcmoveexplict.不支持参考预览。万博1manbetx

如果你设置了R=[]然后mpcmoveexplict.使用适当的标称值。

电流和预期测量的干扰,以长度向量表示Nm哪里Nm是测量的扰动数量。与mpcmovempcmoveAdaptive,mpcmoveexplict.不支持干扰预览。如万博1manbetx果您的电厂模型不包括测量的扰动,请使用v=[].

在先前的控制间隔期间施加到工厂的操纵变量值,指定为长度的向量Nm哪里Nm是操纵变量的数量。如果这是第一个mpcmoveexplict.命令在模拟序列中,省略此参数。否则,如果使用的MVmpcmoveexplict.在上一个时间间隔中被覆盖,设置MVUse以提高控制器状态估计的准确性。如果忽略MVUse,mpcmoveexplict.假设MVused=x.LastMove.

输出参数

全部崩溃

最优操纵变量移动,作为长度的列向量返回Nm哪里Nm是操纵变量的数量。

如果控制器检测到不可行的优化问题或遇到解决不良优化问题的数值困难,m保持其最新的成功解决方案,XC.LastMove..

否则,如果优化问题是可行的,并且解算器达到指定的最大迭代次数,而没有找到最优解,m:

  • 如果优化器.Usesuboptimalsolution.控制器的属性为错误的.

  • 如果优化器.Usesuboptimalsolution.控制器的属性为真的. 有关详细信息,请参阅次优QP解决方案.

显式MPC解决方案状态,作为具有以下字段的结构返回。

解决方案状态代码,作为以下值之一返回:

  • 1-成功的解决方案。

  • 0 - 失败。一个或多个控制器输入参数超出范围。

  • –1-未定义。参数在范围内,但必须使用外推。

当前控制器输入参数所属的区域,作为正整数或0返回。整数值是当前控制器输入参数所属的多面体(区域)的索引。如果解决方案失败,区域= 0.

提示

在R2014B中介绍