主要内容

二次规划优化函数

二次规划

描述

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

Quadprog为指定的问题找到一个最小值

x 1. 2. x T H x + F T x 这样 { A. x B , A. E Q x = B E Q , L B x U B

H,A.,Aeq矩阵,F,B,说真的,,乌兰巴托,x是向量。

你可以通过F,,乌兰巴托作为向量或矩阵;参见矩阵的参数

笔记

二次规划优化函数仅适用于基于解算器的方法。有关这两种优化方法的讨论,请参阅首先选择基于问题或基于求解器的方法

x=quadprog(H,F)返回一个向量x那就最小化了1/2*x'*H*x+f'*x.输入H对于有有限极小值的问题必须是正定的。如果H是正定的,那么解x=H\(-f)

实例

x=quadprog(H,F,A.,B)最小化1/2*x'*H*x+f'*x受限制* xB.输入A.是一个双精度矩阵,并且B是一个双精度向量。

实例

x=quadprog(H,F,A.,B,Aeq,说真的)解决了上述问题的附加限制Aeq*x=beqAeq是一个双精度矩阵,并且说真的是一个双精度向量。如果不存在不等式,集合A=[]b = []

实例

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

笔记

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

二次规划优化函数重置的组件x0越界x乌兰巴托到边界定义的长方体内部。二次规划优化函数不更改遵守边界的组件。

x=quadprog(H,F,A.,B,Aeq,说真的,,乌兰巴托,x0)从向量开始解决前面的问题x0.如果不存在边界,则设置lb=[]ub=[]. 一些二次规划优化函数算法忽略x0;看到x0

笔记

x0“激活集”算法。

实例

x=quadprog(H,F,A.,B,Aeq,说真的,,乌兰巴托,x0,选择权)使用中指定的优化选项解决上述问题选择权使用最佳选择创建选择权.如果不想给出初始点,请设置x0 = []

实例

x=quadprog(问题)返回的最小值问题中所描述的结构问题.创建问题结构使用点表示法或结构或者,创建一个问题从一个优化问题通过使用问题2结构

实例

[x,fval]=quadprog(___),对于任何输入变量,也返回fval,目标函数在x:

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

实例

[x,fval,出口滞后,输出]=quadprog(___)还返回出口滞后的退出条件二次规划优化函数,输出,该结构包含有关优化的信息。

实例

[x,fval,出口滞后,输出,兰姆达]=quadprog(___)还返回兰姆达,一种结构,其场包含解的拉格朗日乘子x

实例

[wsout,fval,出口滞后,输出,兰姆达]=quadprog(H,F,A.,B,Aeq,说真的,,乌兰巴托,ws)开始二次规划优化函数从热启动对象中的数据ws,使用中的选项ws.返回的参数wsout包含解决方案点wsout.X.通过使用wsout作为后续解算器调用中的初始热启动对象,二次规划优化函数可以工作得更快。

例子

全部折叠

求最小值

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.

在里面二次规划优化函数语法,这个问题是为了最小化

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];A=[11;-12;21];b=[2;2;3];

呼叫二次规划优化函数

[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

在里面二次规划优化函数语法,这个问题是为了最小化

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;

呼叫二次规划优化函数,进入[]对于输入A.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);乌兰巴托= 1(大小(磅));Aeq = 1(1、3);说真的= 1/2;

呼叫二次规划优化函数,进入[]对于输入A.B

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

设置监控进程的选项二次规划优化函数

选择= optimoptions (“quadprog”,“显示”,“国际热核实验堆”);

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

H=[1-1;-12];f=[-2;-6];A=[11;-12;21];b=[2;2;3];

帮助编写二次规划优化函数函数调用,将不必要的输入设置为[]

Aeq=[];beq=[];lb=[];ub=[];x0=[];

呼叫二次规划优化函数解决这个问题。

