Dwave-preprocessing

Latest version: v0.6.5

Safety actively analyzes 629994 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

0.6.5

New Features

- Build with [dimod 0.12.14](https://github.com/dwavesystems/dimod/releases/tag/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 other `dwave` namespace packages are installed after `dwave-preprocessing`. See [\130](https://github.com/dwavesystems/dwave-preprocessing/issues/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 [dimod1351](https://github.com/dwavesystems/dimod/issues/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 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](https://github.com/dwavesystems/dwave-preprocessing/issues/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](https://github.com/dwavesystems/dwave-preprocessing/issues/78).


- Add `Presolver.presolve()` method. See [\78](https://github.com/dwavesystems/dwave-preprocessing/issues/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](https://github.com/dwavesystems/dwave-preprocessing/issues/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.

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.