二次规划是指约束为线性的二次优化问题。在Matlab中,quadprog是具有线性约束的二次目标函数求解器。
min
x
1
2
x
T
H
x
+
f
T
x
\mathop {\min }\limits_x \frac{1}{2}{{\bf{x}}^{\bf{T}}}{\bf{Hx}} + {{\bf{f}}^{\bf{T}}}{\bf{x}}
xmin21xTHx+fTx

| 符号 | 参数含义 |
|---|---|
| H | 二次目标矩阵 |
| f | 线性目标向量 |
| A | 线性不等式矩阵 |
| b | 线性不等式向量 |
| Aeq | 线性等式约束矩阵 |
| beq | 线性等式约束向量 |
| lb | 下界 |
| ub | 上界 |
| 符号 | 参数含义 |
|---|---|
| x | 解,以实数向量形式返回 |
| wsout | 解的热启动对象 |
| fval | 再解处的目标函数值 |
| exitflag | quadprog停止的原因 |
| output | 有关优化过程的信息,以结构体形式返回 |
| lambda | 解处的拉格朗日乘数 |
x = quadprog(H,f)
x = quadprog(H,f,A,b)
x = quadprog(H,f,A,b,Aeq,beq)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
x = quadprog(problem)
[x,fval] = quadprog(___)
[x,fval,exitflag,output] = quadprog(___)
[x,fval,exitflag,output,lambda] = quadprog(___)
[wsout,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq,lb,ub,ws)

H = [1 -1; -1 2];
f = [-2; -6];
A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b);
x =
0.6667
1.3333 fval = -8.2222 exitflag =
1

H = [1 -1; -1 2];
f = [-2; -6];
Aeq = [1 1];
beq = 0;
[x,fval,exitflag,output,lambda] = ...
quadprog(H,f,[],[],Aeq,beq)
x = -0.8000
0.8000 fval = -1.6000 exitflag =
1

H = [1,-1,1
-1,2,-2
1,-2,4];
f = [2;-3;1];
lb = zeros(3,1);
ub = ones(size(lb));
Aeq = ones(1,3);
beq = 1/2;
x = quadprog(H,f,[],[],Aeq,beq,lb,ub);