# CVXR

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.

## Installation

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://CRAN.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:

```
library(devtools)
install_github("cvxgrp/CVXR")
```

## Tutorial

A number of tutorial examples are available on the CVXR website.