主要内容

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乌兰巴托.输入乌兰巴托向量是双精度的吗?它们的限制条件成立吗x组件。如果不存在等式,则设置Aeq = []说真的= []

请注意

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

quadprog重置的组件x0违反了界限x乌兰巴托到由边界定义的盒子内部。quadprog不更改遵守边界的组件。

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

请注意

x0的必选参数“激活集”算法。

例子

x= quadprog (Hf一个bAeq说真的乌兰巴托x0选项中指定的优化选项可解决上述问题选项.使用optimoptions创建选项.如果你不想给出一个初始点,设置x0 = []

例子

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

例子

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

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

例子

xfvalexitflag输出) = quadprog (___同样的回报exitflag的退出条件quadprog,输出,一个包含关于优化的信息的结构。

例子

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

例子

wsoutfvalexitflag输出λ) = 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;1 2];f = [2;6);Aeq = [1 1];说真的= 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,2,-2 1,-2,4];f =[2、3、1];磅= 0 (3,1);乌兰巴托= 1(大小(磅));Aeq = 1(1、3);说真的= 1/2;

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

x = quadprog (H f [] [], Aeq,说真的,磅,乌兰巴托)
找到满足约束条件的最小值。由于目标函数在可行方向上不减少,优化完成,在最优性公差的值内,约束满足在约束公差的值内。
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 = [];说真的= [];磅= [];乌兰巴托= [];x0 = [];

调用quadprog解决问题。

x = quadprog (H f A、b Aeq,说真的,磅,乌兰巴托,x0,选项)
Iter Fval primary Infeas Dual Infeas互补0 -8.884885e+00 3.214286e+00 1.071429e-01 1.000000e+00 -8.331868e+00 1.3210489e -01 4.403472e-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。con1 = 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(问题)
警告:你的黑森不是对称的。重置H = (H + H) / 2。
找到满足约束条件的最小值。由于目标函数在可行方向上不减少,优化完成,在最优性公差的值内,约束满足在约束公差的值内。
x =2×10.6667 - 1.3333
fval = -8.2222

求解一个二次程序,并返回解和目标函数值。

H = [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,设置选项以显示迭代显示并返回四个输出。问题是最小化

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 /2 5];f =(4、7、12);磅= 0 (3,1);乌兰巴托= 1 (3,1);

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

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

调用quadprog有四个输出。

[x fval exitflag,输出]= quadprog (H, f ,[],[],[],[], 磅,乌兰巴托,[]选项)
Iter Fval原始Infeas双Infeas互补性0 2.691769e+01 1.582123e+00 1.712849e+01 1.680447e+00 1 -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 0.000000e+00 1.221903e-10 6.939689e-07 4 -5.500000e+00 0.000000e+00 5.842173e-14 3.469847e-10最小发现满足约束。由于目标函数在可行方向上不减少,优化完成,在最优性公差的值内,约束满足在约束公差的值内。
x =3×10.0000 1.0000 0.0000
fval = -5.5000
exitflag = 1
输出=结构体字段:message: '找到满足约束条件的最小值....'算法:' inner -point-凸' firstorderopt: 1.5921e-09 constrbreach: 0 iterations: 4 linearsolver: '密' cgiterations: []

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

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

检查拉格朗日乘子结构λ

disp(λ)
Ineqlin: 12.0000 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调用,创建一个温暖的start对象。

选择= optimoptions (“quadprog”“算法”“激活集”);X0 = [1 2 3];ws = optimwarmstart (x0,选项);

用二次程序求解ws

