优化模型:matlab二次规划

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. AxbAeqx=beqlbxub
式中: 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)=2x124x1x2+4x226x13x2
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+x234x1+x29x1,x20
:先看目标函数中的二次项:
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] 2x124x1x2+4x22=21[x1,x2][4448][x1x2]
所以 H = [ 4 − 4 ; − 4 8 ] \boldsymbol{H}=\left[ \begin{matrix} 4& -4 ;\\ -4& 8 \\ \end{matrix} \right] H=[444;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] 6x13x2=[63][x1x2]
所以
f = [ − 6 − 3 ] f=\left[ \begin{array}{c} -6\\ -3\\ \end{array} \right] f=[63]
接下来编写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)

求解结果: