用Octave计算非线性规划问题(序列二次规划法)(2)
 
广告
{{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 \\ \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
求解,代码如下:
>> [x, obj, info, iter, nf, lambda] = sqp (x0, @phi, @g, @h)
x =

  -2.2204e-17
  -4.4409e-17
  -1.0000e+00
  -1.0000e+00

obj = -4.7359e-01 + 3.2856e-42i
info = 104
iter = 2
nf = 50
lambda =

  -3.1809e-18
            0
友链