MCPcopy Create free account
hub / github.com/cvanaret/Uno

github.com/cvanaret/Uno @v2.7.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.7.6 ↗ · + Follow
1,478 symbols 3,035 edges 251 files 172 documented · 12% updated 6d agov2.7.6 · 2026-07-01★ 49517 open issues

Browse by type

Functions 1,118 Types & classes 360
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Uno

Check out the official documentation for instructions on how to compile Uno from source or use the precompiled libraries, and to get started with Uno.

Unifying Nonlinear Optimization

Uno (Unifying Nonlinear Optimization) is a C++ framework for solving nonlinearly constrained optimization problems of the form:

$$ \begin{align} \min_{x \in \mathbb{R}^n} & ~f(x) \ \text{s.t.} & ~c_L \le c(x) \le c_U \ & ~x_L \le x \le x_U \ \end{align} $$

where $f: \mathbb{R}^n \rightarrow \mathbb{R}$ and $c: \mathbb{R}^n \rightarrow \mathbb{R}^m$ 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's wheel of strategies

Uno can be used via its AMPL/nl, Julia, Python, C, and Fortran interfaces.

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).

Core symbols most depended-on inside this repo

Shape

Method 934
Class 343
Function 184
Enum 17

Languages

C++99%
C1%
Python1%

Modules by API surface

interfaces/C/Uno_C_API.cpp113 symbols
interfaces/AMPL/AMPLModel.cpp32 symbols
uno/optimization/OptimizationProblem.cpp31 symbols
uno/ingredients/inequality_handling_methods/interior_point_methods/barrier_problems/PrimalDualInteriorPointProblem.cpp30 symbols
uno/model/BoundRelaxedModel.hpp28 symbols
uno/ingredients/subproblem/Subproblem.cpp28 symbols
uno/model/HomogeneousEqualityConstrainedModel.cpp27 symbols
uno/model/FixedBoundsConstraintsModel.cpp27 symbols
interfaces/Python/cpp_classes/PythonModel.cpp27 symbols
uno/ingredients/constraint_relaxation_strategies/relaxed_problems/l1RelaxedProblem.cpp25 symbols
uno/linear_algebra/Vector.hpp20 symbols
uno/options/Options.cpp16 symbols

For agents

$ claude mcp add Uno \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page