????????模型预测控制器 QP 求解器将线性 MPC 优化问题转换为一般形式的 QP 问题
????????受到线性不等式约束
????????其中
????????在每个控制区间开始时,控制器会计算 H、f、A 和 b。?如果 H 或 A 是常数,控制器会检索它们的预计算值。
????????模型预测控制工具箱 (Model Predictive Control Toolbox?) 软件支持两种解决 QP 问题的内置算法。这两种求解器都要求 Hessian 矩阵为正定(positive definite)矩阵。
????????在为您的应用选择和配置 QP 求解器时,请考虑以下几点:
????????当求解器检测到问题不可行或迭代次数达到最大值但未找到最优解时,控制器会保留上次成功的控制输出。更多信息,请参阅 mpcmove(mpcmove)。您可以检测异常结果,并根据需要覆盖默认行为。
????????在第一个控制步骤中,QP 求解器使用冷启动,初始猜测是无约束模型预测控制中描述的无约束解(Unconstrained Model Predictive Control)。如果 x 满足约束条件,它就是最优 QP 解,算法终止。否则,至少有一个线性不等式约束必须满足相等条件,求解器将计算出最优解。对于后续控制步骤:
????????要为需要解决在线 QP 问题的应用访问 QP 求解器,可使用 mpcActiveSetSolver 和 mpcInteriorPointSolver 函数,它们在以下方面非常有用:
????????模型预测控制工具箱软件可让您为 MPC 控制器指定自定义 QP 求解器。在每个控制区间,该求解器都会被调用,以替代内置求解器。该选项可用于
????????您可以为仿真或代码生成定义自定义求解器。无论在哪种情况下,您都可以使用自定义函数定义自定义求解器,并将控制器配置为使用该自定义函数。
Task | Custom Solver Function | Affected MATLAB??Functions | Affected Simulink??Blocks |
---|---|---|---|
Simulation Set?
|
Supports:
|
|
|
Code Generation Set?
|
Supports:
|
|
自定义仿真求解器
要使用自定义 QP 求
????????要使用自定义 QP 求解器模拟 MPC 控制器,请执行以下步骤。
src = which('mpcCustomSolver.txt');
dest = fullfile(pwd,'mpcCustomSolver.m');
copyfile(src,dest,'f');
mpcobj.Optimizer.CustomSolver = true;
????????有关示例,请参阅使用自定义 QP 求解器模拟 MPC 控制器(Simulate MPC Controller with a Custom QP Solver)。
????????可以将 MPC 对象配置为使用 quadprog(优化工具箱)函数提供的活动集求解器作为自定义 QP 求解器。
????????要自动配置 MPC 对象 mpcobj 在仿真和代码生成中使用 quadprog 作为自定义 QP 求解器,可以使用 setCustomSolver 函数。具体来说,在 MATLAB 命令提示符下输入以下内容。
setCustomSolver(mpcobj,'quadprog')
????????该命令将在当前文件夹下生成 mpcCustomSolver.m 和 mpcCustomSolverCodeGen.m 文件,它们在内部调用 quadprog(优化工具箱)。然后将 mpcobj.Optimizer.CustomSolver 和 mpcobj.Optimizer.CustomSolverCodeGen 设置为 true。
您还可以进一步自定义这些功能,例如调整求解器选项,前提是您使用的是 active-set 求解器(因为 MPC 问题不支持其他 quadprog 求解器)。
????????要将 mpcobj 恢复为使用 mpcobj.Optimizer.Algorithm 中指定的内置算法进行仿真和代码生成,请调用 setCustomSolver,具体如下。
setCustomSolver(mpcobj,'quadprog')
????????此命令将 mpcobj.Optimizer.CustomSolver 和 mpcobj.Optimizer.CustomSolverCodeGen 设置为 false。
????????您可以使用由 Embotech AG 开发的实时嵌入式优化软件工具 FORCESPRO,为使用模型预测控制工具箱软件设计的 MPC 控制器进行仿真并生成代码。从 FORCESPRO 2.0 开始,Embotech 提供了一个插件,利用模型预测控制工具箱软件的设计功能和 FORCESPRO 的计算性能。使用该插件,您可以生成一个自定义 QP 求解器,该求解器允许部署在实时硬件上,并根据您的特定 MPC 问题进行了高度优化,以达到令人满意的实时性能。尤其是长跨度 MPC 问题可以得到非常高效的解决。
????????有关将 FORCESPRO 求解器与模型预测控制工具箱软件结合使用的信息,请参阅 "使用 Embotech FORCESPRO 求解器实施 MPC 控制器"。