H = [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”算法使用的算法与when略有不同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或更小,请使用一个= 1 (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或更小,请使用一个= 1 (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分量都是正的,使用磅= 0(大小(x0))

数据类型:

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

x (i) < =乌兰巴托(我)对所有

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

x (i) < =乌兰巴托(我)1 <= I <= numel(ub)

如果乌兰巴托元素少于x0,求解者发出警告。

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

数据类型:

初始点,指定为实向量。的长度x0行数还是列数H

x0适用于“trust-region-reflective”当问题只有约束条件时的算法。x0也适用于“激活集”算法。

请注意

x0的必选参数“激活集”算法。

如果不指定x0quadprog设置的所有组件x0到由边界定义的盒子内部的一点。quadprog忽略了x0“interior-point-convex”算法和“trust-region-reflective”具有等式约束的算法。

例子:(1, 2, 1)

数据类型:

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

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

所有的算法

算法

选择的算法:

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

  • “trust-region-reflective”

  • “激活集”

“interior-point-convex”算法只处理凸问题。的“trust-region-reflective”算法只处理有边界或线性等式约束的问题,而不是两者都处理。的“激活集”算法处理不定问题,只要投影H的零空间上Aeq是半正定。有关详细信息,请参见选择算法

诊断

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

显示

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

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

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

“interior-point-convex”“激活集”算法允许附加值:

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

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

  • 最后详细的只显示最终输出和详细的退出消息。

MaxIterations

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

  • 对于一个“trust-region-reflective”不等式约束问题,默认值为2 * (numberOfVariables - numberOfEqualities)

  • “激活集”默认值为10 * (numberOfVariables + numberOfConstraints)

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

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

OptimalityTolerance

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

  • 对于一个“trust-region-reflective”不等式约束问题,默认值为1 e-6

  • 对于一个“trust-region-reflective”有界约束问题,默认值为100 *每股收益,大约2.2204 e-14

  • “interior-point-convex”“激活集”“算法”,默认值为1 e-8

看到公差和停止标准

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

StepTolerance

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

  • “trust-region-reflective”,默认值为100 *每股收益,大约2.2204 e-14

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

  • “激活集”,默认值为1 e-8

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

“trust-region-reflective”算法只

FunctionTolerance

函数值上的终止公差;一个积极的标量。默认值取决于问题类型:有约束问题使用100 *每股收益,和线性等式约束问题的使用1 e-6.看到公差和停止标准

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

HessianMultiplyFcn

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

W = hmfun (Hinfo, Y)

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

看到密集、结构化Hessian的二次极小化对于使用此选项的示例。

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

MaxPCGIter

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

PrecondBandWidth

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

SubproblemAlgorithm

确定如何计算迭代步骤。默认的,“重心”的步骤更快,但没有“分解”.看到trust-region-reflective quadprog算法

TolPCG

PCG迭代的终止公差一个积极的标量。默认值是0.1

TypicalX

典型的x值。元素的数量TypicalX等于元素的个数x0,起点。默认值为的(numberOfVariables, 1)quadprog使用TypicalX内部扩展。TypicalX只有当x有无界分量,当aTypicalX的值超过1

“interior-point-convex”算法只

ConstraintTolerance

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

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

LinearSolver

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

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

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

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

“激活集”算法只

ConstraintTolerance

对约束违反的容忍;一个积极的标量。默认值为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”

选项

选择使用optimoptionsoptimset

必需的字段是Hf解算器,选项.当解决,quadprog中的任何字段都忽略问题除了上面列出的。

请注意

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

数据类型:结构体

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

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

输出参数

全部折叠

解,作为实向量返回。x是最小化的向量吗1/2 * x ' * H * x + f ' * x服从所有边界和线性约束。x可为非凸问题的局部极小值。对凸的问题,x是全局极小值。有关更多信息,请参见本地vs.全局优化

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

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

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

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

所有的算法

1

函数收敛到解决方案x

0

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

-2

问题是不可行的。或者,为“interior-point-convex”,步长小于选项。StepTolerance,但约束条件不满足。

3

问题是无限的。

“interior-point-convex”算法

2

步长小于选项。StepTolerance,约束条件得到满足。

6

发现非凸问题。

8

无法计算步长方向。

“trust-region-reflective”算法

4

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

3.

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

4

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

“激活集”算法

6

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

请注意

偶尔,“激活集”算法在退出标志时停止0当问题实际上是无界的时候。设置更高的迭代限制也会导致退出标志0

关于优化过程的信息,作为包含以下字段的结构返回:

迭代

迭代次数

算法

优化算法

cgiterations

PCG迭代的总次数(“trust-region-reflective”算法只)

constrviolation

约束函数的最大值

firstorderopt

一阶最优性的度量

linearsolver

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

消息

退出消息

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

较低的

下界

上界乌兰巴托

ineqlin

线性不等式

eqlin

线性等式

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

算法

全部折叠

“interior-point-convex”

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

该算法对稀疏黑森矩阵有不同的实现H对于一个密集矩阵。通常,稀疏实现在大型、稀疏问题上更快,而密集实现在密集或小问题上更快。有关更多信息,请参见interior-point-convex quadprog算法

“trust-region-reflective”

“trust-region-reflective”算法是一种基于内反射牛顿法的子空间信赖域方法[1].每次迭代都使用预条件共轭梯度(PCG)方法对一个大型线性系统进行近似求解。有关更多信息,请参见trust-region-reflective quadprog算法

“激活集”

“激活集”算法是一种投影方法,类似于[2].该算法不具有大规模;看到大规模vs.中型算法.有关更多信息,请参见激活集quadprog算法

温暖的开始

warm start对象维护前面解决的问题的活动约束列表。求解器携带尽可能多的活动约束信息来解决当前问题。如果前面的问题与当前的问题差异太大,则不会重用任何活动集信息。在这种情况下,求解器有效地执行冷启动,以便重新构建活动约束列表。

选择功能

应用程序

优化Live Editor任务提供了一个可视化的界面quadprog

参考文献

[1]科尔曼,T. F.和Y.李。求受某些变量有界的二次函数最小化的反射牛顿法。SIAM优化期刊.1996年第6卷第4期,第1040-1058页。

吉尔,p.e., W.默里,M. H.赖特。实际的优化。伦敦:文献出版社,1981年。

[3]古尔德和P. L.托特。二次规划的预处理。数学规划。B辑,2004年第100卷,第95-132页。

扩展功能

版本历史

之前介绍过的R2006a

Baidu
map