- 4 Jul. 16: Picos 1.1.2 Released
- Major release with following changes:
- Improved efficiency for the processing of large expressions.
- It is now possible to dynamically add and remove constraints, e.g. for column generation approaches, cf. this paragraph for an example. For an easier use, the function
add_constraint()now returns a handle to the constraint when the option
return_constraints=Truehas been passed to the problem. Then, constraints can be deleted by using
- In previous versions, PICOS detected constraints that could be interpreted as a bound on a variable. This was creating a mess to delete constraints, so the default behaviour is now to pass all constraints as such. To stick to the old behaviour, use the option
- New signature for the function
partial_transpose(), which can now transpose arbitrary subsystems from a kronecker product.
- Corrections of minor bugs with complex expressions.
- Better support for the SDPA solver.
- 29 Aug. 15: Picos 1.1.1 Released
- Minor release with following changes:
- Partial trace of an Affine Expression, cf.
- 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
.cbfproblem files (conic benchmark format ), which should be the standard for (mixed integer) conic optimization problems, cf.
- 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
- Support for inequalities involving the norm of an affine expresison, cf.
vtypefor antisymmetric matrix variables (
- Constraints can be specified as membership in a
Set. Sets can be created by the functions
- New functions
maximizeto 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 (
- 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.
27 Aug. 14: Picos 1.0.1 Released
- Release fixing the missing functionalities of the previous .dev version:
- Improved support for complex SDP (access to dual information and correction of a few bugs, in particular sum of complex affine expression now work correctly)
- Flow constraints in graphs, including multicommodity flows, cf. this section.
coefargument in the function
picos.tracepow(), in order to represent constraints of the form .
- Improved implementation of
_retrieve_matrix(), which was taking a very long time to process large parameters.
- Improved implementation of the retrieval of optimal primal variables with CPLEX. With the previous versions there was an important overhead at the end of the solving process to get the optimal values, this is now working much faster.
- Nicer documentation.
18 May 14: Picos 1.0.1.dev Released
- Major Release with following changes:
19 Jul. 13: Picos 1.0.0 Released
- Major Release with following changes:
- Semidefinite Programming Interface for MOSEK 7.0 !!!
- New options
handleConeVarsto customize how SOCP and SDPs are passed to MOSEK (When these options are set to
True, PICOS tries to minimize the number of variables of the MOSEK instance, see the doc in
- The function
dualize()returns the Lagrangian dual of a Problem.
- The option
set_all_options_to_default()) allows the user to pass the dual of a problem to a solver, instead of the primal problem itself. This can yield important speed-up for certain problems.
- In addition to the geometric mean function
picos.geomean(), it is now possible to pass rational powers of affine expressions (through an overload of the
**operator), trace of matrix powers with
picos.tracepow(), (generalized) p-norms with
picos.norm(), and nth root of a determinant with
picos.detrootn(). These functions automatically reformulate the entered inequalities as a set of equivalent SOCP or SDP constraints.
- It is now possible to specify variable bounds directly (rather than adding constraints of the type
x >= 0). This can be done with the Keywords
upperof the function
add_variable(), or by the methods
set_sparse_upper()of the class
- It is now more efficient to update a Problem and resolve it. This is done thanks to the attribute
passedof the classes
Variable, that stores which solvers are already aware of a constraint / variable. There is also an attribute
obj_passedof the class
Problem, that lists the solver instances where the objective function has already been passed. The option
onlyChangeObjectivehas been deprecated.
17 Apr. 13: Picos 0.1.3 Released
- Major changes:
picos.geomean()implemented, to handle inequalities involving a geometric mean and reformulate them automatically as a set of SOCP constraints.
- Some options were added for the function
solve(), to tell CPLEX to stop the computation as soon as a given value for the upper bound (or lower bound) is reached (see the options
- The time used by the solver is now stored in the dictionary returned by
- The option
boundMonitorof the function
solve()gives access to the values of the lower and upper bounds over time with cplex. (this option is documented in
- The weak inequalities operators
>=can now be used (but strict inequalities are still interpreted as weak inequalities !).
- Minor bugs corrected (access to the duals of fixed variables with CPLEX, evaluation of constant affine expressions with a zero coefficient appearing in the dict of linear terms, number of constraints is now updated in
10 Jan. 13: Picos 0.1.2 Released
- Bug-fix release, correcting:
Thanks to Warren Schudy for pointing out these bugs of the previous release !
08 Dec. 12: Picos 0.1.1 Released
- Major changes:
- Picos now interfaces GUROBI !
- You can specify an initial solution to warm-start mixed integer optimizers. (see the option
- Minor bugs with quadratic expressions corrected
- It’s possible to return a reference to a constraint added with add_constraint()