主要内容

mpcintiorpointsolver

使用内点算法解决二次编程问题

描述

使用mpcintiorpointsolver,您可以使用具有Mehrotra Predictor-Corrator的原始双重内点算法来解决二次编程(QP)问题。此功能可访问内置模型预测控制工具箱™内点QP求解器。

使用内点求解器可以为大规模优化问题提供卓越的性能,例如在大型预测和控制范围内执行约束的MPC应用程序。

该求解器对:

  • 超出模型预测控制工具箱软件范围的高级MPC应用程序。

  • 自定义QP应用程序,包括需要代码生成的应用程序。

另外,您也可以使用mpcactivesetsolver

例子

[[X,,,,出口] = mpcintiorpointsolver(H,,,,F,,,,一个,,,,b,,,,AEQ,,,,beq,,,,X0,,,,选项找到最佳解决方案X通过最小化目标函数来解决二次编程问题

j = 1 2 X H X + F X

受到不平等约束 一个 X b 和平等约束 一个 e X = b e 出口表示有效性X

[[X,,,,出口,,,,可行的,,,,兰姆达] = mpcintiorpointsolver(H,,,,F,,,,一个,,,,b,,,,AEQ,,,,beq,,,,X0,,,,选项还返回逻辑标志可行的这表明解决方案和拉格朗日乘数的可行性兰姆达对于解决方案。

例子

全部收缩

找到值X最小化

F (( X = 0 5 X 1 2 + X 2 2 - X 1 X 2 - 2 X 1 - 6 X 2 ,,,,

受约束的约束

X 1 0 X 2 0 X 1 + X 2 2 - X 1 + 2 X 2 2 2 X 1 + X 2 3

为目标函数指定Hessian矩阵和线性乘数向量。

h = [1 -1;-1 2];f = [-2;-6];

指定不等式约束参数。

a = [-1 0;0 -1;1 1;-1 2;2 1];b = [0;0;2;2;3];

定义AEQbeq表示没有平等约束。

n =长度(f);aeq = zeros(0,n);beq =零(0,1);

作为最佳实践,请验证H使用肯定chol功能。

[〜,p] = chol(h);

如果p = 0, 然后H是积极的。

p
p = 0

创建一个默认选项集mpcintiorpointsolver

opt = mpcintiorpointOptions;

要冷启动求解器,请指定对零元素元素的初始猜测X

x0 =零(n,1);

解决QP问题。

[X,Exitflag] = mpcintiorpointsolver(H,F,A,B,AEQ,BEQ,X0,OPT);

检查解决方案X

X
x =2×10.6667 1.3333

输入参数

全部收缩

Hessian Matrix,指定为n-经过-n矩阵,哪里n> 0是优化变量的数量。

内点QP算法要求Hessian基质是正定的。确定是否H是积极的,使用chol功能。

[〜,p] = chol(h);

如果p= 0, 然后H是积极的。否则,p是一个积极的整数。

目标函数线性项的乘数,指定为长度的列矢量n, 在哪里n是优化变量的数量。

线性不等式约束系数,指定为m-经过-n矩阵,哪里n是优化变量的数量和m是不平等约束的数量。

如果您的问题没有不平等约束,请使用零(0,n)

不等式约束的右侧,指定为长度的列向量m, 在哪里m是不平等约束的数量。

如果您的问题没有不平等约束,请使用零(0,1)

线性平等约束系数,指定为-经过-n矩阵,哪里n是优化变量的数量和<=n是平等约束的数量。平等约束必须与等级(AEQ)= Q

如果您的问题没有平等限制,请使用零(0,n)

平等约束的右侧,指定为长度的列向量, 在哪里是平等约束的数量。

如果您的问题没有平等限制,请使用零(0,1)

对解决方案的初始猜测,其中不等式的相等部分是真实的,指定为长度的列向量n, 在哪里n是优化变量的数量。为一个冷启动,将初始猜测指定为零(n,1)

选项设置为mpcintiorpointsolver,指定为使用的结构mpcintiorpointOptions

输出参数

全部收缩

QP问题的最佳解决方案,返回为长度的列向量n, 在哪里n是优化变量的数量。mpcintiorpointsolver总是返回一个值X。要确定解决方案是最佳还是可行的,请检查出口可行的

解决方案有效性指示器,根据下表作为整数返回。

价值 描述
> 0 X是最佳的。出口表示优化过程中执行的迭代次数。
0 在求解器找到最佳解决方案之前,已达到最大迭代次数。解决方案X只有在可行的真的
-1 这个问题似乎是不可行的。也就是说,约束 一个 X b 无法满足。

解决方案可行性,作为逻辑标量返回。什么时候出口0,求解器达到了最大迭代次数,而没有找到最佳解决方案。这个次优的解决方案,返回X,只有在可行的是真的。

Lagrange乘数,作为带有以下字段的结构返回。

场地 描述
Ineqlin 不平等约束的乘数,作为长度向量返回n。当解决方案最佳时,Ineqlin是无负的。
eqlin 平等约束的乘数,返回为长度的向量。最佳解决方案中没有符号限制。

提示

  • 确定是否H是积极的,使用chol功能。

    [〜,p] = chol(h);

    如果p= 0, 然后H是积极的。否则,p是一个积极的整数。

  • mpcintiorpointsolver提供对模型预测控制工具箱软件使用的内点QP求解器的访问。使用此命令在您自己的自定义MPC应用程序中解决QP问题。有关自定义MPC应用程序的示例,请参阅解决自定义MPC二次编程问题并生成代码。此示例使用mpcactivesetsolver但是,工作流程适用于mpcintiorpointsolver也是。

算法

mpcintiorpointsolver使用内点方法解决QP问题。有关更多信息,请参阅QP求解器

扩展功能

GPU代码生成
使用GPU CODER™为NVIDIA®GPU生成CUDA®代码。

版本历史记录

在R2020a中引入