主要内容

模拟MPC控制器与一个定制的QP解算器

你可以模拟一个MPC控制器的闭环响应与一个定制的二次规划(QP)求解模型®。金宝app

这个例子使用一个在线监测应用程序,首先解决它使用模型预测控制工具箱™内置的解算器,然后使用一个定制的解决者使用quadprog(优化工具箱)解算器的优化工具箱™。

以这种方式实现一个自定义的QP解算器不支持代码生成。金宝app更多信息在生成代码定制QP解算器,看看模拟和生成代码为MPC控制器定制QP解算器。关于解决QP的更多信息,请参阅QP解决者

在在线监测的例子中,qp.statusMPC控制器的输出块返回一个正整数时控制器获得一个有效的解决当前运行时QP问题和设置mv输出。的qp.status值对应于用于解决这个QP的迭代次数。

如果不可行QP对于一个给定的控制区间,控制器无法找到解决的办法。在这种情况下,mv外港呆在最近和价值qp.status外港的回报1。同样,如果期间达到的最大数量的迭代优化(罕见)mv外港也和结冰qp.status外港的回报0

实时MPC应用程序可以检测控制器是否在一个“失败”模式(01)通过监控qp.status外港。如果发生故障时,备份控制计划应该被激活。这是必要的,如果有任何机会QP可能变得不可行,因为默认动作(冻结MVs)可能导致不可接受的系统行为,如不稳定。这样一个备份计划一定是特定于应用程序的。

MPC与在线监测应用程序

在本例中使用的植物是一个单,对于系统硬限制操纵变量(MV)和输出(OV)控制。控制目标是OV的定位点0。添加一个无边无际的负载干扰机汇。这种扰动是最初坡道增加。控制器响应最终浸透MV的硬限制。一旦发生饱和,控制器就可以什么都不做,和扰动最终驱动器OV高于其指定的上限。当控制器预测,是不可能强迫OV下面这个上限,运行时QP变得不可行。

植物的定义为一个一阶单位增益输出系统。

工厂=特遣部队(1,2 [1]);

定义了无边无际的负载扰动。增加的信号02之间的13秒,然后坡道回落20之间的35秒。

LoadDist = [0 0;1 0;3 - 2;5 0;7 0];

MPC控制器设计

创建一个MPC对象使用的模型测试工厂。选择控制间隔大约十分之一的主导时间常数。

t = 0.2;mpcobj = mpc(植物、Ts);
- - >“PredictionHorizon”是空的。假设默认10。- - >“ControlHorizon”是空的。假设默认2。- - >“权重。ManipulatedVariables”是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”是空的。假设默认的0.10000。 -->"Weights.OutputVariables" is empty. Assuming default 1.00000.

在植物上定义硬约束输入(MV)和输出(OV)。默认情况下,所有的MV和OV约束是软约束是困难。

mpcobj.MV。最小值= -0.5;mpcobj.MV。Max = 1;mpcobj.OV。最小值= 1;mpcobj.OV。Max = 1;mpcobj.OV。MinECR = 0;变化百分比OV下限从软到硬mpcobj.OV。MaxECR = 0;变化百分比OV上限从软到硬

一般来说,硬OV约束是气馁,这里只是用来说明如何检测到一个不可行的QP。硬OV约束使不可行性可能,在这种情况下,一个备份控制计划是至关重要的。这个例子不包括一个备份计划。然而,如仿真所示,默认动作冻结单MV是最好的反应在这个简单的例子中。

使用仿真软件模拟了内置QP解算金宝app器

%建立控制系统仿真软件模型和启用| qp.status |金宝app通过选择*优化状态* %外港MPC的参数%控制器。显示运行时| qp。|价值地位%控制器状态范围。mdl =“mpc_onlinemonitoring”;open_system (mdl)

模拟闭环响应使用默认的模型预测控制工具箱QP解算器。

