用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