用Octave计算二次规划问题
\(\frac{1}{2} x'×H×x + x'×q\)
\( s.t. \begin{cases} A×x = b \\ lb ≤ x ≤ ub \end{cases} \)
 
广告
{{v.name}}
例子:
\( \min \quad \frac{1}{2} \begin{bmatrix}x_1 \\ x_2\end{bmatrix}'× \begin{bmatrix} 100 & 20 \\ 30 & 400 \end{bmatrix} ×\begin{bmatrix}x_1\\x_2\end{bmatrix} + \begin{bmatrix}x_1 \\ x_2\end{bmatrix}'× \begin{bmatrix} 5 \\ 6 \end{bmatrix} \)
\( s.t. \begin{cases} \begin{bmatrix} 7 & 8 \end{bmatrix} x = 9\\ x \ge \begin{bmatrix} 0\\ 0 \end{bmatrix} \end{cases} \)
设\(x_0=\begin{bmatrix}0\\0\end{bmatrix}\),代码如下:
>> x0 = [0; 0];
定义Hessian矩阵 H,代码如下:
>> H = [100 20;
     30 400];
定义线性项向量 q,代码如下:
>> q = [5; 6];
定义约束系数矩阵 A,代码如下:
>> A = [7 8];
定义约束右端项 b,代码如下:
>> b = 9;
定义变量下界,代码如下:
>> lb = [0; 0];
变量无上界,代码如下:
>> ub = [];
求解,代码如下:
>> [x, obj, info, lambda] = qp (x0, H, q, A, b, lb, ub)
x =

   1.0093
   0.2419

obj = 75.234
info =

  scalar structure containing the fields:

    solveiter = 2
    info = 0

lambda =

   15.9968
         0
         0
友链