Submitted 8/15; Published 4/16 | Steven Diamond, Stephen Boyd
CVXPY is a Python-based domain-specific language for convex optimization. It allows users to express convex optimization problems in a natural, mathematical syntax, rather than in the restrictive standard form required by solvers. CVXPY combines convex optimization with Python's high-level features such as parallelism and object-oriented design. It is available under the GPL license at http://www.cvxpy.org/, with documentation and examples.
CVXPY is based on CVX but introduces new features such as signed disciplined convex programming (DCP) analysis and parameters. It is an ordinary Python library, making it easy to integrate with Python's high-level features. CVXPY has been widely used, with thousands of downloads and used in multiple courses. Many tools have been built on top of CVXPY, such as an extension for stochastic optimization.
CVXPY uses a simple, readable syntax inspired by CVX. It constructs and solves a least squares problem with constraints on the variable's entries. The problem data can be encoded as NumPy ndarrays or other common matrix representations in Python.
CVXPY converts problems into conic form, a generalization of linear programming. This conversion is done using graph implementations of convex functions. The resulting cone program is equivalent to the original problem, so solving it gives a solution to the original problem. CVXPY interfaces with open-source cone solvers such as CVXOPT, ECOS, and SCS, which are implemented in Python and C.
CVXPY extends DCP by tracking the signs of expressions, allowing more compositions to be verified as convex. Parameters are introduced to allow problems to be solved repeatedly for different values without redoing computations that do not depend on the parameter values. Parameters are an old idea in optimization DSLs, appearing in AMPL.
CVXPY enables an object-oriented approach to constructing optimization problems. It allows the construction of optimization problems using classes for vertices and edges, which store local information such as optimization variables, constraints, and an associated objective term. These are exported as a CVXPY problem for each vertex and edge. The vertex and edge objects are composed into a graph using the edges' connect method. To construct the single commodity flow problem, we sum the vertices and edges' local problems. Addition of problems is overloaded in CVXPY to add the objectives together and concatenate the constraints.CVXPY is a Python-based domain-specific language for convex optimization. It allows users to express convex optimization problems in a natural, mathematical syntax, rather than in the restrictive standard form required by solvers. CVXPY combines convex optimization with Python's high-level features such as parallelism and object-oriented design. It is available under the GPL license at http://www.cvxpy.org/, with documentation and examples.
CVXPY is based on CVX but introduces new features such as signed disciplined convex programming (DCP) analysis and parameters. It is an ordinary Python library, making it easy to integrate with Python's high-level features. CVXPY has been widely used, with thousands of downloads and used in multiple courses. Many tools have been built on top of CVXPY, such as an extension for stochastic optimization.
CVXPY uses a simple, readable syntax inspired by CVX. It constructs and solves a least squares problem with constraints on the variable's entries. The problem data can be encoded as NumPy ndarrays or other common matrix representations in Python.
CVXPY converts problems into conic form, a generalization of linear programming. This conversion is done using graph implementations of convex functions. The resulting cone program is equivalent to the original problem, so solving it gives a solution to the original problem. CVXPY interfaces with open-source cone solvers such as CVXOPT, ECOS, and SCS, which are implemented in Python and C.
CVXPY extends DCP by tracking the signs of expressions, allowing more compositions to be verified as convex. Parameters are introduced to allow problems to be solved repeatedly for different values without redoing computations that do not depend on the parameter values. Parameters are an old idea in optimization DSLs, appearing in AMPL.
CVXPY enables an object-oriented approach to constructing optimization problems. It allows the construction of optimization problems using classes for vertices and edges, which store local information such as optimization variables, constraints, and an associated objective term. These are exported as a CVXPY problem for each vertex and edge. The vertex and edge objects are composed into a graph using the edges' connect method. To construct the single commodity flow problem, we sum the vertices and edges' local problems. Addition of problems is overloaded in CVXPY to add the objectives together and concatenate the constraints.