PICOS: A Python Interface for Conic Optimization Solvers


Welcome to the documentation of PICOS, a user-friendly python interface to many linear and conic optimization solvers, see more about PICOS in the introduction.

The latest version can be downloaded here, and can be installed by following these instructions. Alternatively, you can clone the latest development version from github: $ git clone https://github.com/gsagnol/picos.git. If you wish to collaborate on PICOS, please make a pull request on github.

This documentation contains a tutorial and some examples, which should already be enough for a quick start with PICOS. There is also a summary of useful implemented functions. To go deeper, have a look at the picos reference, which provides information on every function of PICOS.


  • 29 Aug. 15: Picos 1.1.1 Released
    Minor release with following changes:
    • Partial trace of an Affine Expression, cf. partial_trace()
    • Bugfix for compatibility with python3 (thanks to Sergio Callegari)
    • Initial support for the SDPA solver (with the option solver='sdpa', picos works as a wrapper around the SDPA executable based on the write_to_file() function; thanks to Petter Wittek )
    • Better PEP8-compliance
  • 15 Apr. 15: Picos 1.1.0 Released
    • PICOS is now compatible with python 3+ (and remains compatible with python 2.6+). Many thanks to Sergio Callegari for this compatibility layer ! If you plan to work with PICOS and python3, think to install the most recent version of your solver (Mosek, Cplex, Gurobi, or Cvxopt). SCIP is not supported in python3+ at this point (but remains supported with python 2.x).
    • PICOS is now available on github.
  • 30 Jan. 15: Picos 1.0.2 Released
    Major release with following new functionalities:
    • Support (read and write) for .cbf problem files (conic benchmark format ), which should be the standard for (mixed integer) conic optimization problems, cf. write_to_file and import_cbf .
    • Improved support for complex SDP (more efficient implementation of to_real() , corrected bug in the implementation of the scalar product for Hermitian matrices and the conjugate of a complex expression, support for equality constraints involving complex coefficients)
    • Support for inequalities involving the sum of k largest elements of an affine expression, or the k largest eigenvalues of a symmetric matrix expression, cf. the functions sum_k_largest() , sum_k_smallest() , sum_k_largest_lambda(), sum_k_smallest_lambda(), lambda_max() and lambda_min() .
    • Support for inequalities involving the L_{p,q}- norm of an affine expresison, cf. norm() .
    • New vtype for antisymmetric matrix variables ( vtype = antisym).
    • Constraints can be specified as membership in a Set . Sets can be created by the functions ball() , simplex(), and truncated_simplex() .
    • New functions maximize and maximize to specify the objective function of a problem and solve it.
    And many thanks to Petter Wittek for the following improvements, who were motivated by the use of PICOS in the package ncpol2sdpa for optimization over noncommutative polynomials:
    • More efficient implementation of the writer to the sparse - SDPA file format (write_to_file)
    • Hadamard (elementwise) product of affine expression is implemented, as an overload of the ^ operator, cf. an example here .
    • Partial transposition of an Affine Expression, cf. partial_transpose() or the Tx attribute.
  • Former changes are listed here.

PICOS Documentation contents

Indices and tables