Related Projects
================

CVXPY is part of a larger ecosystem of optimization software.
We list here the optimization packages most relevant to CVXPY users.

Modeling frameworks
-------------------

- `CVXPYgen <https://github.com/cvxgrp/cvxpygen>`_ is a library that takes a convex optimization problem family modeled with CVXPY and generates a custom solver implementation in C.

- `cvxpylayers <https://github.com/cvxgrp/cvxpylayers/>`_ is a library that converts CVXPY problems into differentiable PyTorch and TensorFlow 2.0 layers.

- `DCCP <https://github.com/cvxgrp/dccp>`_ is a CVXPY extension for modeling and solving difference of convex problems.

- `DMCP <https://github.com/cvxgrp/dmcp>`_ is a CVXPY extension for modeling and solving multi-convex problems.

- `NCVX <https://github.com/cvxgrp/ncvx>`_ is a CVXPY extension for modeling and solving problems with convex objectives and decision variables from a nonconvex set.

- `osmm <https://github.com/cvxgrp/osmm>`_ is a Python package for optimization problems that arise in stochastic optimization, which is built on PyTorch and CVXPY.

- `SnapVX <http://snap.stanford.edu/snapvx/>`_ is a Python-based convex optimization solver for problems defined on graphs.

- `CVX <http://cvxr.com/cvx/>`_ is a MATLAB-embedded modeling language for convex optimization problems. CVXPY is based on CVX.

- `Convex.jl <https://convexjl.readthedocs.org/en/latest/>`_ is a Julia-embedded modeling language for convex optimization problems. Convex.jl is based on CVXPY and CVX.

- `CVXR <https://cvxr.rbind.io/>`_ is a R-embedded modeling language for convex optimization problems. CVXR is based on CVXPY and CVX.

- `GPkit <https://gpkit.readthedocs.org/en/latest/>`_ is a Python package for defining and manipulating geometric programming (GP) models.

- `PICOS <https://picos.zib.de/>`_ is a user-friendly python interface to many linear and conic optimization solvers.

Solvers
-------

- `OSQP <https://osqp.org/>`_ is an open-source C library for solving convex quadratic programs.

- `SCS <https://github.com/cvxgrp/scs>`_ is an open-source C library for solving large-scale convex cone problems.

- `ECOS <https://github.com/embotech/ecos>`_ is an open-source C library for solving convex second-order and exponential cone programs.

- `CVXOPT <http://cvxopt.org/>`_ is an open-source Python package for convex optimization.

- `GLPK <https://www.gnu.org/software/glpk/>`_ is an open-source C library for solving linear programs and mixed integer linear programs.

- `PROXQP <https://github.com/simple-robotics/proxsuite>`_ is an open-source C++ library for solving convex quadratic programs.

- `CLARABEL <https://github.com/oxfordcontrol/ClarabelDocs>`_ is an open-source Rust library for solving convex cone programs.

- `GUROBI <https://www.gurobi.com/>`_ is a commercial solver for mixed integer second-order cone programs.

- `MOSEK <https://www.mosek.com/>`_ is a commercial solver for mixed integer second-order cone programs and semidefinite programs.

- `XPRESS <https://www.fico.com/en/products/fico-xpress-optimization>`_ is a commercial solver for mixed integer linear, quadratic, and second-order cone optimization problems.
