Skip to content

Releases: dwavesystems/dimod

0.10.16

15 Mar 18:37
a330e09
Compare
Choose a tag to compare

New Features

  • Add SampleSet.from_samples_cqm() method.

Bug Fixes

  • ExactCQMSolver.sample_cqm now uses SampleSet.from_samples_cqm. This corrects a small error in the calculation of constraint satisfaction.
  • dimod.generators.random_knapsack() and dimod.generators.random_bin_packing() no longer use a fixed seed by default.
  • ConstrainedQuadraticModel.add_discrete(), ConstrainedQuadraticModel.add_constraint_from_iterable(), and ConstrainedQuadraticModel.add_discrete_from_model() now correctly raise an error when given a binary variable that overlaps with an existing discrete constraint. See #1149.
  • SampleSet.from_samples_bqm now handles empty list input correctly.

0.11.0rc0

02 Mar 18:41
556d0a8
Compare
Choose a tag to compare
0.11.0rc0 Pre-release
Pre-release

Prelude

Add support for real-valued variables.

New Features

  • Improved deprecation warnings and documentation. See #192.
  • Add C++ Vartype::REAL, a new variable type for real-valued variables.
  • Support variables with Vartype::REAL in C++ QuadraticModel.
  • Add Vartype.REAL, a new variable type for real-valued variables.
  • Add Real() and Reals() functions for creating quadratic models with a single real-valued variable.
  • Support variables with Vartype.REAL in QuadraticModel.
  • ConstrainedQuadraticModel.to_file() now uses serialization format 1.3. This format is backwards compatibile.
  • Add vartype and linear_only arguments to ConstrainedQuadraticModel.num_biases().
  • Add vartype and include_objective arguments to ConstrainedQuadraticModel.num_quadratic_variables().

Upgrade Notes

  • Remove .vartypes, .lower_bounds, and .upper_bounds attributes from ConstrainedQuadraticModel.variables. These were previously deprecated in dimod 0.10.6.
  • Remove .vartype() method from ConstrainedQuadraticModel.variables. It was previously deprecated in dimod 0.10.6.
  • Remove bqm_index_labelled_input decorator. It was previously deprecated in dimod 0.10.8.
  • Remove SampleSet.is_writeable attribute.
  • Remove dimod.generators.knapsack(). It was previously deprecated in dimod 0.10.6.
  • Remove dimod.generators.multi_knapsack(). It was previously deprecated in dimod 0.10.6.
  • Remove dimod.generators.bin_packing(). It was previously deprecated in dimod 0.10.6.
  • Remove HigherOrderComposite.sample_ising() method. It was previously scheduled to be removed in dimod 0.10.0.
  • Remove PolySampler.sample(), PolySampler.sample_ising(), and PolySampler.sample_qubo() methods. These were previously scheduled to be removed in dimod 0.10.0.
  • AdjVectorBQM and AdjDictBQM are now aliases for BinaryQuadraticModel and DictBQM respectively rather than having their own implementation with a slightly different API. They were previously deprecated in dimod 0.10.0.
  • The dimod.bqm namespace has been removed.
  • The dimod.core.bqm namespace has been removed.
  • dimod::AdjVectorBQM has been removed from the C++ code.
  • Some composites were migrated to dwave-preprocessing in dimod0.10.0. Trying to import and use these composites from dimod now raises an exception rather than a warning. The affected composites:
    • ClipComposite
    • ConnectedComponentsComposite
    • FixedVariableComposite
    • RoofDualityComposite
    • ScaleComposite
    • SpinReversalTransformComposite
  • The fix_variables() was migrated to dwave-preprocessing in dimod 0.10.0. Trying to import and use it now raises an exception rather than a warning.
  • Packages that require binary compatibility with dimod and that were compiled with 0.10.0 will not work with 0.11.0.

Deprecation Notes

  • In the future, ConstrainedQuadraticModel.num_quadratic_variables() will also include the objective towards the count by default.

Bug Fixes

  • Fixes performance regression on energy calculations introduced in 0.10.0. See #1025

0.10.15

02 Mar 18:35
003253f
Compare
Choose a tag to compare

Deprecation Notes

  • Deprecate cls parameter in dimod.serialization.coo.load() and dimod.serialization.coo.loads().

Bug Fixes

  • Fix energy calculations for quadratic models with squared terms. See #1136.
  • dimod.serialization.fileview.load() now correctly propagates KeyError from the loading function.

0.11.0.dev0

24 Feb 19:39
c376e8e
Compare
Choose a tag to compare
0.11.0.dev0 Pre-release
Pre-release

Prelude

Add support for real-valued variables.

New Features

  • Add C++ Vartype::REAL, a new variable type for real-valued variables.
  • Support variables with Vartype::REAL in C++ QuadraticModel.
  • Add Vartype.REAL, a new variable type for real-valued variables.
  • Add Real() and Reals() functions for creating quadratic models with a single real-valued variable.
  • Support variables with Vartype.REAL in QuadraticModel.
  • ConstrainedQuadraticModel.to_file() now uses serialization format 1.3. This format is backwards compatibile.
  • Add vartype and linear_only arguments to ConstrainedQuadraticModel.num_biases().
  • Add vartype and include_objective arguments to ConstrainedQuadraticModel.num_quadratic_variables().

Deprecation Notes

  • In the future, ConstrainedQuadraticModel.num_quadratic_variables() will also include the objective towards the count by default.

0.10.14

24 Feb 19:35
29a6dcd
Compare
Choose a tag to compare

New Features

  • Add Polynomial to dimod.typing.
  • Add Comparison.to_polystring() method.
  • Printing Comparison objects now returns an equation representation of the comparison as a string.
  • Add ConstrainedQuadraticModel.relabel_constraints() method. See #1066.
  • Add ConstrainedQuadraticModel.remove_constraint() method. See #1104.
  • Add methods to report memory usage of quadratic models:

    • Add QuadraticModel.nbytes() method.
    • Add BinaryQuadraticModel.nbytes() method.
    • Add QuadraticModel::nbytes() method to C++ the code.
    • Add BinaryQuadraticModel::nbytes() method to C++ the code.

    See #668

Deprecation Notes

  • Deprecate cls parameter in dimod.generators.random.gnm_random_bqm(), dimod.generators.random.gnp_random_bqm(), dimod.generators.random.uniform(), dimod.generators.random.ran_r(), dimod.generators.random.randint(), and dimod.generators.random.doped().

Bug Fixes

  • Comparison.__repr__() now correctly returns a representation that can be passed to eval().
  • Fix dimod.typing.Bias to correctly exclude numpy.complexfloating.
  • Attempting to relabel two model variables to the same target will now correctly raise a ValueError. See #1110.

0.10.13

11 Feb 00:18
1f0cdff
Compare
Choose a tag to compare

New Features

  • Add ConstrainedQuadraticModel.add_discrete_from_comparison() method.
  • Add ConstrainedQuadraticModel.add_discrete_from_iterable() method.
  • Add ConstrainedQuadraticModel.add_discrete_from_model() method.
  • ConstrainedQuadraticModel.add_discrete() now supports additional argument types.
  • Add QuadraticModel.flip_variable() method.
  • Add ConstrainedQuadraticModel.flip_variable() method.
  • Support iterator inputs to as_samples(). See #543.
  • Add SamplesLike and SampleLike to dimod.typing. See #1008.
  • Add dimod::vartype_limits to C++ code for compile-time information about variable types.
  • Add dimod::vartype_info to C++ code for runtime information about variable types.
  • Add vartype_info() function.
  • BinaryQuadraticModel.resize() now returns the difference in the number of variables between the current and previous binary quadratic model. Previously it always returned 0. See #1091
  • Add BinaryQuadraticModel.maximum_energy_delta() method.
  • Add ConstrainedQuadraticModel.set_lower_bound() method. See #1105.
  • Add ConstrainedQuadraticModel.set_upper_bound() method. See #1105.

Upgrade Notes

  • as_samples() no longer always casts input sample values to integers.
  • QuadraticModel.energies() and BinaryQuadraticModel.energies() now return a NumPy array with dtype np.float64 be default. Previously they defaulted to match the dtype of the model.
  • Bounds for integer variables are no longer rounded to the nearest int in QuadraticModel and ConstrainedQuadraticModel.

Deprecation Notes

  • Deprecate support for a 2-tuple of (dict, list) as a samples-like. E.g. ({'a': 1, 'b': 0}, ['a', 'b']) is no longer supported. (array_like, labels) is still supported, as is a dictionary. Support will be removed in dimod 0.12.0.

Bug Fixes

  • QuadraticModel.energies() and BinaryQuadraticModel.energies() will return the correct energy when given samples with non-integer values.
  • It is no longer possible to add an integer variables to a quadratic model with bounds that do not include at least one integer between them. E.g. qm.add_variable('INTEGER', 'v', lower_bound=1.2, upper_bound=1.5) will now raise a ValueError.
  • ConstrainedQuadraticModel.add_variable() now correctly raises an error when a variable is added twice with inconsistent bounds.
  • ConstrainedQuadraticModel.add_variable() now correctly returns the variable label when a variable is added twice.

0.10.12

21 Jan 20:46
66f8c06
Compare
Choose a tag to compare

New Features

  • Add cascade keyword argument to ConstrainedQuadraticModel.fix_variable() and ConstrainedQuadraticModel.fix_variables(). These methods also now return any variables fixed using the cascade keyword argument.
  • Add QuadraticModel::swap_variables() and BinaryQuadraticModel::swap_variables() methods to the C++ code.
  • Reintroduce BinaryQuadraticModel.to_serializable() and BinaryQuadraticModel.from_serializable() methods that were previously removed in dimod 0.10.0, see #847.

Upgrade Notes

  • ConstrainedQuadraticModel.fix_variable() and ConstrainedQuadraticModel.fix_variables() now raise a ValueError if given a variable not in the model.
  • Make use_bytes and bytes_type keyword-only arguments in BinaryQuadraticModel.to_serializable(). Note that BinaryQuadraticModel.to_serializable() was removed in 0.10.0 but restored in 0.10.12.
  • The bias_dtype keyword-only argument in BinaryQuadraticModel.to_serializable() now does nothing. Note that BinaryQuadraticModel.to_serializable() was removed in 0.10.0 but restored in 0.10.12.

Bug Fixes

  • Fix QuadraticModel.fix_variable() to correctly update the vartypes and bounds of of variables that are not fixed.
  • Fix QuadraticModel.fix_variable() when fixing the last variable in the quadratic model. Previously it would incorrectly raise an AttributeError.

0.10.11

17 Jan 18:06
50bfa4f
Compare
Choose a tag to compare

New Features

  • Add .fix_variable() and .fix_variables() methods to ConstrainedQuadraticModel.
  • Add .fix_variable() and .fix_variables() methods to QuadraticModel.
  • Add QuadraticModel::resize() method in C++ code.
  • Speed up printing sample sets with a large number of variables. See #1068.
  • Add ability to pass a slice to Variables.__getitem__. This allows for syntax like variables[:5] which will return a new Variables object. See #1069.
  • Add BinaryQuadraticModel.iter_linear() method.
  • Add BinaryQuadraticModel.to_polystring() method.
  • Add QuadraticModel.iter_linear() method.
  • Add QuadraticModel.to_polystring() method.
  • Introduces variable array methods dimod.BinaryArray, dimod.SpinArray, and dimod.IntegerArray. These methods build numpy object arrays from their respective generator methods dimod.Binaries, dimod.Spins and dimod.Integers.

Upgrade Notes

  • QuadraticViewsMixin now has .add_linear() as an abstract method.
  • BinaryQuadraticModel.fix_variable() no longer raises a ValueError when given a value that does not match the variable type.
  • Python 3.6 is no longer supported.
  • NumPy 1.17 and 1.18 are no longer supported.
  • dimod.views.quadratic.QuadraticModelMixin now has an abstract property .offset.

Bug Fixes

  • Fix setting linear and quadratic biases on vartype views when the relevant variable or interaction does not already exist.
  • multiplcation_circuit now adds the carry from the most significant column in a row into the most significant column of the next row.

0.10.10

03 Dec 19:25
24e06a8
Compare
Choose a tag to compare

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

26 Nov 19:21
c3837d9
Compare
Choose a tag to compare

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.