Release Notes#

0.12.17#

New Features#

  • Allow BinaryQuadraticModel.contract_variables() to contract variables without an interaction. Previously it raised a ValueError.

  • Add power_r() generator function to dimod.generators. The weights of the generated Ising problems follow a power-law distribution with respect to their magnitude.

  • Add bin_packing generator function to dimod.generators.

  • Add labels keyword argument to ConstrainedQuadraticModel.iter_constraint_data() and ConstrainedQuadraticModel.iter_violations() methods. The labels keyword argument allows a user to generate the data/violations for a subset of the constraints. See #1381.

  • Add knapsack generator function to dimod.generators.

  • Support Python 3.13.

  • Add quadratic_assignment generator function to dimod.generators.

0.12.16#

New Features#

  • Add dimod/typing.pdx. This allows users to cimport common C types into other namespaces.

  • Support NumPy 2.0. Also, no longer require NumPy at build-time.

  • Reduce the size of manylinux wheels.

Upgrade Notes#

  • Remove Cython fused types dimod.cyutilities.SignedInteger, dimod.cyutilities.UnsignedInteger, dimod.cyutilities.Integer, and dimod.cyutilities.ConstInteger, dimod.cyutilities.Numeric, and dimod.cyutilities.ConstNumeric. Use the types in dimod.typing instead.

  • Remove Cython fused types dimod.discrete.cydiscrete_quadratic_model.Unsigned, dimod.discrete.cydiscrete_quadratic_model.Integral32plus, dimod.discrete.cydiscrete_quadratic_model.Numeric, and dimod.discrete.cydiscrete_quadratic_model.Numeric32plus. Use the types in dimod.typing instead.

  • Don’t include debug info in built .so files.

0.12.15#

New Features#

  • Add C++ QuadraticModelBase::remove_interactions() method.

  • Add dimod.generators.random_binary_paint_shop_problem() binary paint shop problem generator.

  • Add an abstract method QuadraticViewsMixin.add_quadratic().

  • Add a method QuadraticViewsMixin.add_quadratic_from() to add quadratic interactions. This method is intended to be used as follows: ConstrainedQuadraticModel.objective.add_quadratic_from(), similarly to ConstrainedQuadraticModel.objective.add_linear_from().

  • Add check_overlaps keyword argument to ConstrainedQuadraticModel.add_discrete(), see #1364.

Upgrade Notes#

  • All sublcasses of QuadraticViewsMixin, including ObjectiveView, QuadraticModel and BinaryQuadraticModel, now require to have the method add_quadratic().

0.12.14#

New Features#

  • Add C++ dimod::abc::QuadraticModelBase::remove_variables() method and accompanying overloads.

  • Speed up C++ dimod::Expression::remove_variables() method.

0.12.13#

New Features#

  • Build wheels for Python 3.12.

  • Build C++ extensions with Cython 3.

0.12.12#

New Features#

  • Add mimo() function for generating a multi-input multiple-output (MIMO) channel-decoding problem.

  • Add coordinated_multipoint() function for generating a coordinated multi-point (CoMP) decoding problem.

0.12.11#

New Features#

  • Make SampleSet.relabel_variables() non-blocking in all cases. Previously it would block when inplace=False.

  • Implement SampleSet serialization schema version 3.2.0.

    Version 3.2.0 replaces float values that represent integers with int in the "data" field of any arrays returned by SampleSet.to_serializable(). In some pathological cases this can result in a much smaller representation when the data dictionaries are json-serialized by avoiding the redundant .0 appended to every value.

    This is a backwards-compatible change.

  • Add penalization_method parameter to BinaryQuadraticModel.add_linear_inequality_constraint(). It allows the use of unbalanced penalization https://arxiv.org/abs/2211.13914 instead of the slack variables method for the inequality constraints.

Bug Fixes#

  • Fix the behavior of SampleSet.relabel_variables() when inplace=True. Previously the method incorrectly returned a copy when the sample set was unresolved.