用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