主要内容

使用终端惩罚权值提供LQR性能

通过在末端预测状态上设置调整权值,可以使有限视界模型预测控制器等价于无限视界线性二次型调节器。

标准MPC代价函数类似于带输出加权的LQR控制器的代价函数,如下式所示:

J u 1 y k + T y k + + u k + - 1 T R u k + - 1

LQR和MPC成本函数有以下不同之处:

  • LQR代价函数力 y 而且 u 趋近于零,而MPC成本函数的力量 y 而且 u 朝向非零设定值。您可以移动MPC预测模型的原点以消除这种差异并实现零标称设定值。

  • LQR代价函数使用无限的预测视界,其中操纵变量在每个样本时间都发生变化。在标准MPC代价函数中,视界长度为 p ,被操纵变量发生变化 次, 是控制视界。

如果MPC成本函数为:

J u 1 p - 1 y k + T y k + + u k + - 1 T R u k + - 1 + x k + p T p x k + p

在这里, p 为在最终预测水平步上施加的最终惩罚权,预测水平与控制水平相等( p ).所需的 p 里卡蒂矩阵是用等方面而且lqry命令。

定义植物模型

指定采样时间为的离散开环动态工厂模型0.1秒。对于这个模型,使工厂的所有状态都是可测量的输出。这个植物是[1]的双积分器植物。

A = [10 0;0.1 1];B = [0.1;0.005];C =眼睛(2);D = 0 (2,1);Ts = 0.1;plant = ss(A,B,C,D,Ts);

设计无限视距LQR控制器

计算里卡蒂矩阵Qp以及状态反馈增益K与输出权值的LQR问题相关输入权重R.有关更多信息,请参见lqry

Q =眼睛(2);R = 1;[K,Qp] = lqry(植物,Q,R);

设计等效MPC控制器

要实现MPC代价函数,首先计算 l 的Cholesky分解 p ,以致于 l T l p

L = chol(Qp);

接下来,定义辅助的未测量输出变量 y c l x ,以致于 y c T y c x T p x .增加工厂的输出向量,使其包含这些辅助输出。

newPlant =植物;集(newPlant,“C”[C; L],' D ', (D; 0 (2, 1)]);

将状态矢量输出配置为测量输出,将辅助输出信号配置为未测量输出。默认情况下,输入信号是被操纵的变量。

newPlant = setmpcsignals(newPlant,“莫”(1 - 2),“UO”[3, 4]);

创建具有与植物相同采样时间和相同预测和控制水平的控制器对象。

P = 3;M = p;mpcobj = mpc(newPlant,Ts,p,m);
- - - >“权重。属性为空。假设默认值为0.00000。- - - >“权重。属性为空。假设默认为0.10000。- - - >“权重。OutputVariables属性为空。假设默认值为1.00000。对于输出y1和零权重的输出y2 y3 y4

为被操纵变量和测量输出在预测水平的每一步定义调优权重。

