Package: cvxpy
CVXPYThe CVXPY documentation is atcvxpy.org.We are building a CVXPY community onDiscord. Join the conversation! For issues and long-form discussions, useGithub IssuesandGithub Discussions.ContentsInstallationGetting startedIssuesCommunityContributingTeamCitingCVXPY 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:importcvxpyascpimportnumpy# Problem data.m=30n=20numpy.random.seed(1)A=numpy.random.randn(m,n)b=numpy.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 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)With CVXPY, you can modelconvex optimization problems,mixed-integer convex optimization problems,geometric programs, andquasiconvex programs.CVXPY is not a solver. It relies upon the open source solversECOS,SCS,
andOSQP. Additional solvers areavailable,
but must be installed separately.CVXPY began as a Stanford University research project. It is now developed by
many people, across many institutions and countries.InstallationCVXPY is available on PyPI, and can be installed withpip install cvxpyCVXPY can also be installed with conda, usingconda install -c conda-forge cvxpyCVXPY has the following dependencies:Python >= 3.8Clarabel >= 0.5.0OSQP >= 0.6.2ECOS >= 2SCS >= 3.0NumPy >= 1.15SciPy >= 1.1.0For detailed instructions, see theinstallation
guide.Getting startedTo get started with CVXPY, check out the following:official CVXPY tutorialexample libraryAPI referenceIssuesWe encourage you to report issues using theGithub tracker. We welcome all kinds of issues, especially those related to correctness, documentation, performance, and feature requests.For basic usage questions (e.g., "Why isn't my problem DCP?"), please useStackOverflowinstead.CommunityThe 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 onDiscord.To have longer, in-depth discussions with the CVXPY community, useGithub Discussions.To share feature requests and bug reports, useGithub Issues.Please be respectful in your communications with the CVXPY community, and make sure to abide by ourcode of conduct.ContributingWe appreciate all contributions. You don't need to be an expert in convex
optimization to help out.You should first
installCVXPY from source.
Here are some simple ways to start contributing immediately:Read the CVXPY source code and improve the documentation, or address TODOsEnhance thewebsite documentationBrowse theissue tracker, and look for issues tagged as "help wanted"Polish theexample libraryAdd abenchmarkIf you'd like to add a new example to our library, or implement a new feature,
please get in touch with us first to make sure that your priorities align with
ours.Contributions should be submitted aspull requests.
A member of the CVXPY development team will review the pull request and guide
you through the contributing process.Before starting work on your contribution, please read thecontributing guide.TeamCVXPY is a community project, built from the contributions of many
researchers and engineers.CVXPY is developed and maintained bySteven
Diamond,Akshay
Agrawal,Riley Murray,Philipp Schiele,
andBartolomeo 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, Michael Sommerauer,
Jaehyun Park, Enzo Busseti, AJ Friend, Judson Wilson, and Chris Dembia.For more information about the team and our processes, see ourgovernance document.CitingIf you use CVXPY for academic work, we encourage you tocite our papers. If you use CVXPY in industry, we'd love to hear from you as well, on Discord or over email.