主要内容

调优MPC控制器权值在运行时

这个例子展示了如何改变权重输出,输入,和软约束在run-rime ECR松弛变量,使用仿真软件®或金宝appmpcmove

中指定的权重MPC对象覆盖的重量提供给MPC控制器。如果重量信号不是MPC控制器连接块,那么相应的重量是货币政策委员会中指定的一个对象。

定义植物模型

定义一个多变量离散时间线性系统没有直接I / O引线,并假设输入# 4是一个测量扰动和输出# 4是无边无际的。

t = 0.1;%采样时间植物特遣部队(= {1 [1]5 2;3,[1 - 5],1,0,0,0,1,[1];2,[1],0,0},{(1 1 1)[1 3 4 5],[1 10],[1 5];1 [1],[2],[1 2 8],[1];[1 2 1],[1 3 1 1],[1],[1 - 2];[1],[1 3 10 10],[1 10],[1]});工厂=汇集(ss(植物),Ts);工厂。D = 0;%显示植物的大小。大小(植物)
4输出,状态空间模型4输入,和17个州。

MPC控制器设计

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

植物= setmpcsignals(植物,“医学博士”4“UO”4);%与采样周期创建控制器对象,预测和控制%的视野:p = 20;%预测地平线m = 3;%控制地平线mpcobj = mpc(植物、t、p、m);%注意违约权重被假定输入,输入率,和输出
- - >如果未指定的输入信号是操纵变量。- - >如果未指定的测量输出信号输出。- - >“权重。ManipulatedVariables”属性是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性是空的。假设默认的0.10000。- - >“权重。OutputVariables”属性是空的。 Assuming default 1.00000. for output(s) y1 y2 y3 and zero weight for output(s) y4

指定MV约束。

mpcobj.MV (1)。Min = 6;mpcobj.MV (1)。Max = 6;mpcobj.MV (2)。Min = 6;mpcobj.MV (2)。Max = 6;mpcobj.MV (3)。Min = 6;mpcobj.MV (3)。Max = 6;

使用结构定义时变信号格式

定义参考信号。

Tstop = 10;ref = [1 0 3 1];r =结构(“时间”(0:Ts: Tstop) ');N =元素个数(r.time);r.signals.values = (N - 1) *的裁判;

定义测量的干扰。

v = 0.5;

OV权重随时间线性增加,除了输出# 2不是加权。

ywt。时间= r.time;ywt.signals。值= (1:N) * (。1 0。1。1];

MV率与时间线性权重降低。

duwt。时间= r.time;duwt.signals。(值= (1)- 1:N / 2 / N)‘* (。1。1。1);

ECR体重随时间呈指数增长。

ECRwt。时间= r.time;ECRwt.signals。值= 10 ^ (2 + (1:N) / N);

使用仿真软件模拟®金宝app

开始仿真。

mdl =“mpc_onlinetuning”;open_system (mdl);%开放模型(R金宝app)模型sim (mdl);%开始模拟
- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >输出假设扰动添加到测量输出通道# 2是集成的白噪声。- - >输出假设扰动添加到测量输出通道# 3是集成的白噪声。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。

模拟使用MPCMOVE命令

定义真正的植物和MPC状态对象。

[A, B, C, D] = ssdata(植物);x = 0(大小(plant.B, 1), 1);%初始状态的植物xmpc = mpcstate (mpcobj);%处理状态的MPC控制器

存储阵列的闭环MPC轨迹YY, UU, XX。

YY = [];UU = [];XX = [];

使用mpcmoveopt对象在运行时提供的重量。

选择= mpcmoveopt;

开始仿真。

t = 0: n - 1,%存储状态XX = (XX, x);% #好< * AGROW >%计算和存储装置输出(没有直通的MV Y)y = x + D C * (:, 4) * v;YY = (YY; y ');%获得参考信号ref = r.signals.values (t + 1:) ';%更新| mpcmoveopt |对象运行时的重量选项。:MVRateWeight = duwt.signals.values (t + 1);选项。:OutputWeight = ywt.signals.values (t + 1);选项。:ECRWeight = ECRwt.signals.values (t + 1);%计算和控制动作痛u = mpcmove (mpcobj xmpc y(1:3),裁判,v,选项);UU = [UU; u ');%更新植物状态x = A * x + B (: 1:3) * u + B (:, 4) *;结束

情节和仿真结果进行比较。

图(1);clf;次要情节(121)图(0:Ts: Tstop, [YY ysim])网格标题(“输出”)次要情节(122)图(0:Ts: Tstop [UU usim])网格标题(“输入”)

对比输入和输出信号。

规范(UU-usim)规范(YY-ysim)%的结果是相同的除了数值错误。
ans = 4.2786 e-11 ans = 8.8298 e-12
bdclose (mdl);

另请参阅

相关的话题