Skip to main content

A Python interface to conic optimization solvers.

Project description

A Python Interface to Conic Optimization Solvers

PICOS is a user friendly Python API to several conic and integer programming solvers, very much like YALMIP or CVX under MATLAB.

PICOS allows you to enter a mathematical optimization problem as a high level model, with painless support for (complex) vector and matrix variables and multidemensional algebra. Your model will be transformed to the standard form understood by an appropriate solver that is available at runtime. This makes your application portable as users have the choice between several commercial and open source solvers.


PICOS runs under both Python 2 and Python 3 and supports the following solvers and problem types. To use a solver, you need to seperately install it along with the Python interface listed here.

Solver Interface LP SOCP SDP QCQP EXP MIP License
CPLEX included Yes Yes Yes Yes non-free
CVXOPT native Yes Yes Yes Yes Yes¹ GPL-3
ECOS ecos-python Yes Yes Yes Yes Yes GPL-3
GLPK swiglpk Yes Yes GPL-3
Gurobi included Yes Yes Yes Yes non-free
MOSEK included Yes Yes Yes Yes Yes non-free
SMCP native Yes² Yes² Yes Yes² GPL-3

¹ only geometric programming, ² experimental


This is what it looks like to solve a multidimensional mixed integer program with PICOS:

>>> import picos
>>> P = picos.Problem()
>>> x = P.add_variable("x", 2, vtype="integer")
>>> C = P.add_constraint(x <= 5.5)
>>> P.set_objective("max", 1|x) # 1|x is the sum over x
>>> solution = P.solve()
>>> print(solution["status"])
'integer optimal solution'
>>> print(P.obj_value())
>>> print(x)
[ 5.00e+00]
[ 5.00e+00]
>>> print(C.slack)
[ 5.00e-01]
[ 5.00e-01]

Documentation & Source

  • The full documentation can be browsed online or downloaded in PDF form.
  • The API documentation without the tutorial and examples is also available as a separate PDF.
  • The source code lives on GitLab.


Via pip

If you are using pip you can run pip install picos to get the latest version.

Via Anaconda

If you are using Anaconda you can run conda install -c picos picos to get the latest version.

Via your system's package manager

On Arch Linux, there are seperate packages in the AUR for the latest version and the latest release. Both are split packages that ship both Python 2 and Python 3 versions of PICOS.

If you are packaging PICOS for additional systems, please tell us so we can list your package here!

From source

If you are installing PICOS manually, you can choose between a number of development versions and source releases. You will need to have at least the following Python packages installed:




For an up-to-date list of all code contributors, please refer to the contributors page. Should a reference from before 2019 be unclear, you can refer to the old contributors page on GitHub as well.


PICOS is free and open source software and available to you under the terms of the GNU GPL v3.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for PICOS, version 2.0.0
Filename, size File type Python version Upload date Hashes
Filename, size PICOS-2.0.0.tar.gz (236.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page