The Uno (Unifying Nonconvex Optimization) solver

Dear all,

For the past 6 years, I have been working (on and off, this year full time) on Uno, a modular C++ solver for nonconvex optimization. It unifies the workflows of most gradient-based iterative methods (such as SQP and barrier methods) and allows the automatic combination of off-the-shelf strategies for step computation, globalization and constraint relaxation. It mimics existing solvers such as IPOPT, filterSQP and SNOPT, but also generates thoroughly novel optimization methods.

I have just published the preprint Unifying nonlinearly constrained nonconvex optimization cowritten with Sven Leyffer (Argonne National Laboratory).
The code is available on Github as open-source software under the MIT license.

At the moment, Uno only reads models from .nl files (AMPL). Interfaces to CasADi and Matlab are being independently developed and I’m confident more interfaces will be available soon. Until a Julia/JuMP interface is available, you can dump your JuMP model into an .nl file with the AmplNLWriter.jl library.

Future developments include L-BFGS Hessian approximation, funnel method (with David Kiessling), trust-region barrier method, SLP-EQP method, parameterizable numerical type (double, float, quad precision and so on) and extension to broader classes of problems (problems with complementarity constraints, robust optimization).

Give Uno a try and give us some feedback :slight_smile:


I guess we should make a Yggdrasil build so that we can install it automatically.


Don’t miss us at ISMP next week!
Sven will give the keynote presentation Unifying nonlinearly constrained optimization on July 23 (Tuesday) at 3pm. I will give the talk Uno, a next-gen solver for unifying nonlinearly constrained nonconvex optimization on July 26 (Friday) at 9am.
See you then :slight_smile: