Prelude
Add support for real-valued variables.
New Features
- Improved deprecation warnings and documentation. See [192](https://github.com/dwavesystems/dwave-ocean-sdk/issues/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](https://github.com/dwavesystems/dimod/issues/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](https://github.com/dwavesystems/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](https://github.com/dwavesystems/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](https://github.com/dwavesystems/dimod/issues/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](https://github.com/dwavesystems/dimod/issues/1025)
<!-- -->
- In the <span class="title-ref">cqm_to_bqm</span> 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.