Dimod

Latest version: v0.12.18

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

Scan your dependencies

Page 10 of 27

0.10.10

Bug Fixes

- Fix energy calculation in binary quadratic models and quadratic models with no variables. Previously an empty sample would incorrectly raise an error.

<!-- -->

- `bqm_structured` decorator now correctly raises a `BinaryQuadraticModelStructureError` error in cases where nodes of the structured sampler do not include all BQM variables.

0.10.9

New Features

- You can now install `dwave-preprocessing` as part of the dimod install with `pip install dimod[all]`

<!-- -->

- Add `ConstrainedQuadraticModel.relabel_variables()` method to relabel the variables in the objective and constraints.

<!-- -->

- Add `drop_variables()` and `keep_variables()` functions that allow the user to create a new sample set from an old one, retaining only a subset of the variables.

<!-- -->

- Backport the use of `dimod.views.quadratic.Adjacency`, `dimod.views.quadratic.Linear`, and `dimod.views.quadratic.Quadratic` for use with the deprecated `AdjVectorBQM` and `AdjDictBQM` binary quadratic model classes.

<!-- -->

- Backport `iter_neighborhood()`, `reduce_linear()`, `reduce_neighborhood()`, and `reduce_quadratic()` methods for use with the deprecated `AdjVectorBQM` and `AdjDictBQM` binary quadratic model classes.

Upgrade Notes

- `dwave-preprocessing` is no longer a direct dependency. It can still be installed with `pip install dimod[all]`.

Bug Fixes

- Fix instance and subclass testing between deprecated and modern binary quadratic model views. For example `instance(bqm.quadratic, dimod.core.bqm.BQMView)` now returns `True` for modern binary quadratic models.

0.10.8

New Features

- Add `ExactCQMSolver` class with `solve_cqm` method to reference solvers.

<!-- -->

- Add `multiplication_circuit()`, a binary quadratic model generator for multiplication circuits.

<!-- -->

- Add optional second parameter to `multiplication_circuit()` enabling the multiplying arguments of different sizes.

<!-- -->

- `dimod.testing.load_sampler_bqm_tests()` now also tests the deprecated BQM subclasses, namely `AdjVectorBQM` and `AdjDictBQM`.

<!-- -->

- Return a named tuple from `BinaryQuadraticModel.to_numpy_vectors()`.

<!-- -->

- Added `make_quadratic_cqm()` - like make quadratic, but returns a CQM treating auxillary variable constraints as proper constraints instead of adding them to the objective.

<!-- -->

- Add `independent_set`, `maximum_independent_set`, and `maximum_weight_independent_set` functions to `dimod.generators`.

<!-- -->

- Add official support for Python 3.10.

<!-- -->

- Add `aarch64` wheels for linux and `universal` wheels for osx.

<!-- -->

- Added `reduce_binary_polynomial()` that factors out a common basis for `make_quadratic()` and a future `make_quadratic_cqm()`. Given a `BinaryPolynomial` it return a list of reduced terms using auxillary variables and a list of constraints on them.

Deprecation Notes

- Deprecate `dimod.decorators.bqm_index_labelled_input()` decorator.

Bug Fixes

- Fix `ConstrainedQuadraticModel.add_discrete()` to correctly accept an iterator of variables as documented rather than instead requiring a collection.

<!-- -->

- Fixed edge case bug when determining dtype in `as_sample()`.

<!-- -->

- No longer throw a `TypeError` from `ConstrainedQuadraticModel.from_lp_file` when adding a integer quadratic term from constraints.

<!-- -->

- Binary quadratic models with `object` data type now correctly support energy calculations where the given samples contain a superset of the variables in the model. This makes them consistent with binary quadratic models with `np.float32` and `np.float64` data types.

<!-- -->

- Fix `BinaryQuadraticModel.add_linear_from` to work correctly with iterables. Before `linear` had to be a mapping or (incorrectly) an iterator.

0.10.7

New Features

