Introduction¶
This library is for solving problems of the form
where \(f : \mathbb{R}^n \rightarrow \mathbb{R}\) and \(c : \mathbb{R}^n \rightarrow \mathbb{R}^m\) have two continuous derivatives. The optimization problem is minimized by instead minimizing a smooth exact penalty function introduced by Fletcher in the 1970’s:
The penalty function is
where \(g(x) = \nabla f(x)\), \(A(x) = \nabla c^T (x)\), and \(Q(x)\) is a diagonal matrix function with entries approximating \(\min \{ x - l, u-x \}\).
Problem Formulation and Notation¶
Problems must be passed with equality constraints and slacks, in the form described above. This library uses the optimizers/model library, which contains models which will automatically construct the slack formulation of an arbitrary nonlinear program (nlpmodel).
Additional notation to be aware of when implementing your own problem as an nlpmodel:
- The Lagrangian is defined with a minus sign:
Therefore, hlag, hlagprod, and other methods involving the Lagrangian should be implemented accordingly.
- The Jacobian of \(c\) is an \(m \times n\) matrix, so
gcon,gconprod, and other methods involving the Jacobian should be implemented accordingly.