Disciplined Convex Optimization

An object-oriented modeling language for disciplined convex programming (DCP). It allows the user to formulate convex optimization problems in a natural way following mathematical convention and DCP rules. The system analyzes the problem, verifies its convexity, converts it into a canonical form, and hands it off to an appropriate solver to obtain the solution.

CVXR provides an object-oriented modeling language for convex optimization, similar to CVX, CVXPY, YALMIP, and Convex.jl. It allows the user to formulate convex optimization problems in a natural mathematical syntax rather than the restrictive standard form required by most solvers. The user specifies an objective and set of constraints by combining constants, variables, and parameters using a library of functions with known mathematical properties. CVXR then applies signed disciplined convex programming (DCP) to verify the problem’s convexity. Once verified, the problem is converted into standard conic form using graph implementations and passed to a cone solver such as ECOS or SCS.

CVXR includes several open source solvers in addition to the default ECOS and SCS. Recent versions (0.97+) also include support for commercial solvers such as MOSEK and GUROBI.


This package is now released on CRAN, so you can install the current released version as you would any other package for R, version 3.4 and higher. (CVXR is known to work with earlier versions of R too, but we don’t check our releases against older versions of R.)

install.packages('CVXR', repos = "https://cloud.r-project.org")

Development versions can be installed from the Github repository assuming you have the development tools for R available, including the C compilers etc. Execute:



A number of tutorial examples are available on the CVXR website. Package documentation is available on the Package Docs website.


CVXR 0.99

  • Bug fix: duplicated integer and boolean indices.
  • Bug fix: correct typo in constraint specification to GLPK.
  • Added tutorial articles based on v0.99 to CVXR website on using other solvers, integer programming, MOSEK and GUROBI examples.

CVXR 0.98-1

  • Minor typographical fixes.

CVXR 0.98

  • Dropped delay_load parameter dropped in reticulate::import_from_path, per changes in reticulate.

  • Cleaned up hooks into reticulate for commercial solvers.

CVXR 0.97-1

  • Minor typo and documentation fixes.

CVXR 0.97

  • Added LPSOLVE via lpSolveAPI
  • Added GLPK via Rglpk
  • Added MOSEK
  • Added GUROBI
  • Bug fix: issue #25. All CVXR expressions retain dimensions. Culprit was drop = FALSE (in function Index.get_special_slice) as suspected.

CVXR 0.96

  • Added a note that CVXR can probably be compiled from source for earlier versions of R. This is issue #24

  • Using pkgdown. This also addresses issue #23

  • Bug fix: issue #28 Function intf_sign (interface.R) was unnecessarily using a tolerance parameter, now eliminated.

CVXR 0.95

  • Updated Solver.solve to adapt to new ECOSolveR. Require version 0.4 of ECOSolveR now.

  • Updated unpack_results to behave exactly like in CVXPY. Added documentation and testthat tests. Documented in Getting Faster Results article.

CVXR 0.94-4

  • First CRAN release 2017-11-20.

CVXR pre-0.94-4

  • Several wrong turns and much hand-wringing. Complete rewrite in preparation for release.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.99-2 by Anqi Fu, 3 months ago

https://cvxr.rbind.io, https://anqif.github.io/CVXR

Report a bug at https://github.com/anqif/CVXR/issues

Browse source code at https://github.com/cran/CVXR

Authors: Anqi Fu [aut, cre] , Balasubramanian Narasimhan [aut] , Steven Diamond [aut] , John Miller [aut] , Stephen Boyd [ctb] , Paul Kunsberg Rosenfield [ctb]

Documentation:   PDF Manual  

Task views: Optimization and Mathematical Programming

Apache License 2.0 | file LICENSE license

Imports methods, R6, Matrix, Rcpp, bit64, gmp, Rmpfr, R.utils, ECOSolveR, scs, stats

Suggests knitr, rmarkdown, testthat, nnls, reticulate, lpSolveAPI, Rglpk, slam

Linking to Rcpp, RcppEigen

Imported by Rdimtools, filling, optrdd.

Suggested by updog.

See at CRAN