文档

开关控制器基于最优成本

这个例子展示了如何使用“最优成本”外港的MPC控制器块之间切换多模型预测控制器的输出是离散值限制。

定义植物模型

线性植物模型如下:

工厂= ss (tf ({1}, {[1 1.2 - 1], [1]}),“最小值”);% 1 2的输入和输出[A, B, C, D] = ssdata(植物);%得到状态空间实现矩阵,用于仿真软件金宝appx0 = (0, 0, 0);%初始植物状态

MPC控制器设计

指定输入和输出信号类型。

植物= setmpcsignals(植物,“MV”,1“医学博士”2);%第一输入操作,二是测量干扰

设计两个MPC控制器MV的约束u = 1u = 1,分别。只有u在当前时间是量子化的。随后计算控制行动可以是任何值介于1和1。控制器使用滚动时域方法实际上这些值不去工厂。

t = 0.2;%采样时间p = 20;%预测地平线m = 10;%控制地平线mpc1 = mpc(植物、t、p、m);%首先MPC对象mpc2 = mpc(植物、t、p、m);%第二MPC对象%指定权重mpc1。重量=结构(“MV”0,“MVRate”3,“输出”1);%的重量mpc2。重量=结构(“MV”0,“MVRate”3,“输出”1);%的重量%指定约束mpc1。MV =结构(“最小值”(1,1),“马克斯”,(1,1));%限制操纵变量:u = 1mpc2。MV =结构(“最小值”(1,1),“马克斯”,(1,1));%限制操纵变量:u = 1
- - >“权重。ManipulatedVariables”属性的“mpc”对象是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性的“mpc”对象是空的。假设默认的0.10000。- - >“权重。OutputVariables”属性的“mpc”对象是空的。假设默认的1.00000。- - >“权重。ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.

在仿真软件模拟®金宝app

这个例子中,运行仿真软件®是必需的。金宝app

如果~ mpcchecktoolboxinstalled (“金宝app模型”)disp (”金宝app模型(R)需要运行这个例子。)返回结束%指定的信号:Tstop = 40;ref.time = 0: Ts (Tstop + p * Ts);ref.signals。值=双(ref.time > 10) ';%步骤参考信号的变化在时间t = 10md.time = ref.time;md.signals。值=双(md.time > 30) ';阶跃变化百分比测量干扰信号在时间t = 30

开放和模拟仿真软件®模型:金宝app

mdl =“mpc_optimalcost”;open_system (mdl);%开放模型(R金宝app)模型sim (mdl Tstop);%开始模拟
- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。没有ise" property of the "mpc" object is empty. Assuming white noise on each measured output channel. -->Converting model to discrete time. -->Assuming output disturbance added to measured output channel #1 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

注意:

  • 不时0到10,控制动作不断切换MPC1(1)和MPC2 (+ 1)。这是因为参考信号为0,它需要一个控制器输出0达到稳定状态,无法实现与MPC控制器。

  • 从时间10到30,MPC2控制输出(+ 1)选择因为参考信号变成了+ 1,它需要一个控制器输出+ 1达到稳定状态(植物获得1),这可以通过MPC2。

  • 从30到40,控制行动又开始切换。这是因为与测量扰动的存在(+ 1),MPC1导致稳态0和MPC2导致稳态+ 2,而参考信号仍然需要+ 1。

模拟使用MPCMOVE命令

使用mpcmove执行一步一步模拟和计算当前MPC控制作用:

(广告、Bd、Cd, Dd) = ssdata (c2d(植物、Ts));%离散时间动态Nsteps =圆(Tstop / Ts);%的模拟步骤

初始化矩阵来存储仿真结果

YY = 0 (Nsteps + 1, - 1);RR = 0 (Nsteps + 1, - 1);UU = 0 (Nsteps + 1, - 1);成本= 0 (Nsteps + 1, - 1);x = x0;%初始植物状态处= mpcstate (mpc1);%初始状态的MPC控制器# 1此时= mpcstate (mpc2);%初始状态的MPC控制器# 2

开始仿真。

td = 0: Nsteps%建立信号v = md.signals.values (td + 1);r = ref.signals.values (td + 1);%植物方程:输出更新Cd * y = x + v Dd (:, 2) *;%计算MPC的举措选择= mpcmoveopt;选项。只有ComputeCost = true;%最后输入参数告诉“mpcmove”只有comupte最优成本[u1, Info1] = mpcmove (mpc1处,y, r, v,选项);(u2, Info2) = mpcmove (mpc2,此时,y, r, v,选项);%比较结果最优成本和选择输入值%对应最小的成本如果Info1.Cost < = Info2。u = u1成本;成本= Info1.Cost;%更新内部MPC状态正确的值此时假定。工厂= xt1.Plant;此时假定。干扰= xt1.Disturbance;此时假定。LastMove = xt1.LastMove;其他的u = u2;成本= Info2.Cost;%更新内部MPC状态正确的值处。工厂= xt2.Plant;处。干扰= xt2.Disturbance;处。LastMove = xt2.LastMove;结束%存储工厂信息YY (td + 1) = y;RR (td + 1) = r;UU (td + 1) = u;成本(td + 1) =成本;%植物方程:状态更新广告* x = x + Bd (: 1) * u + Bd (:, 2) *;结束

阴谋的结果mpcmove与仿真结果比较仿真软件®:金宝app

次要情节(131)图((0:Nsteps) * Ts, [YY, RR]);%的阴谋和参考信号的输出网格标题(“OV和参考”)次要情节(132)图((0:Nsteps) * Ts, UU);%的阴谋被控变量网格标题(“MV”)次要情节(133)图((0:Nsteps) * Ts、成本);%情节最优MPC价值函数网格标题(“最优成本”)

这些情节类似的情节范围模型®模型。金宝app

bdclose (mdl);
这个主题有帮助吗?