A domain-specific language for modeling convex optimization problems in Python.

cvxpy, modeling-language, optimization, python
pip install cvxpy==1.0.21



Build Status Build status

Join the CVXPY mailing list and use StackOverflow for the best CVXPY support!

The CVXPY documentation is at cvxpy.org.

CVXPY is a Python-embedded modeling language for convex optimization problems. It allows you to express your problem in a natural way that follows the math, rather than in the restrictive standard form required by solvers.

For example, the following code solves a least-squares problem where the variable is constrained by lower and upper bounds:

from cvxpy import *
import numpy

# Problem data.
m = 30
n = 20
A = numpy.random.randn(m, n)
b = numpy.random.randn(m)

# Construct the problem.
x = Variable(n)
objective = Minimize(sum_squares(A*x - b))
constraints = [0 <= x, x <= 1]
prob = Problem(objective, constraints)

# The optimal objective is returned by prob.solve().
result = prob.solve()
# The optimal value for x is stored in x.value.
# The optimal Lagrange multiplier for a constraint
# is stored in constraint.dual_value.

CVXPY was designed and implemented by Steven Diamond, with input from Stephen Boyd and Eric Chu.

A tutorial and other documentation can be found at cvxpy.org.

This git repository holds the latest development version of CVXPY. For installation instructions, see the install guide at cvxpy.org.