x = quadprog (H f A、b Aeq,说真的,磅,乌兰巴托,x0,选项)
国际热核聚变实验堆原发感染-双感染互补性0-8.884885e+00 3.214286e+00 1.071429e-01 1.000000e+00 1-8.331868e+00 1.321041e-01 4.403472e-03 1.910489e-01 2-8.212804e+00 1.676295e-03 5.587652e-05 1.009601e-02 3-8.381476e-07 2.793826e-08 1.8094E-05 2-22.22737E-26914发现最小值为0.737E优化完成,因为目标函数在可行方向上是非递减的,在最优性公差值范围内,并且约束满足在约束公差值范围内。
x=2×10.6667 1.3333

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

x = optimvar (“x”,2); 目标=x(1)^2/2+x(2)^2-x(1)*x(2)-2*x(1)-6*x(2);prob=优化问题(“目标”,objec);prob.Constraints.cons1=和(x)<=2;prob.Constraints.cons2=-x(1)+2*x(2)<=2;prob.Constraints.cons3=2*x(1)+x(2)<=3;

转换问题到一个问题结构。

问题=问题2结构(问题);

使用二次规划优化函数

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

解一个二次规划,并返回解和目标函数值。

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

检查返回的目标函数值是否与从二次规划优化函数目标函数定义。

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

来看看优化过程二次规划优化函数,设置选项以显示迭代显示并返回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 /2 5];f =(4、7、12);磅= 0 (3,1);乌兰巴托= 1 (3,1);

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

选择= optimoptions (“quadprog”,“显示”,“国际热核实验堆”);

呼叫二次规划优化函数有四个输出。

[x fval,exitflag,output]=quadprog(H,f,[],[],[],[],[],[],lb,ub,[]选项)
Iter Fval Primal infas Dual infas complement 0 2.691769e+01 1.582123e+00 1.712849e+01 1.680447e+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.22193e -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
输出=带字段的结构:消息:“…”算法:“内点凸”firstorderopt:1.5921e-09冲突:0次迭代:4次线性解决方案:“密集”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 exitflag、输出λ)= quadprog (H f A、b[],[],磅);
找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。

检查拉格朗日乘子结构兰姆达

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

线性不等式约束有一个相关的拉格朗日乘数12

显示与下限关联的乘数。

显示(λ下)
5.0000 0.0000 0.0000

只有兰博达酒店有一个非零乘数。这通常意味着只有第一个组成部分x位于零的下限。通过显示的组件进行确认x

显示(x)
0.0000 1.5000 1.5000

速度后续二次规划优化函数调用,创建一个热启动对象。

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

使用ws

