用Octave计算非线性规划问题(序列二次规划法)(3)
 
广告
{{v.name}}
例子:
\( \min \quad x^2_1 * \sqrt{x_2} + e^{x_3} + \sin(x_4) \)
\( s.t. \quad \begin{cases} x_1 + 2x_2 = 0 \\ 3x_3 - 4x_4 ≥ 0 \\ 1 ≤ x_1 ≤ 2 \\ -3 ≤ x_2 ≤ 4 \\ -5 ≤ x_3 ≤ 6 \\ -7 ≤ x_4 ≤ 8 \\ \end{cases} \)
设\(x_0=\begin{bmatrix}0 & 0 & 0 & 0\end{bmatrix}\),代码如下:
>> x0 = [0 0 0 0];
定义非线性函数 phi(x),代码如下:
>> function ret = phi (x)
  ret = x(1)^2 * sqrt(x(2)) + exp(x(3)) + sin(x(4));
endfunction
定义等号约束函数 g(x),代码如下:
>> function ret = g (x)
  ret = [x(1) + 2*x(2)];
endfunction
定义不等号约束函数 h(x),代码如下:
>> function ret = h (x)
  ret = [3*x(3) - 4*x(4)];
endfunction
定义下界 lb,代码如下:
>> lb = [1; -3; -5; -7];
定义上界 ub,代码如下:
>> ub = [2; 4; 6; 8];
求解,代码如下:
>> [x, obj, info, iter, nf, lambda] = sqp (x0, @phi, @g, @h, lb, ub)
x =

   1.0000
  -0.5000
  -1.0000
  -1.0000

obj = -0.4736 + 0.7071i
info = 104
iter = 2
nf = 49
lambda =

  -4.3434e-10
            0
            0
            0
            0
            0
            0
            0
            0
            0
友链