Release Notes#
0.6.7#
New Features#
Support Python 3.13.
Bug Fixes#
Fix
SpinReversalTransformComposite
’s handling of child samplers that alter the variable order. Previously the spin reversal transforms would not be correctly unapplied. See #142.
0.6.6#
New Features#
Speed up the removal of small biases in presolve.
Support NumPy 2.0. Also, no longer require NumPy at build-time.
0.6.5#
New Features#
Build with dimod 0.12.14. This speeds up the removal of small biases in presolve.
0.6.4#
New Features#
Build C++ extensions with Cython 3.
Build wheels for Python 3.12.
0.6.3#
Bug Fixes#
Fix
ImportError
being raised on Windows when otherdwave
namespace packages are installed afterdwave-preprocessing
. See #130.
0.6.2#
Bug Fixes#
Fix the handling of quadratic constraints in presolve. Previously fixing variables in quadratic constraints would result in memory errors. See dimod#1351.
0.6.1#
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#
New Features#
Make
SpinReversalTransformComposite
nonblocking.
Add a
seed
parameter to the constructor ofSpinReversalTransformComposite
.
Improve the performance of the
Presolver
constructor by avoiding an unnecessary copy.
Raise an
InvalidModelError
fromPresolver
when given a model withfloat("nan")
bounds.
Raise an
InvalidModelError
fromPresolver
when given a model that has a constraint withfloat("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 requiredNumPy>=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()
, anddwave::presolve::Presolver::techniques()
methods for manipulating the presolve techniques that will be used by the presolver.
Update
Presolver.apply()
,Presolver.normalize()
, andPresolver.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
fromPresolver
when given a model withfloat("nan")
biases.
Add
Presolver.feasibility()
method to return aFeasibility
enum. This can be used to test the feasibility of presolved models.
Add
time_limit_s
keyword argument toPresolver.presolve()
.
Add
time_limit
argument to C++ methoddwave::presolve::Presolver::presolve()
.
Add
Presolver.normalize()
method. See #78.
Add
Presolver.presolve()
method. See #78.
Upgrade Notes#
The wrapped C++
dwave::presolve::Presolver
held bycyPresolver.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 callPresolver.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 aRuntimeError
when presolving a detached model.
Change
Presolver
to no longer raise anInfeasibleModelError
error for infeasible models.
Remove the
InfeasibleModelError
.
Deprecation Notes#
Drop support for Python 3.7.
Deprecate
Presolver.load_default_techniques()
. UsePresolver.set_techniques(TechniqueFlags.Default)
instead.
0.5.4#
Prelude#
Begin using Reno changelog tool.
New Features#
Release wheels for Python 3.11