Skip to content

0.11.0

Compare
Choose a tag to compare
@arcondello arcondello released this 07 May 22:42
· 617 commits to main since this release
5cf5f74

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.2. 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().
  • Add check_header keyword-only argument to ConstrainedQuadraticModel.from_file().
  • Add a global flag dimod.REAL_INTERACTIONS. When this flag is set to False, variables with variable type Vartype.REAL cannot have interactions. dimod.REAL_INTERACTIONS is set to False by default.
  • Add the ability to specify a default variable type and bounds for missing variables when calling QuadraticModel.add_linear() and QuadraticModel.add_linear_from().
  • Add QuadraticModel::swap() and BinaryQuadraticModel::swap() methods to the C++ code. See #928.
  • Add lp.loads() and lp.load() functions.
  • Improve the performance of the ConstrainedQuadraticModel.from_lp_file() method.
  • Improve the performance of iteration over Variables objects.

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.
  • Drop support for Numpy 1.19
  • Some malformed LP-files that previously caused ConstrainedQuadraticModel.from_lp_file() to emit a warning now raise an error instead.
  • Provide manylinux2014 wheels for Python 3.10 rather than manylinux2010.

Deprecation Notes

  • Deprecate support for the ConstrainedQuadraticModel.add_variable(v, vartype) argument order. Use ConstrainedQuadraticModel.add_variable(vartype, v) instead. See #969.
  • In the future, ConstrainedQuadraticModel.num_quadratic_variables() will also include the objective towards the count by default.
  • Deprecate ConstrainedQuadraticModel.from_lp_file() method. Users should use the more explicit lp.loads() and lp.load() functions instead. The ConstrainedQuadraticModel.from_lp_file() will be removed in dimod 0.13.0.
  • The default_lower_bounds and default_upper_bounds keyword arguments for ConstrainedQuadraticModel.from_lp_file() are deprecated and do nothing.

Bug Fixes

  • Fixes performance regression on energy calculations introduced in 0.10.0. See #1025
  • In the cqm_to_bqm function, set the Lagrange multiplier to one if the maximum absolute bias is zero.
  • dimod.variables.Variables objects now correctly raise an IndexError when given negative indices that are out of range.