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