- Add `ConstrainedQuadraticModel.is_equal()` and `ConstrainedQuadraticModel.is_almost_equal()` methods. See [\1012](https://github.com/dwavesystems/dimod/issues/1012)

<!-- -->

- Add `QuadraticModel.is_almost_equal()` method

<!-- -->

- Support equality checks between quadratic models and binary quadratic models in `BinaryQuadraticModel.is_equal()`, `BinaryQuadraticModel.is_almost_equal()`, `QuadraticModel.is_equal()`, and `QuadraticModel.is_almost_equal()` methods.

<!-- -->

- Add `GraphLike` type hint to `dimod.typing`.

<!-- -->

- Add `ConstrainedQuadraticModel.iter_constraint_data()`, `ConstrainedQuadraticModel.iter_violations()` and `ConstrainedQuadraticModel.violations()` methods. See [971](https://github.com/dwavesystems/dimod/issues/971).

<!-- -->

- Added `from_lp_file` classmethod to `ConstrainedQuadraticModel` that reads input LP file and converts it to CQM instance.

<!-- -->

- `ConstrainedQuadraticModel.set_objective` now accepts an iterable.

<!-- -->

- Add `ConstrainedQuadraticModel.check_feasible` method.

<!-- -->

- Add `random_bin_packing` function with the same functionality as the (now deprecated) `bin_packing`.

<!-- -->

- Allow `BinaryQuadraticModel` and `QuadraticModel` to be divided by a scalar or squared. See [\864](https://github.com/dwavesystems/dimod/issues/864), [\#984](https://github.com/dwavesystems/dimod/issues/984).

<!-- -->

- Add `SampleSet.filter()` method that returns a sample set with data rows filtered by a given predicate.

<!-- -->

- Add `.to_dict()` and `.from_dict()` methods to the sample inverter returned by the `cqm_to_bqm` function. The methods return a json serializable representation of the inversion for storage if needed. See [977](https://github.com/dwavesystems/dimod/issues/977).

<!-- -->

- Add `random_multi_knapsack` function with the same functionality as the (now deprecated) `multi_knapsack`.

<!-- -->

- Add `random_knapsack` function with the same functionality as the (now deprecated) `knapsack`.

<!-- -->

- Allow the offset of a `BinaryQuadraticModel` to be specified as a keyword argument.

<!-- -->

- Add [PEP 561](https://www.python.org/dev/peps/pep-0561/) compatibility to allow tools like [mypy](http://mypy-lang.org/) to auto-detect typing hints. See [\#980](https://github.com/dwavesystems/dimod/issues/980).

Upgrade Notes

- The `cls` keyword argument of the `chimera_anticluster` function now does nothing.

Deprecation Notes

- Deprecate `cls` keyword argument of the `chimera_anticluster` function.

<!-- -->

- Deprecate `bin_packing` function in favour of `random_bin_packing`.

<!-- -->

- Deprecate `multi_knapsack` function in favour of `random_multi_knapsack`.

<!-- -->

- Deprecate `knapsack` function in favour of `random_knapsack`.

Bug Fixes

- `QuadraticModel` can now be multiplied by a number in place.

<!-- -->

- Fix energy calculations for integer variables with large values. See [\982](https://github.com/dwavesystems/dimod/issues/982).

<!-- -->

- Make `dimod.BinaryQuadraticModel` a virtual subclass of `dimod.core.bqm.BQM`.

0.10.6

New Features

- Add `Binaries`, `Spins` and `Integers` functions. See [918](https://github.com/dwavesystems/dimod/issues/918).

<!-- -->

- Add `DiscreteQuadraticModel.get_cases` method to match `CaseLabelDQM.get_cases`.

<!-- -->

- Implement `QuadraticModel.remove_interaction` method, previously it raised a `NotImplementedError` error.

<!-- -->

- Add `linear` option as a new `slack_method` for `DiscreteQuadraticModel.add_linear_inequality_constraint` method. This will add only one discrete variable to an inequality constraint with linear number of cases, according to right hand side value of the constraint.

<!-- -->

- Add `quicksum` function for faster summation of `QuadraticModel` and `BinaryQuadraticModel`. Python's built-in `sum` continues to work, but `quicksum` will generally be faster when adding many objects.

<!-- -->

- Add a generator, `dimod.generators.binary_encoding`, to create a binary quadratic model that encodes an integer.

<!-- -->

- Add methods to construct a constrained quadratic model from other model types:

- `ConstrainedQuadraticModel.from_discrete_quadratic_model` with an alias `ConstrainedQuadraticModel.from_dqm`
- `ConstrainedQuadraticModel.from_quadratic_model` with two aliases `ConstrainedQuadraticModel.from_qm` and `ConstrainedQuadraticModel.from_bqm`

See [866](https://github.com/dwavesystems/dimod/issues/866).

<!-- -->

- Add `QuadraticModel.add_quadratic_from()` method.

<!-- -->

- Add `QuadraticModel.add_linear_from()` method.

<!-- -->

- Add `ConstrainedQuadraticModel.lower_bound()` and `ConstrainedQuadraticModel.upper_bound()` methods.

<!-- -->

- Add `cqm_to_bqm` function.

<!-- -->

- Add `ConstrainedQuadraticModel.substitute_self_loops` method that replaces integer self-loops by introducing a new variable and adding a constraint.

<!-- -->

- Add `copy_always` parameter to `Initialized.parse_initial_states`.

<!-- -->

- Add new binary quadratic model generators for simple logic gates:

- `dimod.generators.and_gate`
- `dimod.generators.fulladder_gate`
- `dimod.generators.halfadder_gate`
- `dimod.generators.or_gate`
- `dimod.generators.xor_gate`

See [951](https://github.com/dwavesystems/dimod/issues/951).

<!-- -->

- `QuadraticModel.energies`, `QuadraticModel.energy`, `BinaryQuadraticModel.energies`, and `BinaryQuadraticModel.energy` now all support samples containing a superset of the variables in the model. Any variables not in the model are ignored when calculating the energy.

<!-- -->

- Labels for `dimod.Spin`, `dimod.Binary`, and `dimod.Integer` are no longer required positional arguments. By default, unique labels are applied via the [uuid](https://docs.python.org/3/library/uuid.html) module.

Upgrade Notes

- `ConstrainedQuadraticModel.objective` is now always a `QuadraticModel`. Previously it could either be a `BinaryQuadraticModel` or a `QuadraticModel`.

<!-- -->

- `ConstrainedQuadraticModel.objective` now contains all variables in the constrained quadratic model. Previously it could contain a subset of the variables.

Deprecation Notes

- Deprecate `ConstrainedQuadraticModel.variables.vartypes`, `ConstrainedQuadraticModel.variables.lower_bounds`, and `ConstrainedQuadraticModel.variables.upper_bounds` attributes.

<!-- -->

- Deprecate `ConstrainedQuadraticModel.variables.vartype()` method.

Bug Fixes

- `dimod::QuadraticModelBase.remove_interaction` now correctly returns `true` when removing a self-loop.

<!-- -->

- Return `bool` rather than `numpy.bool_` from `QuadraticModel.is_equal` and `BinaryQuadraticModel.is_equal` when comparing empty models to numbers.

<!-- -->

- Fix `as_samples` and `Initialized.parse_initial_states` by ensuring that the `copy` argument is not ignored in `as_samples` and `Initialized.parse_initial_states` does not modify any input data. See [861](https://github.com/dwavesystems/dimod/issues/861).

<!-- -->

- Remove unused `ConstrainedQuadraticModel.labels` instance variable.

<!-- -->

- Fix adding constraints with integer variables via `ConstrainedQuadraticModel.add_constraint_from_iterable` when those integer variables have pre-existing lower or upper bounds. See [943](https://github.com/dwavesystems/dimod/issues/943).

<!-- -->

- Correctly account for the offset when multiplying binary quadratic models

<!-- -->

- `BinaryQuadraticModel.energies` now has consistent behaviour accross all data types when given samples containing a superset of the variables in the model. Previously binary quadratic models with `object` data type would allow a superset of variables, while `float64` and `float32` would not.

0.10.5

New Features

- Add `QuadraticModel.set_upper_bound` and `QuadraticModel.set_lower_bound` methods.

Upgrade Notes

- The `preprocessing` extra install argument has been removed.

<!-- -->

- Remove `dimod.meta` namespace. Its functionality, `SamplerABCMeta` and `samplemixinmethod`, has been migrated to the `dimod.core.sampler` namespace.

Bug Fixes

- Fix `QuadraticModel.energies` when given samples with values greater than the maximum value representable by an 8 bit integer. Previously samples were incorrectly cast to 8 bit integers.

<!-- -->

- When a `QuadraticModel` already has an integer variable, adding it with `QuadraticModel.add_variable` with different lower or upper bounds now correctly raises an exception. Likewise, adding or multiplying the same variable symbolically with different bounds will also raise an exception.

<!-- -->

- When a `ConstrainedQuadraticModel` already has an integer variable, adding it as part of a constraint or objective with different lower or upper bounds now correctly raises an exception.

<!-- -->

- Make `dimod.INTEGER` correctly deepcopy-able.

<!-- -->

- Fix (deprecated) `AdjVectorBQM.to_file` and `AdjVectorBQM.from_file`. See [898](https://github.com/dwavesystems/dimod/issues/898).

<!-- -->

- Fix `BinaryQuadraticModel.energies` for a `BQM` with `dtype=object` and a single variable with an integer bias. Previously it would raise a `numpy.core._exceptions._UFuncOutputCastingError`.

<!-- -->

- Fix energy calculation when the lower bound (lb) equals the upper bound (lb) in `DiscreteQuadraticModel.add_linear_inequality_constraint` and `BinaryQuadraticModel.add_linear_inequality_constraint`.

<!-- -->

- Promote dwave-preprocessing to a full dependency of dimod to avoid issues that occur when dimod is a required package but dwave-preprocessing is not.

Page 10 of 27

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.