Welcome to CVXPY 1.1ΒΆ
Convex optimization, for everyone.
We are building a CVXPY community on Discord. Join the conversation!
CVXPY is an open source Python-embedded modeling language for convex optimization problems. It lets you 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 with box constraints:
import cvxpy as cp
import numpy as np
# Problem data.
m = 30
n = 20
np.random.seed(1)
A = np.random.randn(m, n)
b = np.random.randn(m)
# Construct the problem.
x = cp.Variable(n)
objective = cp.Minimize(cp.sum_squares(A @ x - b))
constraints = [0 <= x, x <= 1]
prob = cp.Problem(objective, constraints)
# The optimal objective value is returned by `prob.solve()`.
result = prob.solve()
# The optimal value for x is stored in `x.value`.
print(x.value)
# The optimal Lagrange multiplier for a constraint is stored in
# `constraint.dual_value`.
print(constraints[0].dual_value)
This short script is a basic example of what CVXPY can do. In addition to convex programming, CVXPY also supports a generalization of geometric programming, mixed-integer convex programs, and quasiconvex programs.
For a guided tour of CVXPY, check out the tutorial. For applications to machine learning, control, finance, and more, browse the library of examples. For background on convex optimization, see the book Convex Optimization by Boyd and Vandenberghe.
CVXPY relies on the open source solvers OSQP, SCS, and ECOS. Additional solvers are supported, but must be installed separately.
Community.
The CVXPY community consists of researchers, data scientists, software engineers, and students from all over the world. We welcome you to join us!
To chat with the CVXPY community in real-time, join us on Discord.
To have longer, in-depth discussions with the CVXPY community, use Github discussions.
To share feature requests and bug reports, use the issue tracker.
Development.
CVXPY is a community project, built from the contributions of many researchers and engineers.
CVXPY is developed and maintained by Steven Diamond, Akshay Agrawal, Riley Murray, Philipp Schiele, and Bartolomeo Stellato with many others contributing significantly. A non-exhaustive list of people who have shaped CVXPY over the years includes Stephen Boyd, Eric Chu, Robin Verschueren, Jaehyun Park, Enzo Busseti, AJ Friend, Judson Wilson, and Chris Dembia.
We appreciate all contributions. To get involved, see our contributing guide and join us on Discord.
News.
CVXPY started moving to semantic versioning in early 2022. Starting in March 2022 we will only update CVXPY 1.1 for bugfix purposes, and we will release minor versions (e.g., 1.2, 1.3) much more often.
CVXPY v1.1.0 has been released. This version makes repeatedly canonicalizing parametrized problems much faster than before, allows differentiating the map from parameters to optimal solutions, and introduces some new atoms. See Changes to CVXPY for more information.