1.二次规划
1.1 二次规划的定义
若某非线性规划的目标函数为自变量 x x x的二次函数,且约束条件全是线性的,则称这种规划模型为二次规划。
1.2 二次规划的数学模型
min
1
2
x
T
H
x
+
f
T
x
\min \frac{1}{2}\boldsymbol{x}^{\boldsymbol{T}}\boldsymbol{Hx}+\boldsymbol{f}^{\boldsymbol{T}}\boldsymbol{x}
min21xTHx+fTx
s
.
t
.
{
A
x
⩽
b
A
e
q
⋅
x
=
b
e
q
l
b
⩽
x
⩽
u
b
s.t.\left\{ \begin{array}{c} \boldsymbol{Ax}\leqslant \boldsymbol{b}\\ Aeq\cdot \boldsymbol{x}=beq\\ lb\leqslant \boldsymbol{x}\leqslant ub\\ \end{array} \right.
s.t.⎩
⎨
⎧Ax⩽bAeq⋅x=beqlb⩽x⩽ub
式中:
H
\boldsymbol{H}
H为实对称矩阵;
f
\boldsymbol{f}
f,
b
\boldsymbol{b}
b,
b
e
q
,
l
b
,
u
b
beq,lb,ub
beq,lb,ub为列向量;
A
\boldsymbol{A}
A,
q
q
q为相应维数的矩阵。
1.3 二次规划的matlab求解
MATLAB中求解二次规划的命令是
[x,fval]=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
其中, x 0 x0 x0是向量 x \boldsymbol{x} x的初始值.
2.案例分析
用MATLAB求解如下二次规划:
min
f
(
x
)
=
2
x
1
2
−
4
x
1
x
2
+
4
x
2
2
−
6
x
1
−
3
x
2
\min f\left( x \right) =2x_{1}^{2}-4x_1x_2+4x_{2}^{2}-6x_1-3x_2
minf(x)=2x12−4x1x2+4x22−6x1−3x2
s
.
t
.
{
x
1
+
x
2
⩽
3
4
x
1
+
x
2
⩽
9
x
1
,
x
2
⩾
0
s.t.\left\{ \begin{array}{c} x_1+x_2\leqslant 3\\ 4x_1+x_2\leqslant 9\\ x_1,x_2\geqslant 0\\ \end{array} \right.
s.t.⎩
⎨
⎧x1+x2⩽34x1+x2⩽9x1,x2⩾0
解:先看目标函数中的二次项:
2
x
1
2
−
4
x
1
x
2
+
4
x
2
2
=
1
2
[
x
1
,
x
2
]
[
4
−
4
−
4
8
]
[
x
1
x
2
]
2x_{1}^{2}-4x_1x_2+4x_{2}^{2}=\frac{1}{2}\left[ x_1,x_2 \right] \left[ \begin{matrix} 4& -4\\ -4& 8\\ \end{matrix} \right] \left[ \begin{array}{c} x_1\\ x_2\\ \end{array} \right]
2x12−4x1x2+4x22=21[x1,x2][4−4−48][x1x2]
所以
H
=
[
4
−
4
;
−
4
8
]
\boldsymbol{H}=\left[ \begin{matrix} 4& -4 ;\\ -4& 8 \\ \end{matrix} \right]
H=[4−4−4;8]
再看目标函数中的一次项:
−
6
x
1
−
3
x
2
=
[
−
6
−
3
]
[
x
1
x
2
]
-6x_1-3x_2=\left[ -6 -3 \right] \left[ \begin{array}{c} x_1\\ x_2\\ \end{array} \right]
−6x1−3x2=[−6−3][x1x2]
所以
f
=
[
−
6
−
3
]
f=\left[ \begin{array}{c} -6\\ -3\\ \end{array} \right]
f=[−6−3]
接下来编写matlab代码:
H=[4,-4;-4,8];
f=[-6;-3];
A=[1,1;4,1];
b=[3;9];
lb=zeros(2,1);
x0=rand(2,1);
[x,fval]=quadprog(H,f,A,b,[],[],lb,[],x0)
求解结果: