# Changelog¶

This file documents major changes to PICOS. The format is based on Keep a Changelog.

## 1.1.3 - 2018-10-05¶

### Added¶

- Support for the solvers GLPK and SCIP.
- PICOS packages on Anaconda Cloud.
- PICOS packages in the Arch Linux User Repository.

### Changed¶

- The main repository has moved to GitLab.
- Releases of packages and documentation changes are automated and thus more frequent. In particular, post release versions are available.
- Test bench execution is automated for greater code stability.
- Improved test bench output.
- Improved support for the SDPA solver.
`partial_trace`

can handle rectangular subsystems.- The documentation was restructured; examples were converted to Python 3.

### Fixed¶

- Upper bounding the norm of a complex scalar.
- Multiplication with a complex scalar.
- A couple of Python 3 specific errors, in particular when deleting constraints.
- All documentation examples are reproducible with the current state of PICOS.

## 1.1.2 - 2016-07-04¶

### Added¶

- Ability to dynamically add and remove constraints, see the documentation on constraint deletion.
- Option
`pass_simple_cons_as_bound`

, see below.

### Changed¶

- Improved efficiency when processing large expressions.
- Improved support for the SDPA solver.
`add_constraint`

returns a handle to the constraint when the option`return_constraints`

is set.- New signature for the function
`partial_transpose`

, which can now transpose arbitrary subsystems from a kronecker product. - PICOS no longer turns constraints into variable bounds, unless the new option
`pass_simple_cons_as_bound`

is enabled.

### Fixed¶

- Minor bugs with complex expressions.

## 1.1.1 - 2015-08-29¶

### Added¶

- Support for the SDPA solver.
- Partial trace of an affine expression, see
`partial_trace`

.

### Changed¶

- Improved PEP 8 compliance.

### Fixed¶

- Compatibility with Python 3.

## 1.0.2 - 2015-01-30¶

### Added¶

- Ability to read and write problems in conic benchmark format.
- Support for inequalities involving the sum of the largest or
smallest elements of an affine expression, see
`sum_k_largest`

and`sum_k_smallest`

. - Support for inequalities involving the sum of the largest or
smallest eigenvalues of a symmetric matrix, see
`sum_k_largest_lambda`

,`sum_k_smallest_lambda`

,`lambda_max`

and`lambda_min`

. - Support for inequalities involving the -norm of an affine
expression, see
`norm`

. - Support for equalities involving complex coefficients.
- New
`variable type`

for antisymmetric matrix variables:`antisym`

. - Set expressions that affine expressions can be constrained to be an element
of, see
`ball`

,`simplex`

and`truncated_simplex`

. - Shorthand functions
`maximize`

and`minimize`

to specify the objective function of a problem and solve it. - Hadamard (elementwise) product of affine expression, as an overload of the
`^`

operator, read the tutorial on overloads. - Partial transposition of an aAffine Expression, see
`partial_transpose`

and`AffinExp.Tx`

.

### Fixed¶

- Scalar product of hermitian matrices.
- Conjugate of a complex expression.

## 1.0.1 - 2014-08-27¶

### Added¶

- Support for semidefinite programming over the complex domain, see the documentation on complex problems.
- Helper function to input (multicommodity) graph flow problems, see the tutorial on flow constraints.
- Additional
`coef`

argument to`picos.tracepow`

, to represent constraints of the form .

### Changed¶

- Significantly improved performance of
`AffinExp.__getitem__`

. - Improved performance of
`_retrieve_matrix`

. - Improved performance when retrieving primal solution from CPLEX.
- The documentation received an overhaul.

## 1.0.0 - 2013-07-19¶

### Added¶

- Ability to express rational powers of affine expressions with the
`**`

operator, traces of matrix powers with`picos.tracepow`

, (generalized) p-norms with`picos.norm`

and -th roots of a determinant with`picos.detrootn`

. - Ability to specify variable bounds directly rather than by adding constraints,
see
`add_variable`

,`set_lower()`

,`set_upper()`

,`set_sparse_lower()`

and`set_sparse_upper()`

. - Problem dualization, see
`dualize`

. - Option
`solve_via_dual`

which controls passing the dual problem to the solver instead of the primal problem. This can result in a significant speedup for certain problems. - Semidefinite programming interface for MOSEK 7.0.
- Options
`handleBarVars`

and`handleConeVars`

to customize how SOCPs and SDPs are passed to MOSEK. When these are set to`True`

, PICOS tries to minimize the number of variables of the MOSEK instance.

### Changed¶

- If the chosen solver supports this, updated problems will be partially re-solved instead of solved from scratch.

### Removed¶

- Option
`onlyChangeObjective`

.

## 0.1.3 - 2013-04-17¶

### Added¶

- A
`geomean`

function to construct geometric mean inequalities that will be cast as SOCP constraints. - Options
`uboundlimit`

and`lboundlimit`

to tell CPLEX to stop the search as soon as the given threshold is reached for the upper and lower bound, respectively. - Option
`boundMonitor`

to inspect the evolution of CPLEX lower and upper bounds. - Ability to use the weak inequality operators as an alias for the strong ones.

### Fixed¶

- Access to dual values of fixed variables with CPLEX.
- Evaluation of constant affine expressions with a zero coefficient.
- Number of constraints not being updated in
`remove_constraint`

.

## 0.1.2 - 2013-01-10¶

### Fixed¶

- Writing SDPA files. The lower triangular part of the constraint matrix was written instead of the upper triangular part.
- A wrongly raised
`IndexError`

from`remove_constraint`

.