Skip to content

Releases: dwavesystems/dwave-preprocessing

0.6.1

06 Jul 15:54
7e5ee84

Choose a tag to compare

New Features

  • Speed up PresolverImpl::normalization_remove_invalid_markers() C++ method. This gives faster presolve normalization times for models with many discrete constraints.
  • Speed up PresolverImpl::technique_remove_small_biases() C++ method. This gives faster presolve times for models with many small biases.

0.6.0

28 Jun 21:51
12b5cfa

Choose a tag to compare

New Features

  • Make SpinReversalTransformComposite nonblocking.

  • Add a seed parameter to the constructor of SpinReversalTransformComposite.

  • Improve the performance of the Presolver constructor by avoiding an unnecessary copy.

  • Raise an InvalidModelError from Presolver when given a model with float("nan") bounds.

  • Raise an InvalidModelError from Presolver when given a model that has a constraint with float("nan") weight or rhs.

  • Add C++ Presolver::restore() method for restoring samples.

  • Add domain propagation to dwave::presolve::Presolver.

  • Add removing small biases to dwave::presolve::Presolver.

  • Support Numpy>=1.17.3, previously required NumPy>=1.20.0.

  • Add a presolve normalization step to replace inf biases, bounds, offsets, right-hand-sides, etc with a large finite number.

  • A newly instantiated Presolver will now have presolve techniques loaded by default.

  • Add TechniqueFlags enum to represent different presolve techniques.

  • Add C++ dwave::presolve::Presolver::add_techniques(), dwave::presolve::Presolver::set_techniques(), and dwave::presolve::Presolver::techniques() methods for manipulating the presolve techniques that will be used by the presolver.

  • Update Presolver.apply(), Presolver.normalize(), and Presolver.presolve() to release Python's global interpreter lock (GIL).

  • Reimplement the C++ Presolver using the PImpl pattern. This will make it easier to maintain binary compatibility going forward. See #89.

  • Add dwave::presolve::Presolve::normalize() C++ method.

  • Add dwave::presolve::Presolve::presolve() C++ method.

  • Raise an InvalidModelError from Presolver when given a model with float("nan") biases.

  • Add Presolver.feasibility() method to return a Feasibility enum. This can be used to test the feasibility of presolved models.

  • Add time_limit_s keyword argument to Presolver.presolve().

  • Add time_limit argument to C++ method dwave::presolve::Presolver::presolve().

  • Add Presolver.normalize() method. See #78.

  • Add Presolver.presolve() method. See #78.

Upgrade Notes

  • The wrapped C++ dwave::presolve::Presolver held by cyPresolver.cpppresolver is now stored as a pointer.

  • Remove C++ PostSolver class. See #90.

  • A newly instantiated Presolver will now have presolve techniques loaded by default. Previously it would have no techniques loaded and the user would need to also call Presolver.load_default_presolvers().

  • Remove the C++ dwave::presolve::Presolver::load_default_presolvers() method.

  • The C++ Presolver no longer has a header-only implementation.

  • Raise an InvalidModelError rather than a RuntimeError when presolving a detached model.

  • Change Presolver to no longer raise an InfeasibleModelError error for infeasible models.

  • Remove the InfeasibleModelError.

Deprecation Notes

  • Drop support for Python 3.7.

  • Deprecate Presolver.load_default_techniques(). Use Presolver.set_techniques(TechniqueFlags.Default) instead.

0.5.4

19 Dec 19:59
56c3335

Choose a tag to compare

Prelude

Begin using Reno changelog tool.

New Features

  • Release wheels for Python 3.11

0.5.3

15 Nov 19:35
309d71c

Choose a tag to compare

Features

  • Remove interactions and variables with 0 bias in Presolver

Fixes

  • Fix handling of empty soft constraint in Presolver.

0.5.2

08 Nov 00:40
7934f0e

Choose a tag to compare

Fixes

  • Fix case where Presolver was incorrectly leaving variables fixed by bounds in the model

0.5.1

03 Nov 00:27
ad18c37

Choose a tag to compare

Fixes

  • Fix case where Presolver was incorrectly marking constraints with no variables as infeasible.

0.5.0.dev4

03 Nov 00:34
f88a08c

Choose a tag to compare

0.5.0.dev4 Pre-release
Pre-release

Fixes

  • Fix case where Presolver was incorrectly marking constraints with no variables as infeasible.

0.5.0

31 Oct 16:23
c959691

Choose a tag to compare

New Features

  • Add CQM presolving.

0.5.0.dev3

25 Oct 06:06
6083816

Choose a tag to compare

0.5.0.dev3 Pre-release
Pre-release

Fixes

  • Use dimod 0.12.0.dev3 which contains bug fixes

0.5.0.dev2

21 Oct 18:19
84b2f12

Choose a tag to compare

0.5.0.dev2 Pre-release
Pre-release

Fixes

  • Fix Presolver.restore_samples() throwing segmentation faults in some cases