使用终端惩罚权值提供LQR性能
通过在末端预测状态上设置调整权值,可以使有限视界模型预测控制器等价于无限视界线性二次型调节器。
标准MPC代价函数类似于带输出加权的LQR控制器的代价函数,如下式所示:
LQR和MPC成本函数有以下不同之处:
LQR代价函数力 而且 趋近于零,而MPC成本函数的力量 而且 朝向非零设定值。您可以移动MPC预测模型的原点以消除这种差异并实现零标称设定值。
LQR代价函数使用无限的预测视界,其中操纵变量在每个样本时间都发生变化。在标准MPC代价函数中,视界长度为 ,被操纵变量发生变化 次, 是控制视界。
如果MPC成本函数为:
在这里,
为在最终预测水平步上施加的最终惩罚权,预测水平与控制水平相等(
=
).所需的
里卡蒂矩阵是用等方面
而且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代价函数,首先计算 的Cholesky分解 ,以致于 .
L = chol(Qp);
接下来,定义辅助的未测量输出变量 ,以致于 .增加工厂的输出向量,使其包含这些辅助输出。
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;
处以最终罚款
通过指定一个单位重量
.终端重量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”,“等”,“位置”,“东北”)
与标准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年。