Revision HistoryΒΆ
- Version 1.12.3
- No changes yet.
- Version 1.12.2 (2017-07-28)
- Changed: Symbolic expression parsing improved.
- Fixed: Chompack-based chordal extension works.
- Fixed: get_item works for cases of moment substitutions.
- Version 1.12.1 (2017-03-16)
- Changed: Removed automated detection of simple moment substitutions.
- Changed: Better handling of monomial substitutions.
- Version 1.12.0 (2016-11-28)
- New: Pass the optional momentsubstitutions= parameter to the get_relaxation method to substitute out specific moments.
- Changed: Warning message is displayed if the equality constraints are linearly dependent.
- Changed: CVXPY support improved, solver parameters passed on correctly. SCS can directly be requested as a solver.
- Fixed: Chordal graph extension works with blank objective functions and commuting variables.
- Fixed: Parallel computations produce weird deadlocks less frequently.
- Version 1.11.1 (2016-08-07)
- Fixed: Major bug in generating localizing matrices with the correct monomials.
- Fixed:
fast_substituteis able to handle some more extreme forms of commuting monomials.
- Version 1.11.0 (2016-06-23)
- New: Experimental new parallel computation of the moment matrix and the constraints.
- New: CVXPY conversion with
convert_to_cvxpy. CVXPY is now also a valid solver. - New: The method
get_dualreturns the block in the dual solution corresponding to the requested constraint. - Changed: Deprecated optional parameter
boundswas removed. - Fixed: Moments are correctly returned even if equalities are removed.
- Fixed: Constants in PICOS conversion are added correctly irrespective of where they are in the matrices.
- Fixed: PICOS conversion handles feasibility problems correctly.
- Fixed: The optional parameter
removeequalities=Truehandles equalities of SDP variables correctly.
- Version 1.10.3 (2016-02-26)
- Fixed: Problem with unexpanded moment equality constraints resolved.
- Version 1.10.2 (2016-02-03)
- New: Very efficient substitutions of moment equalities if one side of the equality is the moment of a monomial, and the other side is a constant.
- Version 1.10.1 (2016-01-29)
- Fixed: The moment equalities are removed correctly if asked.
Version 1.10 (2015-12-08)
- New: The function
generate_operatorsreturns a list of operators from thesympy.physics.quantumsubmodule. This is the old behaviour ofgenerate_variables.- New: The
SdpRelaxationclass is now subscriptable. You can retrieve the value of polynomials in the solved relaxation in such way. Internally, it callsget_xmat_valuewithself.- New: The convenience method
solve()was added to the classSdpRelaxation.- New: The convenience method
write_to_file()was added to the classSdpRelaxation.- New: The convenience method
save_monomial_index()was added to the classSdpRelaxation.- New: The convenience method
find_solution_ranks()was added to the classSdpRelaxation. It replaces the previous stand-alonefind_rank_loop()function.- New: The conversion routines
convert_to_picosandconvert_to_mosekare also part of the classsdpRelaxation.- New: The new method
extract_dual_value()was added to the classSdpRelaxationto calculate the inner product of the coefficient matrix of an SDP variable with the dual solution.- New: The class
RdmHierarchywas added to generate SDPs of the reduced density matrix method. Initial support for 1D spinless, translational invariant systems is included.- New: Better support for the steering hierarchy in a new class
SteeringHierarchy.- Changed: The function
generate_variablesnow returns a list ofsympy.Symbolvariables if commutative variables are requested, and the default is commutative.- Changed: Many unnecessary user-facing functions were removed.
- Changed: The SOS decomposition is now requested with
get_sos_decompositionfrom the classSdpRelaxation, and it returns a list of the SOS polynomials.- Changed: The optional parameter
boundsforget_relaxationis deprececated, use the optional parametersmomentinequalitiesandmomentequalitiesinstead.- Changed: Removed
convert_to_picos_extra_moment_matrixand added optional parameterduplicate_moment_matrixtoconvert_to_picosto achieve the same effect.- Changed: The chordal extension is now requested as an optional parameter
chordal_extension=Truepassed to theget_relaxationmethod, and not by specifying it as a hierarchy type in the constructor.- Changed: The Moroder hierarchy is now a class.
- Changed: Small improvements in speed in the substitution routines; unit tests for the substitution routines.
- Changed: The
read_sdpa_outroutine takes an optional argument for a relaxation, and adds the solution to this object if requested.- Changed: Instead of an examples folder, all examples were migrated to the documentation.
- Changed: The symbolic variables which are not to be relaxed are now supplied to the constructor with the optional parameter
parameters.- Changed: Redundant positive-semidefinite constraint type removed.
- Fixed: PICOS and MOSEK conversion works for complex matrices too (issue #10).
- Fixed: The moment symmetries are correctly calculated for both Hermitian and non-Hermitian variables (issue #9)
Version 1.9 (2015-08-28)
- New: Defining the constraints now also allows using for the symbols
<,<=,>=,>. Additionally, the functionEqfrom SymPy can be used to defined equalities.- New: The function
solve_sdpalso acceptssolver="cvxopt"to use CVXOPT for solving a relaxation (requires PICOS and CVXOPT).- New:
convert_to_human_readablefunction returns the objective function and the moment matrix as a string and a matrix of strings to give a symbolic representation of the problem.- New:
get_next_neighborsfunction retrieves the forward neighbors at a given distance of a site or set of sites in a lattice.- New: Much faster substitutions if the right-hand side of the substitution never contains variables that are not in the left-hand side.
- New: Non-unique variables are considered only once in each variable set.
- New: When using
solve_sdpto solve the relaxation, the solution, its status, and the time it takes to solve are now part of the classSdpRelaxation.- New: The class
Probabilityprovides an intuitive way to define quantum probabilities and Bell inequalities.- New: The function
solve_sdpautodetects available solvers and complains if there is none.- New: The optional parameter
solverparametersto the functionsolve_sdpcan contain a dictionary of options, with a different set for each of the target solvers.- New: Regression testing framework added.
- Changed: The functions
find_rank_loop,sos_decomposition, andget_xmat_valueare no longer required anx_matory_matparameter to pass the primal or dual solution. These values are extracted from the solved relaxation. The respective parameters became optional.- Changed: Constant term in objective function is added to the primal and dual values when using the
solve_sdpfunction.- Changed: The primal and dual values of the Mosek solution change their signs when using the
solve_sdpfunction.- Changed: The verbosity parameter also controls the console output of every solver.
- Changed: Faacets relaxations got their own class
FaacetsRelaxation.- Fixed: Localizing matrices are built correctly when substitution rules contain polynomials and when the identity operator is not part of the monomial sets.
- Fixed: The function
get_xmat_valuealso works in Pypy.
Version 1.8 (2015-05-25)
- New: Complex moment matrices are embedded to as real matrices in the SDPA export and the
solve_sdpfunction.- New: Localizing monomials can be fine-tuned by supplying them to
get_relaxationthrough the optional parameterlocalizing_monomials.- New:
solve_sdpcan also solve a problem with Mosek.- New: The function
get_xmat_valuereturns the matching value for a monomial from a solution matrix, given the relaxation and the solution.- Changed:
solve_sdpno longer accepts parameterssolutionmatrixandsolverexecutable. All parameters are now passed via the solverparameters dictionary.- Changed: Legacy Picos code removed. Requirement is now Picos >=1.0.2.
- Fixed: Determining degree of polynomial also works when coefficient is complex.
Version 1.7 (2015-03-23)
- New: the function
find_rank_loopaids the detection of a rank loop.- New: the function
write_to_human_readablewrites the relaxation in a human-readable format.- New: the function
read_sdpa_outis now exposed to the user, primarily to help in detecting rank loops.- New: the function
save_monomial_indexallows saving the monomial index of a relaxation.- New: support for obtaining the SOS decomposition from a dual solution through the function
sos_decomposition.- New: optional parameter
psd=[matrix1, matrix2, ..., matrixn]can be passed toget_relaxationandprocess_constraintswhich contain symbolic matrices that should be positive semidefinite.- New: solution matrices can be returned by
solve_sdpby passing the optional parametersolutionmatrix=True. It does not work for diagonal blocks.- New: basic interface for Faacets via the function
get_faacets_relaxation.- New: PPT constraint can be imposed directly in the Moroder hierarchy by passing the extra parameter
ppt=Trueto the constructor.- New: Passing the optional parameter
extramomentmatrices=...toget_relaxationallows defining new moment matrices either freely or based on the first one. Basic relations of the elements between the moment matrices can be imposed as strings passed throughinequalites=....- Changed: Nieto-Silleras hierarchy is no longer supported through an option. Now constraints have to be manually defined.
- Changed: Monomials are not saved automatically with
verbose=2.- Fixed: wider range of substitutions supported, including a polynomial on the right-hands side of the substitution.
- Fixed: constraints for fermionic and bosonic systems and Pauli operators.
Version 1.6 (2014-12-22)
- Syntax for passing parameters changed. Only the level of the relaxation is compulsory for obtaining a relaxation.
- Extra parameter for bounds on the variables was added. Syntax is identical to the inequalities. The difference is that the inequalities in the bounds will not be relaxed by localizing matrices.
- Support for chordal graph extension in the commutative case (doi:10.1137/050623802). Pass
hierarchy="npa_chordal"to the constructor.- It is possible to pass variables which will not be relaxed. Pass
nonrelaxed=[variables]to the constructor.- It is possible to change the constraints once the moment matrix is generated. Refer to the new function
process_constraints.- Extra parameter
nsextraobjvars=[]was added for passing additional variables to the Nieto-Silleras hierarchy. This is important because the top-left elements of the blocks of moment matrices in the relaxation are not one: they add up to one. Hence specifying the last element of a measurement becomes possible with this option. The number of elements in this must match the number of behaviours.- PICOS conversion routines were separated and reworked to ensure sparsity.
- Moved documentation to Sphinx.
- SciPy dependency made optional.
Version 1.5 (2014-11-27)
- Support for Moroder hierarchy (doi:10.1103/PhysRevLett.111.030501).
- Further symmetries are discovered when all variables are Hermitian.
- Normalization can be turned off.
Version 1.4 (2014-11-18)
- Pypy support restored with limitations.
- Direct export to and optimization by MOSEK.
- Added helper function to add constraints on Pauli operators.
- Handling of complex coefficients improved.
- Added PICOS compatibility layer, enabling solving a problem by a larger range of solvers.
- Bug fixes: Python 3 compatibility restored.
Version 1.3 (2014-11-03)
- Much smaller SDPs are generated when using the helper functions for quantum correlations by not considering the last projector in the measurements and thus removing the sum-to-identity constraint; positive semidefinite condition is not influenced by this.
- Helper functions for fermionic systems and projective measurements are simplified.
- Support for the Nieto-Silleras (doi:10.1088/1367-2630/16/1/013035) hierarchy for level 1+ relaxations.
Version 1.2.4 (2014-06-13)
- Bug fixes: mixed commutative and noncommutative variable monomials are handled correctly in substitutions, constant integer objective functions are accepted.
Version 1.2.3 (2014-06-04)
- CHSH inequality added as an example.
- Allows supplying extra monomials to a given level of relaxation.
- Added functions to make it easier to work with Bell inequalities.
- Bug fixes: constant separation works correctly for integers, max-cut example fixed.
Version 1.2.2 (2014-05-27)
- Much faster SDPA writer for problems with many blocks.
- Removal of equalities does not happen by default.
Version 1.2.1 (2014-05-22)
- Size of localizing matrices adjusts to individual inequalities.
- Internal structure for storing monomials reorganized.
- Checks for maximum order in the constraints added.
- Fermionic constraints corrected.
Version 1.2 (2014-05-16)
- Fast replace was updated and made default.
- Numpy and SciPy are now dependencies.
- Replaced internal data structures by SciPy sparse matrices.
- Pypy is no longer supported.
- Equality constraints are removed by a QR decomposition and basis transformation.
- Functions added to support calling SDPA from Python.
- Helper functions added to help phrasing physics problems.
- More commutative examples added for comparison to Gloptipoly.
- Internal module structure reorganized.
Version 1.1 (2014-05-12)
- Commutative variables also work.
- Major rework of how the moment matrix is generated.
Version 1.0 (2014-04-29)
- Initial release.