主要内容

在快速MPC应用中使用次优解决方案

这个例子展示了如何使用优化解算器返回的次最优解来保证MPC控制器在实时应用中的最坏情况执行时间。

什么是次优解?

模型预测控制(MPC)在每个控制区间解决一个二次规划(QP)问题。内置的QP求解器使用迭代主动集算法,对MPC应用是有效的。然而,当存在约束时,无法预测需要多少次求解器迭代才能找到最优解。此外,在实时应用程序中,从一个控制间隔到下一个控制间隔的迭代次数可能会发生显著变化。在这种情况下,最坏情况下的执行时间可能超过硬件平台上允许的、由控制器采样时间决定的限制。

通过在优化迭代次数超过指定的最大值后应用次优解决方案,可以保证MPC控制器的最坏情况执行时间。要设置最坏情况的执行时间,首先通过在标称条件下使用控制器进行试验,确定单个优化迭代所需的时间。然后,为每个控制间隔设置一个小的迭代次数上限。

默认情况下,当达到最大迭代次数时,MPC控制器不使用次优解决方案。相反,控制器设置一个错误标志(状态= 0)并冻结其输出。通常,早期迭代中可用的解决方案已经足够好了,但是需要改进以找到最优的解决方案,这将导致许多额外的迭代。

这个例子展示了如何配置MPC控制器以使用次优解决方案。次最优解是在最终迭代时可用的可行解(如有必要,可修改以满足对操纵变量的任何硬约束)。要确定次优解决方案是否为您的应用程序提供可接受的控制性能,请在整个操作范围内运行模拟。

定义植物模型

对象模型是一个稳定的随机生成状态空间系统。它有10州,3.操纵变量(MV)3.输出(OV)。

rng (1234);nX = 10;11月= 3;nMV = 3;工厂= rss (nX 11月,nMV);工厂。d = 0;t = 0.1;

设计带约束的MPC控制器

创建一个MPC控制器,为除约束外的所有控制器参数设置默认值。指定操作变量和输出变量的约束。

冗长= mpcverbosity (“关闭”);%暂时禁用命令行消息。mpcobj = mpc(Plant, Ts);i = 1:nMV mpcobj.MV(i)。最小值= -1.0;mpcobj.MV(我)。Max = 1.0;结束i = 1:nOV mpcobj.OV(i)。最小值= -1.0;mpcobj.OV(我)。Max = 1.0;结束

同时对操纵变量和输出变量的约束需要相对大量的QP迭代来确定最优控制序列。

在MATLAB中对随机输出扰动进行仿真

首先,使用每个控制区间的最优解来模拟MPC控制器。为了只关注输出抗干扰性能,将输出参考值设为零。

T = 5;N = T/Ts + 1;r = 0(11月1日);SimOptions = mpcsimopt ();SimOptions。OutputNoise = 3 * randn (N, 11月);[y, t, u, ~, ~, ~,状态]= sim (mpcobj N r, [], SimOptions);

绘制每个控制区间中使用的迭代次数。

图楼梯(状态)标题(的迭代次数

最大的迭代次数为21次,平均为5.8次。

创建具有相同设置的MPC控制器,但将其配置为使用次优解决方案。

mpcobjSub = mpcobj;mpcobjSub.Optimizer.UseSuboptimalSolution = true;

将默认active-set QP求解器的最大迭代次数减少到一个较小的数字。

mpcobjSub.Optimizer.ActiveSetOptions.MaxIterations = 3;

对输出扰动序列相同的第二控制器进行仿真。

[ySub tSub uSub, ~, ~, ~, statusSub] = sim (mpcobjSub N r, [], SimOptions);

在同一图上绘制每个控制间隔中使用的迭代次数。对于达到最大迭代次数的任意控制区间,statusSub是零。在绘制结果之前,将这些间隔的迭代次数设置为3.

statusSub(statusSub == 0) = 3;楼梯(statusSub)传说(“最优”“次优”

最大的迭代次数现在是3次,平均是2.8次。

比较两个控制器的性能。当使用次最优解决方案时,与最优解决方案相比,控制性能没有显著恶化。

数字ct = 1:3次要情节(3、1,ct)情节(t、y (ct):,, t, ySub (ct):,)结束次要情节(1,1)标题(“输出”)传说(“最优”“次优”

对于实时应用程序,只要每次求解器迭代在硬件上花费的时间小于30毫秒,最坏情况下的执行时间不会超过控制器的采样时间(0.1秒)。一般来说,可以放心地假设每个迭代使用的执行时间多多少少是一个常量。

在Simulink中进行金宝app随机输出干扰的仿真

在Simulink®中模拟控制器。金宝app

如果~ mpcchecktoolboxinstalled (“金宝app模型”) disp (运金宝app行这个示例需要Simulink(R)。返回结束模型=“mpc_SuboptimalSolution”;open_system(模型)sim(模型)

与命令行模拟一样,每个控制间隔的平均QP迭代次数减少了,但没有显著影响控制性能。

mpcverbosity(详细);%启用命令行消息。bdclose(模型)

另请参阅

功能

相关的话题