二次规划
具有线性约束的二次目标函数求解器。
Quadprog为指定的问题找到一个最小值
H,A.,Aeq矩阵,F,B,说真的,磅,乌兰巴托,x是向量。
你可以通过F,磅,乌兰巴托作为向量或矩阵;参见矩阵的参数.
笔记
二次规划优化函数
仅适用于基于解算器的方法。有关这两种优化方法的讨论,请参阅首先选择基于问题或基于求解器的方法.
求最小值
受约束
在里面二次规划优化函数
语法,这个问题是为了最小化
,
在哪里
受线性约束。
要解决这个问题,首先输入系数矩阵。
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
求最小值
受约束
在里面二次规划优化函数
语法,这个问题是为了最小化
,
在哪里
受线性约束。
要解决这个问题,首先输入系数矩阵。
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这最小化了二次表达式
在哪里
, ,
受约束
, .
要解决此问题,请首先输入系数。
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
问题2结构
创建一个问题
结构使用基于问题的优化工作流. 创建一个优化问题,相当于线性约束二次规划.
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个输出。问题是最小化
从属于
,
在哪里
, .
输入问题系数。
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
—二次目标项二次目标项,指定为对称实矩阵。H
表示表达式中的二次项1/2*x'*H*x+f'*x
.如果H
不对称的,二次规划优化函数
发出警告并使用对称化版本(H + H ') / 2
相反
如果二次矩阵H
是稀疏的,那么在默认情况下“内点凸”
算法使用的算法略有不同,当H
是密集。一般来说,稀疏算法在大的、稀疏的问题上更快,而密集算法在密集或小的问题上更快。有关更多信息,请参见线人
选项说明和interior-point-convex quadprog算法.
例子:(2, 1, 1, 3)
数据类型:双重的
F
—线性目标词线性目标项,指定为实向量。F
表示表达式中的线性项1/2*x'*H*x+f'*x
.
例子:[1;3;2]
数据类型:双重的
A.
—线性不等式约束线性不等式约束,指定为实矩阵。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
—线性不等式约束线性不等式约束,指定为实向量。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
—线性等式约束线性等式约束,指定为实矩阵。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
—初始点初始点,指定为实向量。的长度x0
是的行数或列数H
.
x0
适用于“trust-region-reflective”
当问题只有界约束时的算法。x0
也适用于“激活集”
算法。
笔记
x0
是“激活集”
算法。
如果您没有指定x0
,二次规划优化函数
集合x0
到边界定义的长方体内部的点。二次规划优化函数
忽略了x0
对于“内点凸”
算法,对于“trust-region-reflective”
具有等式约束的算法。
例子:[1;2;1]
数据类型:双重的
选择权
—优化选项最佳选择
|结构,如优化集
返回优化选项,指定为最佳选择
或者一个结构优化集
返回。
有些选项不在计划中最佳选择
显示。下表中的这些选项以斜体显示。有关详细信息,请参阅视图选项.
所有的算法
算法 |
选择的算法:
这个 |
诊断学 | 显示有关要最小化或解决的功能的诊断信息。选项如下 |
陈列 |
显示水平(见迭代显示):
这个
|
最大迭代次数 |
允许的最大迭代次数;一个正整数。
为 |
最佳耐受性 |
一阶最优性的终止容差;正标量。
看见公差和停止标准. 为 |
StepTolerance |
端接公差
为 |
“trust-region-reflective”
算法只
FunctionTolerance |
函数值的终止公差;一个积极的标量。默认值取决于问题类型:有界约束问题使用的问题类型 为 |
|
Hessian乘法函数,指定为函数句柄。对于大规模结构化问题,此函数计算Hessian矩阵乘积 W = hmfun (Hinfo, Y) 在哪里 看见具有稠密结构Hessian函数的二次极小化下面是使用此选项的示例。 为 |
MaxPCGIter | PCG(预条件共轭梯度)迭代的最大次数;一个积极的标量。默认值是 |
预带宽 | PCG前置器的上限带宽;非负整数。默认情况下, |
子问题算法 |
确定如何计算迭代步骤。默认的, |
托尔普克 | PCG迭代的终止公差一个积极的标量。默认值是 |
TypicalX |
典型的 |
“内点凸”
算法只
“激活集”
算法只
ConstraintTolerance |
约束违背的容忍;一个积极的标量。默认值为 为 |
客观限度 |
一个标量的公差(停止标准)。如果目标函数值小于 |
问题
—问题的结构问题结构,指定为具有以下字段的结构:
|
中的对称矩阵1/2 * x ' * H * x |
|
线性向量f'*x |
|
线性不等式约束下的矩阵Aineq * x ≤比内克 |
|
线性不等式约束中的向量Aineq * x ≤比内克 |
|
线性等式约束下的矩阵Aeq*x=beq |
|
线性等式约束中的向量Aeq*x=beq |
磅 |
下界向量 |
乌兰巴托 |
上界向量 |
|
起始点x |
|
“quadprog” |
|
使用创建的选项最佳选择 或优化集 |
必填字段为H
,F
,解算器
,选择权
.解决时,二次规划优化函数
忽略中的任何字段问题
除了列出的那些。
笔记
你不能用热开始问题
论点。
数据类型:结构
ws
—热启动对象optimwarmstart
热启动对象,指定为使用optimwarmstart
.暖启动对象包含起始点和选项,以及代码生成中用于内存大小的可选数据。看见Warm Start最佳实践.
例子:ws=optimwarmstart(x0,选项)
x
-解决方案解决方案,作为实向量返回。x
是最小化的向量吗1/2*x'*H*x+f'*x
服从所有的边界和线性约束。x
对于非凸问题,可以是局部最小值。对凸的问题,x
是全局最小值。有关详细信息,请参阅局部优化与全局优化.
wsout
—解决热启动对象QuadprogWarmStart
对象解决方案热启动对象,返回为QuadprogWarmStart
对象。解决方案是wsout.X
.
您可以使用wsout
作为后续操作中的输入热启动对象二次规划优化函数
呼叫
fval
-解的目标函数值解的目标函数值,作为实标量返回。fval
价值是多少1/2*x'*H*x+f'*x
在解决方案x
.
出口滞后
-理由二次规划优化函数
停止原因二次规划优化函数
已停止,作为此表中描述的整数返回。
所有的算法 |
|
|
函数收敛到解 |
|
超过迭代次数 |
|
问题是不可行的。或者,为 |
|
问题是无限的。 |
|
|
|
步长小于 |
|
检测到非凸问题。 |
|
无法计算步长方向。 |
|
|
|
局部最小值;最小值并不是唯一的。 |
|
目标函数值的变化小于 |
|
目前的搜索方向不是下降方向,无法取得进一步进展。 |
|
|
|
笔记
偶尔,“激活集”
算法使用退出标志停止0
当问题实际上是无界的时,设置更高的迭代限制也会导致退出标志0
.
输出
-关于优化过程的信息关于优化过程的信息,作为带有以下字段的结构返回:
|
迭代次数 |
|
使用的优化算法 |
|
PCG迭代的总数( |
constrviolation |
约束函数的最大值 |
第一顺序选择 |
一阶最优性测度 |
线人 |
内部线性解算器的类型, |
消息 |
退出消息 |
兰姆达
-解处的拉格朗日乘数“内点凸”
这个“内点凸”
该算法试图遵循严格在约束范围内的路径。它使用预解模块消除冗余,并通过求解简单的组件来简化问题。
对于稀疏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。
使用说明和限制:
二次规划优化函数
万博1manbetx支持使用编码基因
(MATLAB编码器)函数或MATLAB®编码员™你一定有一个MATLAB编码器生成代码的许可证。
目标硬件必须支持标准的双精度浮点计算。不能为单精度万博1manbetx或定点计算生成代码。
代码生成目标不使用与MATLAB解算器相同的数学内核库。因此,代码生成解决方案可能与解算器解决方案不同,特别是对于条件较差的问题。万博 尤文图斯
二次规划优化函数
不支持万博1manbetx问题
用于代码生成的参数。
[x, fval] = quadprog(问题)%不支持万博1manbetx
全部的二次规划优化函数
输入矩阵如A.
,Aeq
,磅
,乌兰巴托
必须充实,不能稀疏。您可以将稀疏矩阵转换为完整的完整的
作用
这个磅
和乌兰巴托
参数的条目数必须与中的列数相同H
或者必须是空的[]
.
对于涉及嵌入式处理器的高级代码优化,还需要一个嵌入式编码器®许可证
您必须包含以下选项二次规划优化函数
并使用最佳选择
.选项必须包括算法
选项,设置为“激活集”
.
选择= optimoptions (“quadprog”,“算法”,“激活集”);[x, fval exitflag] = quadprog (H f A、b Aeq,说真的,磅,乌兰巴托,x0,选项);
代码生成支持以下选项:万博1manbetx
算法
-一定是“激活集”
ConstraintTolerance
最大迭代次数
客观限度
最佳耐受性
StepTolerance
生成的代码对选项的错误检查有限。建议更新选项的方法是使用最佳选择
,而不是点符号。
选择= optimoptions (“quadprog”,“算法”,“激活集”);选择= optimoptions(选择,“最大迭代次数”,1e4);%推荐选择。MaxIterations = 1e4;%不推荐
不要从文件加载选项。这样做可能会导致代码生成失败。相反,请在代码中创建选项。
如果指定了不受支持的选项,则在代码生成过程中通常会忽略该选项。要获得可靠的万博1manbetx结果,请仅指定受支持的选项。
例如,请参见为quadprog生成代码.
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。