open_system ([mdl“/控制器状态”(mdl) open_system (“/响应”])sim (mdl)
- - >转换”模型。植物状态”属性。- - >将模型转换为离散时间。- - >输出假设干扰# 1添加到测量输出集成的白噪声。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。

解释的闭环响应

所示的响应范围,在1.4秒,增加扰动导致MV饱和的下限为-0.5,这是QP的解决方案在这些条件下(因为控制器试图OV的定位点0)。

OV继续增加由于斜坡扰动,在2.2秒,超过指定的上限1.0。由于QP制定预测输出,控制器仍预测,它可以带回OV低于1.0的下一步行动,因此QP问题仍然是可行的。

最后,在t = 3.2秒,控制器预测,它再也不能移动OV低于1.0在未来控制区间和QP问题变得不可行qp.status更改为1。

三秒后,减少干扰。在3.8秒,QP变得可行了。OV仍远高于其选点,然而,MV保持饱和,直到5.4秒,当QP的解决方案是增加MV如图所示。从那时起,MV不是饱和,控制器能够驱动机汇回它的定位点。

当QP是可行的,内置的解决发现的解决方案在三个迭代或更少。

模拟与一个定制的QP解算器

检查自定义如何解决表现在相同的条件下,启动自定义解决选项通过设置Optimizer.CustomSolverMPC控制器的属性。

mpcobj.Optimizer。CustomSolver = true;

你还必须提供一个MATLAB®函数满足下列条件:

  • 函数名必须mpcCustomSolver

  • 函数的输入和输出参数必须匹配中定义mpcCustomSolver.txt模板文件。

  • 函数必须在MATLAB的道路。

对于这个示例,使用自定义中定义的解算器mpcCustomSolver.txt,它使用quadprog命令从优化工具箱定制的QP解算器。实现自己的自定义QP解算器,修改这个文件。

在你的工作文件夹保存功能。m文件。

src = (“mpcCustomSolver.txt”);dest = fullfile (pwd,“mpcCustomSolver.m”);拷贝文件(src,桌子,“f”);

检查保存的mpcCustomSolver.m文件。

函数[x,状态]= mpcCustomSolver (H, f, A, b, x0)% mpcCustomSolver允许用户指定一个自定义的二次规划% (QP)解决解决QP问题制定MPC控制器。当%的“mpcobj.Optimizer。CustomSolver”属性设置真实的,而不是%使用内置的QP解算器,现在将使用客户QP MPC控制器%解算器中定义这个函数在MATLAB和Simulink仿真。金宝app%% MPC QP问题定义如下:x %找到一个最佳的解决方案,最大限度地减少二次目标%功能,J = 0.5 * x ' * H * x + f ' * x,线性不等式%的约束,A * x > =。%%的输入(MPC控制器在运行时提供的):% H: n×n海赛矩阵是对称正定。% f: n×1列向量。%:一个m×n的矩阵不等式约束系数。% b: m×1矢量不等式约束的右边。% x0: n×1向量的初始猜测最优解决方案。%%输出(反馈MPC控制器在运行时):% x:必须是一个n×1最优解向量。%状态:必须是一个有限整数:%的积极价值:用于计算的迭代次数% 0:最大迭代数% 1:QP是不可行的% 2:由于其他原因未能找到一个解决方案%注意,即使解决未能找到一个最优解,必须“x”%作为n×1返回向量(即设置为初始猜测x0)%%不改变线以上%以下代码是如何实现自定义的一个例子QP解算器在这个函数%。它需要优化工具箱。%定义QUADPROG选项和关闭显示的优化结果%命令窗口。选择= optimoptions (“quadprog”);选项。显示=“没有”;%根据定义、约束要求的解算器被定义为“quadprog”% * x < = b。然而,在我们的MPC QP问题,约束是定义为% * x > = b。因此,我们需要实现一些转换:A_custom = -;b_custom = - b;%计算QP的最优解。注意,默认的算法%的“quadprog”(interior-point-convex)忽略x0。“x0”用在这里%的输入参数说明。H = (H + H) / 2;%确保黑森是对称的[x, ~,国旗,输出]= quadprog (H f A_custom b_custom, [], [], [], [], x0,选项);%将“国旗”的输出转换为“状态”所要求的MPC控制器。开关国旗情况下1 = Output.iterations状态;情况下0状态= 0;情况下2状态= 1;否则状态= 2;结束x %总是返回一个非空的正确的大小。当解算器失败,%一个方便的解决方案是设置x的初始猜测。如果地位< = x = 0 x0;结束

重复模拟。

set_param ([mdl“/控制器状态”),“ymax”,“十”);sim (mdl)
- - >转换”模型。植物状态”属性。- - >将模型转换为离散时间。- - >输出假设干扰# 1添加到测量输出集成的白噪声。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。

植物获得的输入和输出信号是相同的那些使用内置的模型预测控制工具箱的能手,但是qp.status显示,quadprog不需要相同数量的迭代找到解决办法。然而,它检测到相同的不可行性。

bdclose (mdl)

另请参阅

功能

对象

相关的例子

更多关于