如何提高MPC(模型预测控制)性能?

34视图(30天)
嗨,我想使用MPC调节输出的二阶系统。但我总是得到结果与一个巨大的负脉冲信号。有人能让我知道这个脱靶如何删除吗?我已经改变权重矩阵和预测/控制视野,但仍然没有得到一个好的结果。下面是我的代码。谢谢你!
清晰的所有;clc;
(1 = 1;0 1];
B = (0.5, 1);
C = 0 [1];
D = 0 (1,1);
IC = (1, 0);
t = 0.1;
SYS = ss (A, B, C, D, Ts);
MSYS = minreal(系统);
np = 10;%预测地平线
数控= 4;%控制地平线
mpcobj = mpc (MSYS, Ts、np、数控);
Q = 1. e + 3;
R = 1. e + 0;
mpcobj.Weights.OutputVariables = {Q};
mpcobj.Weights.ManipulatedVariables = {R};
Tstop = 20;
Tf =圆(Tstop / Ts);
r = 0 (Tf, 1);
选择= mpcsimopt (mpcobj);
options.PlantInitialState = IC;
[y t u] = sim (mpcobj, Tf, r,选项);
图;
次要情节(1、2、1);情节(t, u);包含(“时间”);ylabel (“控制”);
次要情节(1、2、2),图(t、y);包含(“时间”);ylabel (“输出”);

答案(1)

Arkadiy Turevskiy
Arkadiy Turevskiy 2018年8月16日
低于你所看到的是由于两个原因:
1。植物和控制器之间的初始条件。
2。控制器调整以这样一种方式,即使初始条件匹配,它会产生一个明显的阶跃响应的超调。
初始条件相匹配,除非你会有些过头。你可以提高控制器的设计有助于问题2。
我粘贴以下代码,我做了以下几点:
。改变了输出变量的比例因子使问题更好的条件数值。你可以确定扩展需要做如果你回顾(mpcobj)控制器——你会看到建议改变比例因子。
b。我调整权重,包括添加mv.rate重量
c。我初始化控制器集成电路IC匹配工厂。你可以评论这一行,如果你想保持控制器工厂集成电路IC不匹配。
清晰的所有;clc;
% %植物
(1 = 1;0 1];
B = (0.5, 1);
C = 0 [1];
D = 0 (1,1);
IC = (1, 0);
t = 0.1;
SYS = ss (A, B, C, D, Ts);
% MSYS = minreal(系统);%不减少任何状态
np = 10;%预测地平线
数控= 3;%控制地平线%注意改变到3
mpcobj = mpc (SYS, Ts、np、数控);
mpcobj.OV (1)。ScaleFactor = 100;%注意比例因子,帮助过度的使用
% %指定整体调整因素权重
这些重量% MPC设计师应用试验和错误的结果
β= 0.26714;
% %指定权重
mpcobj.Weights。MV = 1 *β;
mpcobj.Weights。MVRate = 0.1 /β;
mpcobj.Weights。OV = 100 *β;
mpcobj.Weights。ECR = 1000000;
% %需要初始化控制器状态,否则无法避免初始脱靶
xmpc = mpcstate (mpcobj);
xmpc.Plant = IC;
Tstop = 20;
Tf =圆(Tstop / Ts);
% stepoint保持在0前10秒,然后一步1 -检查瞬态
%响应
r = 0 (Tf, 1);
r(100:尺寸(r)) = r(100:大小(r)) + 1;
% %栈道和控制器设置初始条件
选择= mpcsimopt (mpcobj);
options.PlantInitialState = IC;
options.ControllerInitialState = xmpc;
[y t u] = sim (mpcobj, Tf, r,选项);
图;
次要情节(1、2、1);情节(t, u);包含(“时间”);ylabel (“控制”);
次要情节(1、2、2),图(t、y);包含(“时间”);ylabel (“输出”);

类别

找到更多的在线性植物规范帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!