Ipopt(Interior Point OPTimizer)
是求解大规模非线性最优化问题的求解软件。可以求解如下形式的最优化问题的(局部)最优解。
m i n ⏟ x ∈ R n f ( x ) s . t . g L ≤ g ( x ) ≤ g U x L ≤ x ≤ x U (0) \underbrace{min}_ {x \in Rⁿ} \, \, \, f(x) \\ s.t. g_L ≤ g(x) ≤ g_U \\ x_L ≤ x ≤ x_U \tag{0} x∈Rn
minf(x)s.t.gL≤g(x)≤gUxL≤x≤xU(0)
其中, f ( x ) : R n → R f(x): R^n \rightarrow R f(x):Rn→R是优化目标函数, g ( x ) : R n → R m g(x):R^n \rightarrow R^m g(x):Rn→Rm是约束函数, f ( x ) , g ( x ) f(x),g(x) f(x),g(x)可以是非线性和非凸的,但是需要是二阶微分连续的。
为了求解最优化问题,Ipopt
需要更多的信息,如下:
- 优化问题的维度
- 优化变量 x x x的数目;
- 约束函数 g ( x ) g(x) g(x)的数目;
- 优化变量的边界
- 优化变量 x x x的边界;
- 约束函数 g ( x ) g(x) g(x)的边界;
- 优化问题的初始迭代点:
- 优化变量 x x x的初始值;
- 拉格朗日乘子的初始值(仅仅是在
warm start
的时候需要);
- 优化问题的数据结构(
Structure
):- 约束函数 g ( x ) g(x) g(x)的雅可比矩阵的非零元素的数目;
- 拉格朗日函数的黑森矩阵的非零元素的数目;
- 约束函数 g ( x ) g(x) g(x)的雅可比稀疏矩阵的非零元素的行索引和列索引(
sparsity structure,row and column indices of each of the nonzero entries
); - 拉格朗日函数的黑森稀疏矩阵的非零元素的行索引和列索引(
sparsity structure,row and column indices of each of the nonzero entries
);
- 优化问题函数的值:
- 优化目标函数 f ( x ) f(x) f(x);
- 优化目标函数的梯度函数 c c c;
- 约束函数 g ( x ) g(x) g(x);
- 约束函数的雅可比矩阵 ∇ g ( x ) T \nabla g(x) ^T ∇g(x)T;
- 拉格朗日函数的黑森矩阵 σ f ∇ 2 f ( x ) + ∑ i = 1 m λ i ∇ 2 g i ( x ) \sigma_f \nabla ^2 f(x) + \sum_{i=1}^m \lambda_i \nabla ^2 g_i(x) σf∇2f(x)+∑i=1mλi∇2gi(x),如果使用拟牛顿法(
quasi-Newton options
)则不需要此矩阵;
优化问题的维度和边界约束可以直接获得,并且来自于问题定义。初始迭代点会影响优化问题的是否收敛或者是否收敛到(局部)最优解,不同的初始值可能会导致收敛到不同的局部最优解。计算微分矩阵(雅可比矩阵和黑森矩阵)可能有一点复杂,Ipopt
需要提供约束函数的雅可比矩阵和拉格朗日函数的黑森矩阵的非零元素以及他们所在的行索引和列索引,并且标准接口是下三角矩阵(黑森矩阵是对称矩阵)。矩阵的非零元素确定后,在整个求解过程中是不可变的,因此,非零元素不可以仅仅包含在初始值条件下,还需要包括在求解过程中会不为零的元素。
1. Example
f = x 1 x 4 ( x 1 + x 2 + x 3 ) + x 3 s . t . x 1 x 2 x 3 x 4 ≥ 25 x 1 2 + x 2 2 + x 3 2 + x 4 2 = 40 1 ≤ x 1 , x 2 , x 3 , x 4 ≤ 5 x 0 = ( 1 , 5 , 5 , 1 ) (1-1) f = x_1 x_4 (x_1 + x_2 + x_3) + x_3 \\ s.t. \,\,\,\,\,\, x_1 x_2 x_3 x_4 \geq 25 \\ x^2_1 + x^2_2 + x^2_3 + x^2_4 = 40 \\ 1 \leq x_1, x_2, x_3, x_4 \leq 5 \\ x_0 = (1,5,5,1) \tag{1-1} f=x1x4(x1+x2+x3)+x3s.t.x1x2x3x4≥25