Releases: dwavesystems/dwave-preprocessing
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
SpinReversalTransformCompositenonblocking. -
Add a
seedparameter to the constructor ofSpinReversalTransformComposite. -
Improve the performance of the
Presolverconstructor by avoiding an unnecessary copy. -
Raise an
InvalidModelErrorfromPresolverwhen given a model withfloat("nan")bounds. -
Raise an
InvalidModelErrorfromPresolverwhen 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
Presolverwill now have presolve techniques loaded by default. -
Add
TechniqueFlagsenum 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++
Presolverusing 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
InvalidModelErrorfromPresolverwhen given a model withfloat("nan")biases. -
Add
Presolver.feasibility()method to return aFeasibilityenum. This can be used to test the feasibility of presolved models. -
Add
time_limit_skeyword argument toPresolver.presolve(). -
Add
time_limitargument 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::Presolverheld bycyPresolver.cpppresolveris now stored as a pointer. -
Remove C++
PostSolverclass. See #90. -
A newly instantiated
Presolverwill 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++
Presolverno longer has a header-only implementation. -
Raise an
InvalidModelErrorrather than aRuntimeErrorwhen presolving a detached model. -
Change
Presolverto no longer raise anInfeasibleModelErrorerror 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
0.5.3
Features
- Remove interactions and variables with 0 bias in
Presolver
Fixes
- Fix handling of empty soft constraint in
Presolver.
0.5.2
Fixes
- Fix case where
Presolverwas incorrectly leaving variables fixed by bounds in the model
0.5.1
Fixes
- Fix case where
Presolverwas incorrectly marking constraints with no variables as infeasible.
0.5.0.dev4
Fixes
- Fix case where
Presolverwas incorrectly marking constraints with no variables as infeasible.
0.5.0
New Features
- Add CQM presolving.
0.5.0.dev3
Fixes
- Use dimod 0.12.0.dev3 which contains bug fixes
0.5.0.dev2
Fixes
- Fix
Presolver.restore_samples()throwing segmentation faults in some cases