The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

We provide R bindings to Uno (Unifying Nonlinear
Optimization), a C++ solver for nonlinearly constrained optimization,
via Uno’s C API. The interface allows you to describe a nonlinear
program with R callbacks for objective, gradient, constraints, Jacobian
and Lagrangian Hessian and Uno solves it. This is the R analog of the
unopy Python binding, intended as the nonlinear (DNLP)
solver backend for CVXR.
Two solver paths are provided:
filtersqp SQP preset, whose QP
subproblems are solved by HiGHS (built from source with
the package), andipopt interior-point preset, whose
KKT systems are solved by MUMPS, reached at run time
through the rmumps package
(uno_mumps_version() tells which MUMPS that is).Install from CRAN as usual or from the repo via:
# install.packages("remotes")
remotes::install_github("bnaras/Uno")A C++17 compiler and CMake (>= 3.16) are required for source
builds as the package builds the underlying Uno and HiGHS from source.
MUMPS comes from the rmumps dependency, so there is no
separate MUMPS installation. A source build binds to the
rmumps installed at the time: rmumps 5.2.1-44
or later through its versioned C interface (rmumps 5.9.1-1
brings MUMPS 5.9.1), rmumps 5.2.1-43 through the legacy
dmumps_c entry point.
Hock–Schittkowski problem 15 (x* = (0.5, 2),
f* = 306.5), solved with the interior-point preset.
Derivatives are supplied in COO form (0-based indices); the Hessian is
the lower triangle of the Lagrangian.
library(Uno)
objective <- function(x) 100 * (x[2] - x[1]^2)^2 + (1 - x[1])^2
gradient <- function(x) c(400 * x[1]^3 - 400 * x[1] * x[2] + 2 * x[1] - 2,
200 * (x[2] - x[1]^2))
constraints <- function(x) c(x[1] * x[2], x[1] + x[2]^2)
jacobian <- function(x) c(x[2], 1, x[1], 2 * x[2])
hessian <- function(x, sigma, lambda)
c(sigma * (1200 * x[1]^2 - 400 * x[2] + 2),
-400 * sigma * x[1] - lambda[1],
200 * sigma - 2 * lambda[2])
res <- uno_solve(
n = 2L, lb = c(-Inf, -Inf), ub = c(0.5, Inf), sense = "minimize",
obj = objective, grad = gradient,
m = 2L, cl = c(1, 0), cu = c(Inf, Inf), cons = constraints,
jac_rows = c(0L, 1L, 0L, 1L), jac_cols = c(0L, 0L, 1L, 1L), jac = jacobian,
hess_rows = c(0L, 1L, 1L), hess_cols = c(0L, 0L, 1L), hess = hessian,
x0 = c(-2, 1), preset = "ipopt", base_indexing = 0L, verbose = FALSE,
options = list(logger = "SILENT")
)
res$objective # 306.5
res$primal # 0.5 2Any Uno solver option can be passed through options as a
named list (applied after the preset). See vignette("Uno")
for the full walk-through.
To cite the R package, run citation("Uno"), or:
Narasimhan B (2026). Uno: R Interface to the Uno Nonlinear Optimization Solver. R package. https://github.com/bnaras/Uno.
To cite the Uno solver itself, use the references its authors maintain under “Cite Uno”: the theory paper (Vanaret and Leyffer, 2026, Mathematical Programming Computation, https://doi.org/10.1007/s12532-026-00310-9) and the software paper (Vanaret and Montoison, 2026, Journal of Open Source Software, https://doi.org/10.21105/joss.10229).
MIT. The bundled Uno solver is Copyright Charlie Vanaret and
contributors, and the bundled HiGHS solver Copyright the HiGHS authors,
both MIT; see inst/COPYRIGHTS for every copyright holder of
bundled code.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.