H=[1,-1,1-1,2,-21,-2,4];f=[-7;-12;-15];A=[1,1,1];b=3;lb=0(3,1);tic[ws,fval,exitflag,output,lambda]=quadprog(H,f,A,b,[],lb,[],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不对称的,二次规划优化函数发出警告并使用对称化版本(H + H ') / 2相反

如果二次矩阵H是稀疏的,那么在默认情况下“内点凸”算法使用的算法略有不同,当H是密集。一般来说,稀疏算法在大的、稀疏的问题上更快,而密集算法在密集或小的问题上更快。有关更多信息,请参见线人选项说明和interior-point-convex quadprog算法

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

数据类型:双重的

线性目标项,指定为实向量。F表示表达式中的线性项1/2*x'*H*x+f'*x

例子:[1;3;2]

数据类型:双重的

线性不等式约束,指定为实矩阵。A.是一个M-借-N矩阵,在哪里M是不平等的数量,和N是变量的数量(元素的数量x0).对于大问题,请通过A.作为稀疏矩阵。

A.编码M线性不等式

A*x<=b,

在哪里x是的列向量N变量x (:),B是一个具有M元素。

例如,指定

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

输入以下约束条件:

A=[1,2;3,4;5,6];b=[10;20;30];

例子:要指定x分量的和为1或更小,请使用一个= 1 (1,N)b=1

数据类型:双重的

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

B编码M线性不等式

A*x<=b,

在哪里x是的列向量N变量x (:),A.是一个大小矩阵M-借-N

例如,考虑一下这些不平等:

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

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

A=[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=beq,

在哪里x是的列向量N变量x (:),说真的是一个具有元素。

例如,指定

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

输入以下约束条件:

Aeq=[1,2,3;2,4,1];beq=[10;20];

例子:要指定x分量的和为1,使用Aeq = 1 (1, N)beq=1

数据类型:双重的

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

说真的编码线性等式

Aeq*x=beq,

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

例如,考虑这些等式:

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

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

Aeq=[1,2,3;2,4,1];beq=[10;20];

例子:要指定x分量的和为1,使用Aeq = 1 (1, N)beq=1

数据类型:双重的

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

x(我)> =磅(我)对所有

如果努美尔(磅)<努美尔(x0),然后指定

x(我)> =磅(我)1<=i<=numel(磅)

如果中的元素较少比在x0,解算器发出警告。

例子:要指定所有x分量都是正数,请使用磅= 0(大小(x0))

数据类型:双重的

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

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

如果努梅尔(ub)<努梅尔(x0),然后乌兰巴托指定

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

如果中的元素较少乌兰巴托比在x0,解算器发出警告。

例子:要指定所有x分量都小于1,使用ub=个(尺寸(x0))

数据类型:双重的

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

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

笔记

x0“激活集”算法。

如果您没有指定x0,二次规划优化函数集合x0到边界定义的长方体内部的点。二次规划优化函数忽略了x0对于“内点凸”算法,对于“trust-region-reflective”具有等式约束的算法。

例子:[1;2;1]

数据类型:双重的

优化选项,指定为最佳选择或者一个结构优化集返回。

有些选项不在计划中最佳选择显示。下表中的这些选项以斜体显示。有关详细信息,请参阅视图选项

所有的算法

算法

选择的算法:

  • “内点凸”(默认)

  • “trust-region-reflective”

  • “激活集”

这个“内点凸”算法只处理凸问题。这个“trust-region-reflective”该算法只处理边界或线性等式约束的问题,但不能同时处理两者“激活集”该算法处理不确定问题,前提是H在零空间上Aeq是半正定。有关详细信息,请参阅选择算法

诊断学

显示有关要最小化或解决的功能的诊断信息。选项如下“开”“关闭”(默认)。

陈列

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

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

  • “决赛”仅显示最终输出(默认)。

这个“内点凸”“激活集”算法允许附加值:

  • “国际热核实验堆”指定迭代显示。

  • “国际热核实验堆详细说明”指定带有详细退出消息的迭代显示。

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

最大迭代次数

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

  • 暂时“trust-region-reflective”等式约束问题,默认值为2*(numberOfVariables–numberOfEqualities)

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

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

优化集,选项名称为麦克斯特看见当前和旧选项名称

最佳耐受性

一阶最优性的终止容差;正标量。

  • 暂时“trust-region-reflective”等式约束问题,默认值为1e-6

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

  • 对于“内点凸”“激活集”算法,默认值为1e-8

看见公差和停止标准

优化集,选项名称为托尔芬看见当前和旧选项名称

StepTolerance

端接公差x;正标量。

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

  • “内点凸”,默认值为1 e-12

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

优化集,选项名称为TolX看见当前和旧选项名称

“trust-region-reflective”算法只

FunctionTolerance

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

优化集,选项名称为托尔芬看见当前和旧选项名称

HessianMultiplyFcn

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

W = hmfun (Hinfo, Y)

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

看见具有稠密结构Hessian函数的二次极小化下面是使用此选项的示例。

优化集,选项名称为赫斯穆特看见当前和旧选项名称

MaxPCGIter

PCG(预条件共轭梯度)迭代的最大次数;一个积极的标量。默认值是最大值(1,楼层(numberOfVariables/2))bound-constrained问题。对于约束问题,二次规划优化函数忽略了MaxPCGIter和使用最大迭代次数限制PCG迭代次数。有关详细信息,请参阅预条件共轭梯度法

预带宽

PCG前置器的上限带宽;非负整数。默认情况下,二次规划优化函数使用对角线预处理(较高带宽0)。对于某些问题,增加带宽会减少PCG迭代次数。设置预带宽使用直接因式分解(Cholesky)而不是共轭梯度(CG)。直接因式分解在计算上比CG更昂贵,但能产生更高质量的求解步骤。

子问题算法

确定如何计算迭代步骤。默认的,“重心”,比“分解”看见信赖域反射quadprog算法

托尔普克

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

TypicalX

典型的x值。中的元素数TypicalX等于中的元素数x0,起点。默认值为一(numberOfVariables,1)二次规划优化函数使用TypicalX内部用于缩放。TypicalX只有当x具有无限的组件,并且TypicalX值为无界组件超过1.

“内点凸”算法只

ConstraintTolerance

约束冲突的容差;正标量。默认值为1e-8

优化集,选项名称为托尔康看见当前和旧选项名称

线人

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

  • “自动”(默认)-使用“稀疏”如果H矩阵是稀疏的“稠密”否则

  • “稀疏”-使用稀疏线性代数。请参见稀疏矩阵

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

“激活集”算法只

ConstraintTolerance

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

优化集,选项名称为托尔康看见当前和旧选项名称

客观限度

一个标量的公差(停止标准)。如果目标函数值小于客观限度如果当前点是可行的,迭代就会停止,因为问题可能是无界的。默认值为-1e20

问题结构,指定为具有以下字段的结构:

H

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

F

线性向量f'*x

Aineq

线性不等式约束下的矩阵Aineq * x比内克

比内克

线性不等式约束中的向量Aineq * x比内克

Aeq

线性等式约束下的矩阵Aeq*x=beq

说真的

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

x0

起始点x

解算器

“quadprog”

选择权

使用创建的选项最佳选择优化集

必填字段为H,F,解算器,选择权.解决时,二次规划优化函数忽略中的任何字段问题除了列出的那些。

笔记

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

数据类型:结构

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

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

输出参数

全部折叠

解决方案,作为实向量返回。x是最小化的向量吗1/2*x'*H*x+f'*x服从所有的边界和线性约束。x对于非凸问题,可以是局部最小值。对凸的问题,x是全局最小值。有关详细信息,请参阅局部优化与全局优化

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

您可以使用wsout作为后续操作中的输入热启动对象二次规划优化函数呼叫

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

原因二次规划优化函数已停止,作为此表中描述的整数返回。

所有的算法

1.

函数收敛到解x

0

超过迭代次数options.MaxIterations

-2

问题是不可行的。或者,为“内点凸”,步长小于选项。StepTolerance,但限制没有得到满足。

-3

问题是无限的。

“内点凸”算法

2.

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

-6

检测到非凸问题。

-8

无法计算步长方向。

“trust-region-reflective”算法

4.

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

3.

目标函数值的变化小于选项.功能公差

-4

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

“激活集”算法

-6

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

笔记

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

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

迭代

迭代次数

算法

使用的优化算法

CG迭代

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

constrviolation

约束函数的最大值

第一顺序选择

一阶最优性测度

线人

内部线性解算器的类型,“稠密”“稀疏”(“内点凸”(仅限算法)

消息

退出消息

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

较低的

下界

上面的

上界乌兰巴托

线性不等式

线性不等式

eqlin

线性等式

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

算法

全部折叠

“内点凸”

这个“内点凸”该算法试图遵循严格在约束范围内的路径。它使用预解模块消除冗余,并通过求解简单的组件来简化问题。

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

“trust-region-reflective”

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

“激活集”

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

温暖的开始

热启动对象维护一个来自先前解决的问题的活动约束列表。求解器携带尽可能多的主动约束信息来解决当前问题。如果以前的问题与当前的问题太不同,则不会重用活动集信息。在这种情况下,求解器有效地执行冷启动,以重建活动约束列表。

选择功能

应用程序

这个优化活动编辑器任务为二次规划优化函数

参考文献

[1]科尔曼,T. F.和Y. Li。使二次函数在某些变量有界的情况下最小的反射牛顿法SIAM优化学报.第6卷第4期,1996年,第1040-1058页。

吉尔,P. E., W.默里和M. H.赖特。实际的优化。伦敦:学术出版社,1981。

[3] 古尔德,N.和P.L.托因。“二次规划的预处理。”数学规划。系列丛书,Vol. 19, 2004, pp. 95-132。

扩展能力

在R2006a之前引入