Uno, a unified solver for nonlinearly constrained optimization
Notation
We consider nonlinearly constrained optimization problems of the form
where \(x \in \mathbb{R}^n\), \(f : \mathbb{R}^n \to \mathbb{R}\), \(c: \mathbb{R}^n \to \mathbb{R}^{m_c}\), \(A \in \mathbb{R}^{m_A \times n}\), and \(l \in (\mathbb{R} \cup \{-\infty\})^{m_c + m_A + n}\) and \(u \in (\mathbb{R} \cup \{+\infty\})^{m_c + m_A + n}\). \(f\) and \(c\) may be nonconvex, which results in a nonconvex optimization problem. This formulation allows for unbounded variables and equality constraints and explicitly separates general nonlinear, linear, and bound constraints, enabling solvers to readily exploit this structure. However, for the sake of simplicity of this presentation and without loss of generality, we consider the problem in the following form:
where \(x \in \mathbb{R}^n\), \(f : \mathbb{R}^n \to \mathbb{R}\), and \(c: \mathbb{R}^n \to \mathbb{R}^m\).
Unifying nonlinear optimization
We argue that most derivative-based iterative methods for nonlinearly constrained nonconvex optimization share common algorithmic components, such as constraint reformulation, step computation, and globalization.
Uno (Unifying Nonlinear Optimization)1 is a modular open-source solver for nonlinearly constrained optimization that unifies numerous state-of-the-art methods and organizes existing strategies into a coherent hierarchy (see wheel of strategies below).
Uno allows the automatic generation of various strategy combinations on the fly with no programming effort from the user. While all combinations do not lead to convergent methods, some of them result in efficient solvers that may not exist as software implementations. Uno currently implements the following strategies:
- constraint relaxation strategies: feasibility restoration;
- inequality handling methods: inequality constrained method, interior-point method;
- Hessian models: exact, L-BFGS, L-SR1, identity, zero;
- inertia control strategies: primal, primal-dual, none;
- globalization strategies: filter method, funnel method, merit function;
- globalization mechanisms: backtracking line search, trust-region method.
Uno also implements presets, that is strategy combinations that mimic existing solvers:
filtersqpmimics filterSQP (trust-region feasibility restoration filter SQP method with exact Hessian);ipoptmimics IPOPT (line-search feasibility restoration filter barrier method with exact Hessian and primal-dual inertia correction).
Who uses Uno?
Uno is currently used as a nonlinear optimization solver in:
- JuMP.jl
- DNLP, an extension of CVXPY to general nonlinear programming
- Vecchia.jl, a package for Gaussian processes approximation
- control-toolbox, a collection of Julia packages for mathematical control and its applications
- FelooPy, a user-friendly tool for coding, modeling, and solving decision problems
- IMPL © /IMPL-DATA © by Industrial Algorithms Limited, a modeling and solving platform used in the process industries especially suited for economic, efficiency and emissions optimization and estimation
and more to come:
-
Uno was first introduced at the ISMP 2018 conference under the name Argonot. ↩