Uno
June 10, 2026 · View on GitHub
Contents
Uno (Unifying Nonlinear Optimization) is a C++ framework for solving nonlinearly constrained optimization problems of the form:
where and are (ideally twice) continuously differentiable.
Uno unifies Lagrange-Newton methods that iteratively solve the optimality (KKT) conditions with Newton's method. The following methods are currently supported:
- Sequential (convex and nonconvex) Quadratic Programming (SQP) method
- primal-dual Interior-Point Method (IPM)
- Sequential Linear Programming (SLP)
- Newton's method for unconstrained optimization
Uno breaks down these methods into a set of common building blocks that interact with one another, such as constraint reformulation, step computation, and globalization. These strategies can be combined at runtime in various ways.
Uno can be used via its AMPL/nl, Julia, Python, C, and Fortran interfaces.
Installation
See the installation guide file for instructions on how to compile Uno from source, or use the precompiled libraries and executables.
Getting started
To get started with Uno, check out the official documentation.
How to cite Uno
Our theory paper published in Mathematical Programming Computation may be cited with the following BibTeX entry:
@article{VanaretLeyffer2026,
author = {Vanaret, Charlie and Leyffer, Sven},
title = {Implementing a unified solver for nonlinearly constrained optimization},
journal = {Mathematical Programming Computation},
year = {2026},
doi = {10.1007/s12532-026-00310-9}
}
We also submitted a software article to the Journal of Open Source Software (JOSS):
@unpublished{VanaretMontoison2026,
author = {Vanaret, Charlie and Montoison, Alexis},
title = {Uno: a composable framework for nonlinearly constrained optimization},
year = {2026},
note = {Submitted to the Journal of Open Source Software}
}
Credits
The theoretical unification framework was developed by Charlie Vanaret (Argonne National Laboratory & Zuse-Institut Berlin) and Sven Leyffer (Argonne National Laboratory). The interfaces and continuous integration infrastructure for Uno were developed and are maintained by Alexis Montoison (Argonne National Laboratory) and Charlie Vanaret. Uno itself was designed and implemented by Charlie Vanaret. It is released under the MIT license.
The contributors are (in alphabetical order): Oscar Dowson, Marcel Jacobse, Arnav Kapoor, David Kiessling, Rujia Liu, Stefano Lovato, Manuel Schaich, Silvio Traversaro.
The Uno logo was created by Charlie Vanaret based on a saddle point icon by luimonts (CC BY 3.0).