Releases: dwavesystems/dimod
Releases · dwavesystems/dimod
0.10.16
New Features
- Add
SampleSet.from_samples_cqm()
method.
Bug Fixes
ExactCQMSolver.sample_cqm
now usesSampleSet.from_samples_cqm
. This corrects a small error in the calculation of constraint satisfaction.
dimod.generators.random_knapsack()
anddimod.generators.random_bin_packing()
no longer use a fixed seed by default.
ConstrainedQuadraticModel.add_discrete()
,ConstrainedQuadraticModel.add_constraint_from_iterable()
, andConstrainedQuadraticModel.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
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()
andReals()
functions for creating quadratic models with a single real-valued variable.
- Support variables with
Vartype.REAL
inQuadraticModel
.
ConstrainedQuadraticModel.to_file()
now uses serialization format 1.3. This format is backwards compatibile.
- Add
vartype
andlinear_only
arguments toConstrainedQuadraticModel.num_biases()
.
- Add
vartype
andinclude_objective
arguments toConstrainedQuadraticModel.num_quadratic_variables()
.
Upgrade Notes
- Remove
.vartypes
,.lower_bounds
, and.upper_bounds
attributes fromConstrainedQuadraticModel.variables
. These were previously deprecated in dimod 0.10.6.
- Remove
.vartype()
method fromConstrainedQuadraticModel.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()
, andPolySampler.sample_qubo()
methods. These were previously scheduled to be removed in dimod 0.10.0.
AdjVectorBQM
andAdjDictBQM
are now aliases forBinaryQuadraticModel
andDictBQM
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
Deprecation Notes
- Deprecate
cls
parameter indimod.serialization.coo.load()
anddimod.serialization.coo.loads()
.
Bug Fixes
- Fix energy calculations for quadratic models with squared terms. See #1136.
dimod.serialization.fileview.load()
now correctly propagatesKeyError
from the loading function.
0.11.0.dev0
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()
andReals()
functions for creating quadratic models with a single real-valued variable.
- Support variables with
Vartype.REAL
inQuadraticModel
.
ConstrainedQuadraticModel.to_file()
now uses serialization format 1.3. This format is backwards compatibile.
- Add
vartype
andlinear_only
arguments toConstrainedQuadraticModel.num_biases()
.
- Add
vartype
andinclude_objective
arguments toConstrainedQuadraticModel.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
New Features
- Add
Polynomial
todimod.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
- Add
Deprecation Notes
- Deprecate
cls
parameter indimod.generators.random.gnm_random_bqm()
,dimod.generators.random.gnp_random_bqm()
,dimod.generators.random.uniform()
,dimod.generators.random.ran_r()
,dimod.generators.random.randint()
, anddimod.generators.random.doped()
.
Bug Fixes
Comparison.__repr__()
now correctly returns a representation that can be passed toeval()
.
- Fix
dimod.typing.Bias
to correctly excludenumpy.complexfloating
.
- Attempting to relabel two model variables to the same target will now correctly raise a
ValueError
. See #1110.
0.10.13
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
andSampleLike
todimod.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()
andBinaryQuadraticModel.energies()
now return a NumPy array with dtypenp.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
andConstrainedQuadraticModel
.
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()
andBinaryQuadraticModel.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 aValueError
.
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
New Features
- Add
cascade
keyword argument toConstrainedQuadraticModel.fix_variable()
andConstrainedQuadraticModel.fix_variables()
. These methods also now return any variables fixed using the cascade keyword argument.
- Add
QuadraticModel::swap_variables()
andBinaryQuadraticModel::swap_variables()
methods to the C++ code.
- Reintroduce
BinaryQuadraticModel.to_serializable()
andBinaryQuadraticModel.from_serializable()
methods that were previously removed in dimod 0.10.0, see #847.
Upgrade Notes
ConstrainedQuadraticModel.fix_variable()
andConstrainedQuadraticModel.fix_variables()
now raise aValueError
if given a variable not in the model.
- Make
use_bytes
andbytes_type
keyword-only arguments inBinaryQuadraticModel.to_serializable()
. Note thatBinaryQuadraticModel.to_serializable()
was removed in 0.10.0 but restored in 0.10.12.
- The
bias_dtype
keyword-only argument inBinaryQuadraticModel.to_serializable()
now does nothing. Note thatBinaryQuadraticModel.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 anAttributeError
.
0.10.11
New Features
- Add
.fix_variable()
and.fix_variables()
methods toConstrainedQuadraticModel
.
- Add
.fix_variable()
and.fix_variables()
methods toQuadraticModel
.
- 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 likevariables[:5]
which will return a newVariables
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
, anddimod.IntegerArray
. These methods build numpy object arrays from their respective generator methodsdimod.Binaries
,dimod.Spins
anddimod.Integers
.
Upgrade Notes
QuadraticViewsMixin
now has.add_linear()
as an abstract method.
BinaryQuadraticModel.fix_variable()
no longer raises aValueError
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
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 aBinaryQuadraticModelStructureError
error in cases where nodes of the structured sampler do not include all BQM variables.
0.10.9
New Features
- You can now install
dwave-preprocessing
as part of the dimod install withpip install dimod[all]
- Add
ConstrainedQuadraticModel.relabel_variables()
method to relabel the variables in the objective and constraints.
- Add
drop_variables()
andkeep_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
, anddimod.views.quadratic.Quadratic
for use with the deprecatedAdjVectorBQM
andAdjDictBQM
binary quadratic model classes.
- Backport
iter_neighborhood()
,reduce_linear()
,reduce_neighborhood()
, andreduce_quadratic()
methods for use with the deprecatedAdjVectorBQM
andAdjDictBQM
binary quadratic model classes.
Upgrade Notes
dwave-preprocessing
is no longer a direct dependency. It can still be installed withpip 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 returnsTrue
for modern binary quadratic models.