主要内容

mpcInteriorPointSolver

利用内点算法求解二次规划问题

描述

使用mpcInteriorPointSolver,您可以解决二次规划(QP)问题使用原始-对偶内点算法与Mehrotra预测-校正器。此功能提供了对内置模型预测控制工具箱™内部点QP求解器的访问。

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

这个求解器适用于:

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

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

或者,您也可以使用访问内置的active-set QP求解器mpcActiveSetSolver

例子

xexitflag= mpcInteriorPointSolver(Hf一个bAeq说真的x0选项找到最优解x用最小化目标函数的方法求解二次规划问题

J 1 2 x H x + f x

受不等式约束 一个 x b 和等式约束 一个 e x b e exitflag表示的有效性x

xexitflag可行的λ= mpcInteriorPointSolver(Hf一个bAeq说真的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.

指定目标函数的海森矩阵和线性乘子向量。

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);

定义Aeq而且说真的表示没有等式约束。

N =长度(f);Aeq = 0 (0,n);Beq = 0 (0,1);

作为最佳实践,请验证这一点H是正定的吗胆固醇函数。

[~,p] = chol(H);

如果P = 0,然后H是正定的。

p
P = 0

为创建默认选项集mpcInteriorPointSolver

opt = mpcInteriorPointOptions;

要冷启动求解器,请指定元素的初始猜测值为零x

X0 = 0 (n,1);

解决QP问题。

[x,exitflag] = mpcInteriorPointSolver(H,f,A,b,Aeq,beq,x0,opt);

检查解决方案x

x
x =2×10.6667 - 1.3333

输入参数

全部折叠

黑森矩阵,指定为n——- - - - - -n矩阵,n> 0是优化变量的个数。

内点QP算法要求黑森矩阵是正定的。以确定是否H是正定的,用胆固醇函数。

[~,p] = chol(H);

如果p= 0,然后H是正定的。否则,p为正整数。

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

线性不等式约束系数,指定为——- - - - - -n矩阵,n优化变量的个数和是不等式约束的个数。

如果你的问题没有不等式约束,使用0 (0, n)

不等式约束的右边,指定为长度的列向量,在那里是不等式约束的个数。

如果你的问题没有不等式约束,使用0 (0, 1)

线性等式约束系数,指定为a——- - - - - -n矩阵,n优化变量的个数和< =n是等式约束的个数。等式约束必须与线性无关rank(Aeq) = q

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

等式约束的右边,指定为长度的列向量,在那里是等式约束的个数。

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

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

选项集mpcInteriorPointSolver,指定为使用创建的结构mpcInteriorPointOptions

输出参数

全部折叠

QP问题的最优解,作为长度的列向量返回n,在那里n是优化变量的个数。mpcInteriorPointSolver总是返回一个值x.要确定解决方案是否最优或可行,请检查exitflag而且可行的

解决方案有效性指标,按下表返回整数。

价值 描述
> 0 x是最优的。exitflag表示优化期间执行的迭代次数。
0 在求解器找到最优解之前,达到了最大迭代次数。解决方案x只有当可行的真正的
1 这个问题似乎是不可行的;这就是约束条件 一个 x b 不能满足。

解决方案的可行性,作为逻辑标量返回。当exitflag0,求解器达到最大迭代次数,而没有找到最优解。这个次优解返回x,只有当可行的是真的。

拉格朗日乘子,返回为具有以下字段的结构。

描述
ineqlin 不等式约束的乘数,作为长度向量返回n.当解决方案是最优的,元素ineqlin是负的。
eqlin 等式约束的乘数,作为长度向量返回.在最优解中没有符号限制。

提示

  • 以确定是否H是正定的,用胆固醇函数。

    [~,p] = chol(H);

    如果p= 0,然后H是正定的。否则,p为正整数。

  • mpcInteriorPointSolver提供对模型预测控制工具箱软件使用的内点QP求解器的访问。使用此命令可以在您自己的自定义MPC应用程序中解决QP问题。有关自定义MPC应用程序的示例,请参见解决自定义MPC二次规划问题并生成代码.这个例子使用了mpcActiveSetSolver,然而,工作流适用于mpcInteriorPointSolver

算法

mpcInteriorPointSolver采用内点法求解QP问题。有关更多信息,请参见QP解决者

扩展功能

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

版本历史

R2020a中引入