Change History

  • 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=True has been passed to the problem. Then, constraints can be deleted by using constraint.delete().
    • 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 pass_simple_cons_as_bound=True.
    • 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. 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.
  • 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.
    • Additional coef argument in the function picos.tracepow(), in order to represent constraints of the form \operatorname{trace}(M X^p) \geq t.
    • 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 Released

    Major Release with following changes:
    • Support for Semidefinite Programming over the complex domain, see here.
    • Flow constraints in graphs, cf. this section.
    • Improved implementation of __getitem__ for affine expressions. The slicing of affine expressions was slowing down (a lot!) the processing of the optimization problem.
  • 19 Jul. 13: Picos 1.0.0 Released

    Major Release with following changes:
    • Semidefinite Programming Interface for MOSEK 7.0 !!!
    • New options handleBarVars and handleConeVars to 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 set_all_options_to_default()).
    • The function dualize() returns the Lagrangian dual of a Problem.
    • The option solve_via_dual (documented in 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 lower and upper of the function add_variable() , or by the methods set_lower() , set_upper() , set_sparse_lower() , and set_sparse_upper() of the class Variable.
    • It is now more efficient to update a Problem and resolve it. This is done thanks to the attribute passed of the classes Constraint and Variable , that stores which solvers are already aware of a constraint / variable. There is also an attribute obj_passed of the class Problem , that lists the solver instances where the objective function has already been passed. The option onlyChangeObjective has been deprecated.
  • 17 Apr. 13: Picos 0.1.3 Released

    Major changes:
    • Function 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 uboundlimit and lboundlimit documented in set_all_options_to_default()).
    • The time used by the solver is now stored in the dictionary returned by solve().
    • The option boundMonitor of the function solve() gives access to the values of the lower and upper bounds over time with cplex. (this option is documented in set_all_options_to_default()).
    • The weak inequalities operators <= and >= 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 remove_constraint()).
  • 10 Jan. 13: Picos 0.1.2 Released

    Bug-fix release, correcting:
    • The write_to_file() function for sparse SDPA files. The function was writing the coefficients of the lower triangular part of the constraint matrices instead of the upper triangle.
    • An IndexError occuring with the function remove_constraint().

    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 hotstart documented in set_all_options_to_default())
    • Minor bugs with quadratic expressions corrected
    • It’s possible to return a reference to a constraint added with add_constraint()