主要内容

quadprog

二次编程

描述

具有线性约束的二次目标函数的求解器。

QuadProg查找最低限度的问题

最小值 x 1 2 x T H x + f T x 以致 一个 x b 一个 e x b e l b x u b

H一个, 和Aeq是矩阵,和fb说真的乌兰巴托, 和x是向量。

你可以通过f, 和乌兰巴托向量或矩阵;看到矩阵论据

请注意

quadprog仅适用于基于求解器的方法。有关这两种优化方法的讨论,请参见首先选择基于问题或基于解决者的方法

x= quadprog (Hf返回一个向量x,最大限度地减少1/2 * x ' * H * x + f ' * x. 输入H对于有有限极小值的问题必须是正定的。如果H是正定的,那么解呢x = H \ (f)

例子

x= quadprog (Hf一个b最小化1/2 * x ' * H * x + f ' * x受限制* xb. 输入一个是双精度矩阵吗b是一个双精度向量。

例子

x= quadprog (Hf一个bAeq说真的解决了上述问题的附加限制Aeq * x =说真的Aeq是双精度矩阵吗说真的是一个双精度向量。如果不存在不等式,集合一个= []b=[]

例子

x= quadprog (Hf一个bAeq说真的乌兰巴托解决了上述问题的附加限制x乌兰巴托. 输入s乌兰巴托向量是双精度的吗,对每个向量都有限制x组件。如果不存在等式,则设置Aeq = []说真的= []

请注意

如果出现问题的指定输入界限是不一致的,则输出xx0和输出fval.[]

quadprog重置的组件x0这就违反了界限x乌兰巴托到边界所定义的方框内部。quadprog不改变符合边界的分量。

x= quadprog (Hf一个bAeq说真的乌兰巴托x0从向量开始解决前面的问题x0. 如果不存在边界,则设置磅= []乌兰巴托= [].一些quadprog算法忽略x0; 看见x0

请注意

x0是必要的论点吗'active-set'算法。

例子

x= quadprog (Hf一个bAeq说真的乌兰巴托x0选项使用中指定的优化选项解决上述问题选项.使用optimoptions创建选项. 如果you do not want to give an initial point, setx0 = []

例子

x= quadprog (问题返回的最小值问题,描述的结构问题.创建问题使用点表示法或结构体函数。另外,创建一个问题结构的OptimizationProblem对象的使用prob2struct

例子

xfval.) = quadprog (___,对于任何输入变量,也会返回fval.,目标函数的值为x

fval=0.5*x'*H*x+f'*x

例子

xfval.exitflag输出) = quadprog (___同样的回报exitflag,一个整数,用于描述quadprog, 和输出,一个包含有关优化信息的结构。

例子

xfval.exitflag输出λ) = quadprog (___同样的回报λ,该结构的场在其解处包含拉格朗日乘子x

例子

wsoutfval.exitflag输出λ) = quadprog (Hf一个bAeq说真的乌兰巴托ws开始quadprog从热启动对象中的数据中获取ws,使用中的选项ws.返回的参数wsout包含中的解决方案点wsout.x..通过使用wsout作为后续求解器调用中的初始热启动对象,quadprog你可以工作得更快。

例子

全部收缩

求最小值

f x 1 2 x 1 2 + x 2 2 - x 1 x 2 - 2 x 1 - 6 x 2

受限制

x 1 + x 2 2 - x 1 + 2 x 2 2 2 x 1 + x 2 3.

quadprog语法,这个问题是最小化的

f x 1 2 x T H x + f T x

哪里

H 1 - 1 - 1 2 f - 2 - 6

受线性约束。

为了解决这个问题,首先输入系数矩阵。

H = [1 -1;1 2];f = [2;6);A = [1 1;1 - 2;2 1];b = [2;2;3);

调用quadprog

[x, fval exitflag、输出λ)=...quadprog (H f A、b);
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。

检查最后一个点、函数值和退出标志。

x fval exitflag
x =2×10.6667 - 1.3333
fval = -8.2222.
EXITFLAG = 1

的退出标志1表示结果是局部最小值。因为H是一个正定的矩阵,这个问题是凸的,所以最小是全局最小的。

确认H通过检查其特征值,它是正定的。

eig(H)
ans =2×10.3820 2.6180

求最小值

f x 1 2 x 1 2 + x 2 2 - x 1 x 2 - 2 x 1 - 6 x 2

受约束

x 1 + x 2 0

quadprog语法,这个问题是最小化的

f x 1 2 x T H x + f T x

哪里

H 1 - 1 - 1 2 f - 2 - 6

受线性约束。

为了解决这个问题,首先输入系数矩阵。

H=[1-1;-12];f=[-2;-6];Aeq=[1];beq=0;

调用quadprog,进入[]的输入一个b

[x, fval exitflag、输出λ)=...quadprog (H f [] [], Aeq, beq);
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。

检查最后一个点、函数值和退出标志。

x fval exitflag
x =2×1-0.8000 - 0.8000
fval = -1.6000
EXITFLAG = 1

的退出标志1表示结果是局部最小值。因为H是一个正定的矩阵,这个问题是凸的,所以最小是全局最小的。

确认H通过检查其特征值,它是正定的。

eig(H)
ans =2×10.3820 2.6180

找到x使二次表达式最小化

1 2 x T H x + f T x

哪里

H 1 - 1 1 - 1 2 - 2 1 - 2 4 f 2 - 3. 1

受限制

0 x 1 x 1 / 2

要解决这个问题,首先输入系数。

H = [1,-1,1 -1,2,-2 1,-2,4];f = [2; -3; 1];磅= 0 (3,1);UB =α(大小(LB));AEQ =那些(1,3);BEQ = 1/2;

调用quadprog,进入[]的输入一个b

x=quadprog(H、f、[]、[]、Aeq、beq、lb、ub)
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
x =3×10.0000 0.5000 0.0000.

设置用于监视项目进度的选项quadprog

选择= optimoptions (“quadprog”“显示”“通路”);

定义一个具有二次目标和线性不等式约束的问题。

H = [1 -1;1 2];f = [2;6);A = [1 1;1 - 2;2 1];b = [2;2;3);

来帮助编写quadprog函数调用,设置不必要的输入[]

AEQ = [];beq = [];lb = [];UB = [];x0 = [];

调用quadprog来解决这个问题。

x=quadprog(H、f、A、b、Aeq、beq、lb、ub、x0、选项)
Iter Fval Primal infas Dual infas complement 0 - 8.33488e +00 3.214286e+00 1.071429e-01 1.000000e+00 1 -8.331868e+00 1.321041e-01 4.40347e -03 1.910489e-01 2 -8.212804e+00 1.676295e-03 5.587652e-05 1.009601e-02 3 -8.222204e+00 8.381476e-07 2.793826e-08 1.809485e-05 4 -8.222222e+00 2.975398e-14 1.352696e-12 7.525735e-13满足约束条件。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
x =2×10.6667 - 1.3333

创建一个问题结构使用具体问题具体分析优化工作流程. 创建一个优化问题,相当于线性约束的二次规划

x = Optimvar(“x”2);objec = x (1) ^ 2/2 + x (2) ^ 2 - x (1) * (2) - 2 * x (1) - 6 * x (2);概率= optimproblem (“目标”, objec);prob.Constraints。Cons1 = sum(x) <= 2;prob.Constraints。con2 = -x(1) + 2*x(2) <= 2;prob.Constraints。con3 = 2*x(1) + x(2) <= 3;

转换概率到一个问题结构

问题= prob2struct(概率);

使用方法解决问题quadprog

[x,fval] = quadprog(问题)
警告:你的Hessian不是对称的。重置H = (H + H) / 2。
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
x =2×10.6667 - 1.3333
fval = -8.2222.

解决二次程序并返回解决方案和目标函数值。

H = [1,-1,1 -1,2,-2 1,-2,4];f = [7, -12; -15);一个= (1 1 1);b = 3;[x, fval] = quadprog (H, f, A, b)
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
x =3×1-3.5714 2.9286 3.6429
fval = -47.1786.

方法计算的值是否与返回的目标函数值匹配quadprog目标函数定义。

fval2=1/2*x'*H*x+f'*x
fval2 = -47.1786.

来看看优化过程quadprog,设置选项以显示迭代显示并返回4个输出。问题是最小化

1 2 x T H x + f T x

0 x 1

哪里

H 2 1 - 1 1 3. 1 2 - 1 1 2 5 f 4 - 7 12

输入问题系数。

H = [2 1 -1 1 3 1/2 -1 1/2 5];f = [4; -7; 12];磅= 0 (3,1);UB =α(3,1);

设置选项以显示求解器的迭代进度。

选择= optimoptions (“quadprog”“显示”“通路”);

调用quadprog有四个输出。

[x fval exitflag,输出]= quadprog (H, f ,[],[],[],[], 磅,乌兰巴托,[]选项)
国际热核实验堆原发感染-双感染互补性0 2.691769e+01 1.582123e+00 1.712849e+01 1.680447e+01-3.889430e+00 0.000000e+00 8.564246e-03 9.971731e-01 2-5.451769e+00 0.000000e+00 4.282123e-06 2.710131e-02 3-5.499997e+00.000000e+00 1.221938e-10 6.9396E-07-5.89000E-14.8410-98E发现最小值满足约束条件。优化已完成,因为目标函数在可行方向上不递减,在最优性公差值范围内,且约束满足在约束公差值范围内。
x =3×10.0000 1.0000 0.0000
fval = -5.5000
EXITFLAG = 1
输出=结构体字段:消息:“……' algorithm: 'interior-point-凸' firstorderopt: 1.5921e-09 construct: 0 iterations: 4 linearsolver: 'dense' cgiterations: []

解一个二次规划问题并返回拉格朗日乘数。

H = [1,-1,1 -1,2,-2 1,-2,4];f = [7, -12; -15);一个= (1 1 1);b = 3;磅= 0 (3,1);[x,fval,出口,输出,lambda] = quadprog(h,f,a,b,[],[],lb);
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。

检验拉格朗日乘子结构λ

disp(lambda)
eqlin: [0x1 double] lower: [3x1 double] upper: [3x1 double]

线性不等式约束具有相应的拉格朗日乘子12

显示与下限相关联的乘数。

disp (lambda.lower)
5.0000 0.0000 0.0000

只有第一个组成部分lambda.lower有一个非零乘数。这通常意味着只有第一个组成部分x在0的下界。通过显示组件来确认x

disp (x)
0.0000 1.5000 1.5000

速度后续quadprog调用时,创建一个热启动对象。

选择= optimoptions (“quadprog”“算法”'active-set');x0 = [1 2 3];WS = OptimWarmStart(X0,选项);

ws

H = [1,-1,1 -1,2,-2 1,-2,4];f = [7, -12; -15);一个= (1 1 1);b = 3;磅= 0 (3,1);抽搐(ws、fval exitflag、输出λ)= quadprog (H f A、b[],[],磅,[],ws);toc
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。运行时间为0.021717秒。

改变目标函数,重新解决问题。

f = (-10; -15; -20);抽搐(ws、fval exitflag、输出λ)= quadprog (H f A、b[],[],磅,[],ws);toc
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。运行时间为0.018485秒。

输入参数

全部收缩

二次目标项,指定为对称实矩阵。H表示表达式中的二次型1/2 * x ' * H * x + f ' * x. 如果H不是对称的,quadprog发出警告并使用对称版本(H + H ') / 2代替。

如果二次矩阵H是稀疏的,则默认情况下“interior-point-convex”算法使用略有不同的算法而非略有算法H是密集的。通常,稀疏算法在大,稀疏问题上更快,密集算法在密集或小问题上更快。有关更多信息,请参阅LinearSolver选项描述和interior-point-convex quadprog算法

例子:(2, 1, 1, 3)

数据类型:

线性目标术语,指定为真正的载体。f表示表达式中的线性项1/2 * x ' * H * x + f ' * x

例子:(1; 3; 2)

数据类型:

线性不等式约束,指定为真实矩阵。一个是一个——- - - - - -N矩阵,是不平等的数量,和N是变量的数量(元素的数量x0).对于大问题,不予考虑一个作为一个稀疏矩阵。

一个编码线性不等式

A * x < =

哪里x列向量是N变量x(:), 和b列向量是元素。

例如,考虑这些不等式:

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30,

通过输入以下约束来指定不等式。

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:指定x组件总和为1或更少,使用A=一(1,N)b = 1

数据类型:

线性不等式约束,指定为实向量。b是一个元素向量相关的一个矩阵。如果你通过b作为一排矢量,求解器内部转换b到列向量b(:).对于大问题,不予考虑b作为稀疏的矢量。

b编码线性不等式

A * x < =

哪里x列向量是N变量x(:), 和一个是大小的矩阵——- - - - - -N

例如,考虑这些不等式:

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30。

通过输入以下约束来指定不等式。

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:指定x组件总和为1或更少,使用A=一(1,N)b = 1

数据类型:

线性等式约束,指定为实矩阵。Aeq是一个——- - - - - -N矩阵,是等式的个数,和N是变量的数量(元素的数量x0).对于大问题,不予考虑Aeq作为一个稀疏矩阵。

Aeq编码线性等式

Aeq * x =说真的

哪里x列向量是N变量x(:), 和说真的列向量是元素。

例如,考虑这些不等式:

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,

通过输入以下约束来指定不等式。

Aeq =[1、2、3、2、4、1];说真的=(10、20);

例子:若要指定x分量的总和为1,请使用Aeq = 1 (1, N)说真的= 1

数据类型:

线性等式约束,指定为实向量。说真的是一个元素向量相关的Aeq矩阵。如果你通过说真的作为一排矢量,求解器内部转换说真的到列向量说真的(:).对于大问题,不予考虑说真的作为稀疏的矢量。

说真的编码线性等式

Aeq * x =说真的

哪里x列向量是N变量x(:), 和Aeq是大小的矩阵——- - - - - -N

例如,考虑这些等式:

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20。

通过输入以下约束来指定相等项。

Aeq =[1、2、3、2、4、1];说真的=(10、20);

例子:若要指定x分量的总和为1,请使用Aeq = 1 (1, N)说真的= 1

数据类型:

下限,指定为实向量或实数组。如果x0等于元素的个数, 然后指定

x(我)> =磅(我)总的来说

如果元素个数(磅)<元素个数(x0), 然后指定

x(我)> =磅(我)为了1 <= I <= numel(lb)

如果元素比x0,解决方案发出警告。

例子:要指定所有x分量都为正值,请使用lb=零(尺寸(x0))

数据类型:

上界,指定为实向量或实数组。如果元素的数量x0等于元素的个数乌兰巴托, 然后乌兰巴托指定

x(i)<=ub(i)总的来说

如果元素个数(乌兰巴托)<元素个数(x0), 然后乌兰巴托指定

x(i)<=ub(i)为了1 <= I <= numel(ub)

如果乌兰巴托元素比x0,解决方案发出警告。

例子:要指定所有x组件小于1,请使用乌兰巴托= 1(大小(x0))

数据类型:

初始点,指定为真正的矢量。长度x0的行数或列数H

x0适用于“信任区域反射”当问题只有约束条件时的算法。x0也适用于'active-set'算法。

请注意

x0是必要的论点吗'active-set'算法。

如果没有指定x0quadprog设置的所有组件x0到边界所定义的方框内部的一个点。quadprog忽略了x0“interior-point-convex”算法与算法“信任区域反射”具有等式约束的算法。

例子:(1, 2, 1)

数据类型:

的输出,指定为优化选项optimoptions或一种结构,如optimset的回报。

控件中缺少一些选项optimoptions显示。这些选项在下表中以斜体显示。有关详细信息,请参见查看选项

所有的算法

算法

选择算法:

  • “interior-point-convex”(默认)

  • “信任区域反射”

  • 'active-set'

“interior-point-convex”算法只处理凸问题。的“信任区域反射”算法处理的问题只有界限或只有线性等式约束,而不是两者。的'active-set'算法处理不确定的问题,假设的投影H在零空间上Aeq是积极的semidefinite。有关详细信息,请参见选择算法

诊断

显示关于要最小化或解决的函数的诊断信息。的选择是“上”或者“关闭”(默认)。

显示

显示水平(见迭代显示):

  • “关闭”或者“没有”显示没有输出。

  • “最后一次”只显示最终输出(默认)。

“interior-point-convex”'active-set'算法允许附加值:

  • “通路”指定迭代显示。

  • “iter-detailed”指定具有详细退出消息的迭代显示。

  • 最后详细的仅显示带有详细退出消息的最终输出。

MaxIterations

允许的最大迭代次数;一个正整数。

  • 对于一个“信任区域反射”等式约束问题,默认值为2 * (numberOfVariables - numberOfEqualities)

  • 'active-set'默认值为10*(numberOfVariables+numberOfConstraints)

  • 对于所有其他算法和问题,默认值是200

为了optimset,选项名称为麦克斯特.看到当前和遗留选项名称

OptimalityTolerance

一阶最优性的终止公差一个积极的标量。

  • 对于一个“信任区域反射”等式约束问题,默认值为1 e-6

  • 对于一个“信任区域反射”有界约束的问题,默认值为100*eps, 关于2.2204 e-14

  • “interior-point-convex”'active-set'算法,默认值为1 e-8

看到公差和停止标准

为了optimset,选项名称为TolFun.看到当前和遗留选项名称

阶跃公差

终止上公差x;一个积极的标量。

  • 为了“信任区域反射”,默认值为100*eps, 关于2.2204 e-14

  • 为了“interior-point-convex”,默认值为1e-12

  • 为了'active-set',默认值为1 e-8

为了optimset,选项名称为托克斯.看到当前和遗留选项名称

“信任区域反射”算法只

FunctionTolerance

功能值的终止公差;正标量。默认值取决于问题类型:绑定约束问题使用100*eps,以及线性等式约束问题1 e-6.看到公差和停止标准

为了optimset,选项名称为TolFun.看到当前和遗留选项名称

HessianMultiplyFcn

海森乘法函数,指定为函数句柄。对于大规模的结构化问题,这个函数计算Hessian矩阵乘积H * Y没有真正形成H.函数有形式

W=hmfun(Hinfo,Y)

哪里h福(可能还有一些附加参数)包含用于计算的矩阵H * Y

看到用密集,结构化的黑森州的二次最小化下面是使用此选项的示例。

为了optimset,选项名称为HessMult.看到当前和遗留选项名称

MaxPCGIter

PCG(预条件共轭梯度)迭代的最大次数;一个积极的标量。默认值是马克斯(1楼(numberOfVariables / 2))bound-constrained问题。对于约束问题,quadprog忽略了MaxPCGIter并使用MaxIterations限制PCG迭代的数量。有关更多信息,请参阅预处理的共轭梯度法

PrecondBandWidth

PCG预处理器的上带宽;一个非负整数。默认情况下,quadprog使用对角线预处理(高带宽0).对于某些问题,增加带宽可以减少PCG迭代次数。设置PrecondBandWidth使用直接因子分解(Cholesky)而不是共轭梯度(CG)。直接因式分解在计算上比CG更昂贵,但在求解过程中产生了更好的质量。

SubproblemAlgorithm

确定迭代步骤的计算方式。默认情况下,“cg”,比。要快但不准确的一步“因子化”.看到trust-region-reflective quadprog算法

TolPCG

PCG迭代的终止耐受;一个积极的标量。默认值是0.1

典型的

典型的x值。元素的数量典型的等于元素的个数x0,是起点。默认值为的(numberOfVariables, 1)quadprog使用典型的内部扩展。典型的只有在什么时候才有效果x有无界分量,当a典型的值为无界组件超过1

“interior-point-convex”算法只

约束耐受性

约束违背的容忍;一个积极的标量。默认值是1 e-8

为了optimset,选项名称为TolCon.看到当前和遗留选项名称

LinearSolver

算法中的内部线性求解器类型:

  • “汽车”(默认)——使用“稀疏”如果H矩阵稀疏和“密集”否则。

  • “稀疏”-使用稀疏线性代数。看到稀疏矩阵

  • “密集”- 使用密集的线性代数。

'active-set'算法只

约束耐受性

容忍违反约束;正标量。默认值为1 e-8

为了optimset,选项名称为TolCon.看到当前和遗留选项名称

ObjectiveLimit

作为标量的公差(停止标准)。如果目标函数值低于ObjectiveLimit并且当前点是可行的,迭代停止,因为问题是无界的,可能是。默认值是1 e20

问题结构,指定为具有这些字段的结构:

H

对称矩阵1/2 * x ' * H * x

f

线性术语的矢量f'* x

Aineq

线性不等式约束中的矩阵Aineq*xbineq

bineq

线性不等式约束中的向量Aineq*xbineq

Aeq

线性平等约束的矩阵Aeq * x =说真的

说真的

线性等式约束下的向量Aeq * x =说真的
下界向量
乌兰巴托 上界向量

x0

初始点x

解算器

“quadprog”

选项

选择使用optimoptions或者optimset

必需的字段有Hf解算器, 和选项.当解决,quadprog忽略问题除了列出的人。

请注意

你不能用温暖的开始问题论点。

数据类型:结构体

热启动对象,指定为使用创建的对象optimwarmstart.温暖的启动对象包含代码生成中的内存大小的起始点和选项,以及可选数据。看到温暖的开始最佳实践

例子:ws = optimwarmstart (x0,选项)

输出参数

全部收缩

解,返回实向量。x是最小化的向量吗1/2 * x ' * H * x + f ' * x受到所有界限和线性约束的影响。x对于非凸问题,可以是局部最小值。对凸的问题,x是全局最小值。有关更多信息,请参阅局部优化与全局优化

解决方案热启动对象,返回为QuadprogWarmStart对象。解决点是wsout.x.

您可以使用wsout作为后续的热启动对象的输入quadprog调用。

目标函数在解处的值,作为实标量返回。fval.的价值1/2 * x ' * H * x + f ' * x在解决方案x

原因quadprog已停止,作为该表中描述的整数返回。

所有的算法

1

函数收敛到解x

0

超过迭代次数选项。麦克斯特ations

-2

问题是不可行的。或者,为“interior-point-convex”,步长小于选项。阶跃公差,但约束条件未得到满足。

-3

问题是无限的。

“interior-point-convex”算法

2

步长小于选项。阶跃公差,约束条件得到满足。

-6

发现非凸问题。

-8

无法计算步骤方向。

“信任区域反射”算法

4

局部最小值;最小值并不是唯一的。

3.

目标函数值的变化小于选项。FunctionTolerance

-4

目前的搜索方向不是下降方向。不可能取得进一步进展。

'active-set'算法

-6

非凸问题发现;的投影H在零空间上Aeq不是正半定的。

请注意

偶尔,'active-set'带有退出标志的算法暂停0事实上,这个问题是无界的。设置更高的迭代限制也会导致退出标志0

有关优化过程的信息,作为具有这些字段的结构返回:

迭代

迭代次数

算法

优化算法

cgiteration.

PCG迭代总次数(“信任区域反射”算法只)

constrviolation

约束函数的极大值

firstorderopt

一阶最优性的度量

linearsolver

内部线性求解器的类型,“密集”或者“稀疏”“interior-point-convex”算法只)

消息

退出消息

解的拉格朗日乘子,作为结构返回,包含以下字段:

降低

下限

上限乌兰巴托

ineqlin

线性不等式

eqlin

线性等式

有关详细信息,请参见拉格朗日乘子的结构

算法

全部收缩

“interior-point-convex”

“interior-point-convex”算法试图遵循严格在约束之内的路径。它使用一个预解决模块来消除冗余,并通过解决简单的组件来简化问题。

该算法对稀疏Hessian矩阵具有不同的实现H对于稠密矩阵。通常,稀疏实现在大型稀疏问题上更快,而密集实现在密集或小型问题上更快。有关详细信息,请参阅interior-point-convex quadprog算法

“信任区域反射”

“信任区域反射”该算法是基于中描述的内部反射牛顿法的子空间信赖域方法[1].每次迭代涉及使用预处理共轭梯度(PCG)的方法的大线性系统的近似解。有关更多信息,请参阅trust-region-reflective quadprog算法

'active-set'

'active-set'算法是一种投影方法,类似于中描述的方法[2]. 算法规模不大;看见大规模与中型算法. 有关详细信息,请参阅主动集quadprog算法

温暖的开始

热启动对象维护来自上一个已解决问题的活动约束列表。解算器携带尽可能多的活动约束信息以解决当前问题。如果前一个问题与当前问题差异过大,则不会重用任何活动集信息。在这种情况下,解算器将有效地执行冷启动,以便重建活动约束列表。

选择功能

应用程序

优化活动编辑器任务为quadprog

参考文献

[1]科尔曼,T. F.和Y. Li。“一种最大限度地减少对某些变量界限的二次函数的反射牛顿方法。”SIAM优化学报.卷。6,第4,1996号,第1040-1058页。

[2] Gill,P. E.,W.Murray和M. H. Wright。实际优化。伦敦:1981年学术出版社。

N. Gould和P. L. Toint。"二次规划的预处理"数学编程。B辑,第100卷,2004年,第95-132页。

扩展功能

在R2006A之前介绍