Skip to content

0.12.0

Compare
Choose a tag to compare
@arcondello arcondello released this 31 Oct 19:54
· 378 commits to main since this release
408846a

Prelude

The entire C++ library has been rewritten for performance and consistency.

New Features

  • New dimod::abc::QuadraticModelBase abstract base class.
  • Better performance for linear models.
  • Add dimod.cyqmbase.cyQMBase_template Cython class to serve as an abstract base class for Cython quadratic models.
  • Break dimod/libcpp.pxd into a full Cython subpackage to mirror the structure under dimod/include/. This allows for better organization, and less need to recompile all Cython files when changing parts of the C++ library. Packages that depend on dimod are still encouraged to use the from dimod.libcpp cimport ... syntax.
  • Build wheels for Python 3.11.

  • Add C++ dimod::ConstrainedQuadraticModel class.

  • Add C++ ConstrainedQuadraticModel.add_constraint() overload that allows a user to move a binary quadratic model or quadratic model as a constraint.
  • Add C++ ConstrainedQuadraticModel.constraint_weak_ptr() method.
  • Make BinaryQuadraticModel.vartype callable. This allows for more uniform syntax between binary quadratic models, quadratic models and constrained quadratic models.
  • Replace current ConstrainedQuadraticModel implementation with one implemented in Cython.
  • Add ConstrainedQuadraticModel.clear() method.

Bug Fixes

  • Fix a performance regression introduced in 0.10.0 when loading linear binary quadratic models from files.
  • Fix the handling of self-loops in dimod::Expression::add_quadratic() and similar methods.
  • Fix C++ ConstrainedQuadraticModel.remove_variable() method. Previously it would segmentation fault.

Upgrade Notes

  • Rewrite dimod::QuadraticModelBase and move it to dimod::abc::QuadraticModelBase in abc.h.
  • Move dimod::Vartype, dimod::vartype_info, and dimod::vartype_limits` tovartypes.h``.
  • Remove the dimod::Neighborhood class.
  • Remove iterators.h.
  • Move dimod::BinaryQuadraticModel to binary_quadratic_model.h.
  • Remove dimod.binary.cybqm.cyBQMBase class.
  • Remove dimod.quadratic.cyqm.cyQMBase class.
  • Build manylinux2014 wheels. Previously we built manylinux2010.
  • Build arm64 and x86_64 wheels for macos. Previously we built x86_64 and universal2.

Deprecation Notes

  • Deprecate the cascade keyword argument in ConstrainedQuadraticModel.fix_variable().
  • Deprecate the cascade keyword argument in ConstrainedQuadraticModel.fix_variables().