ywt =√(diag(Q))';uwt =√(diag(R))';mpcobj.Weights.OV = [sqrt(diag(Q))' 0 0];mpcobj.Weights.MV =根号(R);

为了使与MPC控制器相关的QP问题具有正定性,在被操纵变量增量上包含非常小的权重。

mpcobj.Weights.MVRate = 1e-5;

处以最终罚款 x T k + p p x k + p 通过指定一个单位重量 y c k + p l x k + p .终端重量u (t + p - 1)保持不变。

Y = struct(“重量”,[0 0 1 1]);U = struct(“重量”, uwt);setterminal (mpcobj, Y、U);

由于测量的输出矢量包含整个状态矢量,删除由MPC控制器插入的任何额外的输出扰动积分器。

setoutdist (mpcobj“模型”党卫军(0 (4,1)));

通过定义以下测量更新方程来移除状态估计器:

x[n|n] = x[n|n-1] + I * (x[n]-x[n|n-1]) = x[n]

setterminal函数将状态估计器重置为默认值,则调用setEstimator调用后的函数setterminal

setEstimator (mpcobj[],眼(2));

比较MPC和LQR控制器增益

计算MPC控制器在约束不活跃(无约束MPC)时的增益,并将其与LQR增益进行比较。

Mpcgain = dcgain(ss(mpcobj));
——>”模式。“噪音”属性为空。假设每个测量输出都有白噪声。
流(\n(unconstrained) MPC: u(k)=[%8.8g,%8.8g]*x(k)'mpcgain (1) mpcgain (2));
(无约束)MPC: u(k)=[-1.6355962,-0.91707456]*x(k)
流('\n LQR: u(k)=[%8.8g,%8.8g]*x(k)\n\n', - k - k (1) (2));
等:u (k) = [-1.6355962, -0.91707456] * x (k)

状态反馈增益是完全相同的。

比较控制器性能

比较LQR控制器、带终端权值的MPC控制器和标准MPC控制器的性能。

计算LQR控制器的闭环响应。

clsys =反馈(植物,K);Tstop = 6;X0 = [0.2;0.2];[yLQR,tLQR] = initial(clsys,x0,Tstop);

计算具有终端权值的MPC控制器的闭环响应。

simOpt = mpcsimopt(mpcobj);simOpt。PlantInitialState = x0;R = 0 (1,4);[y,t,u] = sim(mpcobj,ceil(Tstop/Ts),r,simOpt);

创建具有默认预测和控制范围的标准MPC控制器(p= 10,= 3)。为了匹配其他控制器,从标准MPC控制器中删除输出扰动模型和默认状态估计器。

mpcobjSTD = mpc(plant,Ts);
——>“PredictionHorizon”属性为空。假设默认为10。“ControlHorizon”属性为空。假设默认2。- - - >“权重。属性为空。假设默认值为0.00000。- - - >“权重。属性为空。假设默认为0.10000。 -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000. for output(s) y1 and zero weight for output(s) y2
mpcobjSTD.Weights.MV = uwt;mpcobjSTD.Weights.OV = ywt;setoutdist (mpcobjSTD“模型”特遣部队(0 (2,1)))setEstimator (mpcobjSTD, [], C)

计算标准MPC控制器的闭环响应。

simOpt = mpcsimopt(mpcobjSTD);simOpt。PlantInitialState = x0;R = 0 (1,2);[ySTD,tSTD,uSTD] = sim(mpcobjSTD,ceil(Tstop/Ts),r,simOpt);
——>”模式。“噪音”属性为空。假设每个测量输出都有白噪声。

比较控制器的响应。

情节(tSTD ySTD,“r”、t、y (:, 1:2),“b”tLQR yLQR,“莫”)包含(“时间”) ylabel (“植物输出”)传说(“标准政策委员会”“带终端权值的MPC”“等”“位置”“东北”

图中包含一个轴对象。axis对象包含6个line类型的对象。这些对象表示标准MPC,带终端权值的MPC, LQR。

与标准MPC控制器相比,带终端权值的MPC控制器具有更快的设置时间。LQR控制器和带终端权值的MPC控制器性能完全相同。

您可以通过调整视界来提高标准MPC控制器的性能。例如,如果您增加预测和控制范围(p= 20,=5)时,标准MPC控制器的性能几乎与带终端权值的MPC控制器相同。

这个例子表明,对于无约束的MPC情况,使用终端惩罚权值可以消除调整预测和控制范围的需要。如果您的应用程序包含约束,则使用终端权重不足以保证名义稳定性。您还必须选择适当的视野,并可能添加终端约束。更多信息请参见[2]。

参考文献

[1]斯考特,P. O. M.和J. B.罗林斯,“约束线性二次调节”,IEEE自动控制汇刊(1998), Vol. 43 No. 8, pp. 1163-1169。

罗林斯,j.b.和d.q.梅恩,模型预测控制:理论与设计.诺布·希尔出版社,2010年。

另请参阅

相关的话题