CVXR supports 15 conic and quadratic-program solvers, including several open-source solvers and optional commercial ones, plus two nonlinear-programming (NLP) solvers for disciplined nonlinear programs.
Open Source Solvers (on CRAN)
Clarabel, a versatile conic solver written in Rust (default solver).
SCS, a conic solver using operator splitting, effective for large-scale problems.
HiGHS, for linear, quadratic, and mixed-integer linear programs.
ECOS / ECOS_BB, an interior-point solver for second-order and exponential cone programs (ECOS_BB adds mixed-integer support and is used only when named).
GLPK / GLPK_MI, for linear programs and mixed-integer linear programs.
CVXOPT, for linear, second-order cone, and semidefinite programs.
PIQP, a proximal interior-point solver for quadratic programs.
SCIP, for (mixed-integer) LP, QP, and second-order cone programs. Free for academic and non-commercial use; installed from r-universe.
CPLEX, supporting LP, QP, SOCP, and mixed-integer programs.
FICO Xpress, supporting LP, QP, SOCP, and mixed-integer programs.
Nonlinear (NLP) Solvers
For smooth nonlinear programs — see the DNLP Tutorial, solved with psolve(prob, nlp = TRUE) — CVXR supports two open-source NLP solvers, each via an optional R package in Enhances (not installed by default; CVXR checks for them at solve time and errors informatively if one is missing):
Uno (the Uno package), Unifying Nonlinear Optimization. On CRAN and self-contained (bundles its own MUMPS/HiGHS), so it is the practical default for R users; it also recovers dual_value().
IPOPT (the ipopt package), an interior-point solver. Not on CRAN owing to licensing, so installed only by determined users; when present, nlp = TRUE prefers it (matching CVXPY).
Solver Capabilities
The table below shows each solver, its R package dependency, and the problem classes it supports.
* Commercial solver; free academic licenses are available.
QP: solvers with a quadratic-objective interface receive the objective directly; the other conic solvers solve a second-order-cone reformulation.
Without a commercial solver, mixed-integer problems can use HIGHS or GLPK_MI (MILP only), SCIP (MILP, MIQP, MISOCP) or ECOS_BB.
ECOS_BB is used only when named, as in psolve(prob, solver = "ECOS_BB").
Smooth nonlinear programs, psolve(prob, nlp = TRUE), use the separate NLP solvers Uno or IPOPT; see Using Other Solvers.
Installing Commercial Solvers
MOSEK
MOSEK provides an academic version that is free of charge: one can obtain the free academic license after registering. Once the license for the product has been activated, the Rmosek documentation provides all the details for installation. A quick check to ensure things are working is to run the example:
library(Rmosek)example(mosek)
Gurobi
Gurobi offers free academic licenses. After installing Gurobi and the gurobi R package (bundled with the Gurobi installation), verify with: