Abstract: Iterative methods for nonlinear optimization usually share common ingredients, such as strategies to compute a descent direction and mechanisms that promote global convergence. We propose an abstract framework with four ingredients that describes most nonlinear optimization methods and unifies their workflows. We then introduce Uno, a modular solver that implements our unifying framework: it allows the automatic generation of (so far) 36 combinations of strategies, such as trust-region restoration filter SQP (a la filterSQP) and line-search restoration filter barrier method (a la IPOPT), with no programming effort from the user.
Uno enables researchers to experiment with new optimization methods and algorithms while leveraging established subproblem solvers (BQPD, MA57) and interfaces to modeling languages (AMPL). We compare Uno against state-of-the-art solvers filterSQP, IPOPT, SNOPT, MINOS, LANCELOT, LOQO and CONOPT on a subset of problems from the CUTEst collection. Uno is packed in a lightweight (< 6,000 LOC) C++ library that will be released as open-source software in July 2022.