Dimod

Latest version: v0.12.14

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

Scan your dependencies

Page 10 of 26

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.

0.10.4

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.

<!-- -->

- 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`.

0.10.3

New Features

- Add `QuadraticModel.change_vartype()` method.

<!-- -->

- Add C++ `dimod::QuadraticModel::change_vartype()` method. Also add non-const versions of `dimod::QuadraticModel::vartype()`, `dimod::QuadraticModel::lower_bound()`, and `dimod::QuadraticModel::upper_bound()`.

Bug Fixes

- Fix `QuadraticModel.spin_to_binary` not correctly updating the variable type of the changed variables.

0.10.2

Bug Fixes

- Fix case where adding linear and quadratic biases whose class requires arguments on construction to a `BinaryQuadraticModel` with `object` dtype could fail.

0.10.1

New Features

- Add an optional `label` keyword argument to `ConstrainedQuadraticModel.add_discrete`. The method also now returns the assigned label, whether supplied or generated. This is consistent with `ConstrainedQuadraticModel.add_constraint`.

<!-- -->

- `cyBQM` and `cyQM` fused types can now be cimported from the `dimod` namespace.

<!-- -->

- Add `.data()` method to `cyQM_template` and `cyBQM_template` that returns a const pointer to the underlying C++ `QuadraticModel` and `BinaryQuadraticModel` respectively.

Upgrade Notes

- `BinaryQuadraticModel.data.vartype()` is now accessed as a method rather than as an attribute. This is consistent with `QuadraticModel.data.vartype()`. `BinaryQuadraticModel.vartype` is still an attribute.

<!-- -->

- `from dimod cimport cyBQM` now is a fused type containing `cyBQM_float32` and `cyBQM_float64`. You can use the `cyBQM` containing `cyAdjVectorBQM` with `from dimod.bqm cimport cyBQM`.

Bug Fixes

- Fix wrong behaviour when the lower bound (lb) equals the upper bound (lb) in `add_linear_equality_constraint`. Correct behaviour is to add constraint as eqaulity when lb is equal ub.

Page 10 of 26

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.