主要内容

generateExplicitRange

显式MPC控制律参数的边界

描述

例子

范围= generateExplicitRange (MPCobj创建一个基于传统(隐式)MPC控制器对象的参数边界结构。的输入参数generateExplicitMPC.通常,返回的初始范围值generateExplicitRange不适合生成显式MPC控制器。因此,在调用之前使用点表示法来设置范围结构的值generateExplicitMPC

例子

全部折叠

在传统MPC控制器的基础上,为双积分器装置生成显式MPC控制器。

定义双积分器工厂。

Plant = tf(1,[1 0 0]);

为该工厂创建一个传统(隐式)MPC控制器,样本时间为0.1,预测水平为10,控制水平为3。

Ts = 0.1;P = 10;M = 3;MPCobj = mpc(plant,Ts,p,m);
- - - >“权重。“操纵变量”属性为空。假设默认值为0.00000。- - - >“权重。“操纵变量率”属性为空。假设默认为0.10000。- - - >“权重。OutputVariables属性为空。假设默认值为1.00000。

要生成显式MPC控制器,必须指定参数的范围,如状态值和操作变量。为此,生成一个范围结构。然后,将结构中的值修改为所需的参数范围。

range = generateExplicitRange(MPCobj);
——>转换“模型”。植物的“属性”到状态空间。——>转换模型到离散时间。假设对测量的1号输出通道没有干扰。——>”模式。“噪音”属性为空。假设每个测量输出都有白噪声。
range.State.Min(:) = [-10;-10];range.State.Max(:) = [10;10];range.Reference.Min = -2;range.Reference.Max = 2;range. manipulation variable . min = -1.1;range. manipulation variable . max = 1.1;

使用更鲁棒的约简方法进行计算。使用generateExplicitOptions创建一个默认选项集,然后修改polyreduction选择。

opt = generateExplicitOptions(MPCobj);Opt.polyreduction = 1;

生成显式MPC控制器。

EMPCobj = generateExplicitMPC(MPCobj,range,opt)
明确的MPC控制器  --------------------------------------------- 控制器样品时间:0.1(秒)多面区域:1参数的数量:4解决方案简化:没有状态估计:默认卡尔曼增益  --------------------------------------------- “EMPCobj类型。最初的隐式MPC设计。“EMPCobj类型。范围' for the valid range of parameters. Type 'EMPCobj.OptimizationOptions' for the options used in multi-parametric QP computation. Type 'EMPCobj.PiecewiseAffineSolution' for regions and gain in each solution.

输入参数

全部折叠

传统的MPC控制器,指定为MPC控制器对象。使用货币政策委员会命令创建传统的MPC控制器。

输出参数

全部折叠

用于生成显式MPC控制器的参数边界MPCobj,作为结构返回。

最初,每个参数的最小和最大界限是相同的。所有这些参数都被认为是固定的。当你生成一个显式控制器时,任何固定的参数在控制器运行时都必须是恒定的。这一般不太可能发生。因此,必须为所有参数指定有效的边界。使用点表示法来设置范围结构的值,以适合您的系统。

range结构的字段如下所示。

控制器状态值的边界,指定为包含字段的结构最小值而且马克斯.每个人最小值而且马克斯是长度向量吗nx,在那里nx是控制器状态的个数。Range.State.Min而且Range.State.Max分别包含所有控制器状态的最小值和最大值。例如,假设您正在设计一个双状态控制器。您已经确定了第一个控制器状态的范围为(-1000、1000),第二控制器状态为(0, 2 *π).将这些边界设置如下:

Range.State.Min(:) = [-1000,0];Range.State.Max(:) = [1000,2*pi];

MPC控制器的状态依次包括来自植物模型、扰动模型和噪声模型的状态。当状态与物理参数不对应时,设置状态变量的范围有时很困难。在这种情况下,建议使用典型的参考信号和干扰信号进行多次开环模拟,以收集反映状态范围的数据。

控制器参考信号值的边界,指定为包含字段的结构最小值而且马克斯.每个人最小值而且马克斯是长度向量吗ny,在那里ny是工厂产出的数量。Range.Reference.Min而且Range.Reference.Max分别包含所有参考信号值的最小值和最大值。例如,假设您正在为一个双输出设备设计一个控制器。你已经确定了第一个工厂的产量范围是(-1000、1000),第二厂产量为(0, 2 *π).将这些边界设置如下:

Range.Reference.Min(:) = [-1000,0];Range.Reference.Max(:) = [1000,2*pi];

通常你知道在装置的标称工作点使用的参考信号的实际范围。用于生成显式MPC控制器的范围必须至少与实际范围一样大。

测量扰动值的边界,用包含字段的结构指定最小值而且马克斯.每个人最小值而且马克斯是长度向量吗n医学博士,在那里n医学博士是测量到的扰动数。如果您的系统没有测量到干扰,请保持该字段生成的值不变。

Range.MeasuredDisturbance.Min而且Range.MeasuredDisturbance.Max分别包含所有测量扰动信号的最小值和最大值。例如,假设您正在为一个有两个测量扰动的系统设计一个控制器。你已经确定了第一个扰动的范围是[1],第二次扰动为[0, 0.1].将这些边界设置如下:

Range.Reference.Min(:) = [-1,0];Range.Reference.Max(:) = [1,0.1];

通常你知道被测量的扰动信号的实际范围是在工厂的标称工作点上使用的。用于生成显式MPC控制器的范围必须至少与实际范围一样大。

操作变量值的边界,指定为包含字段的结构最小值而且马克斯.每个人最小值而且马克斯是长度向量吗nu,在那里nu是被操纵变量的数量。Range.ManipulatedVariable.Min而且Range.ManipulatedVariable.Max分别包含所有操作变量的最小值和最大值。例如,假设您的系统有两个被操纵的变量。第一个操作变量的范围是[1],第二个变量的值为[0, 0.1].将这些边界设置如下:

range . manipulation variable . min (:) = [-1,0];range . manipulation variable . max (:) = [1,0.1];

如果操作变量受到约束,用于生成显式MPC控制器的范围必须至少与这些限制一样大。

版本历史

在R2014b中引入