dimod.ConstrainedQuadraticModel.add_discrete#
- ConstrainedQuadraticModel.add_discrete(data, *args, **kwargs) Hashable [source]#
A convenience wrapper for other methods that add one-hot constraints.
One-hot constraints can represent discrete variables (for example a
color
variable that has values{"red", "blue", "green"}
) by requiring that only one of a set of two or more binary variables is assigned a value of 1.These constraints support only
BINARY
variables and must be disjoint; that is, variables in one such constraint must not be used in others in the model.Constraints added by the methods wrapped by
add_discrete()
are guaranteed to be satisfied in solutions returned by theLeapHybridCQMSampler
hybrid sampler.Examples
>>> cqm = dimod.ConstrainedQuadraticModel()
Add a discrete constraint over variables
x, y, z
from an iterable.>>> iterable = ['x', 'y', 'z'] >>> for v in iterable: ... cqm.add_variable('BINARY', v) 'x' 'y' 'z' >>> cqm.add_discrete(iterable, label='discrete-xyz') 'discrete-xyz'
Add a discrete constraint over variables
a, b, c
from a model.>>> a, b, c = dimod.Binaries(['a', 'b', 'c']) >>> cqm.add_discrete(sum([a, b, c]), label='discrete-abc') 'discrete-abc'
Add a discrete constraint over variables
d, e, f
from a comparison.>>> d, e, f = dimod.Binaries(['d', 'e', 'f']) >>> cqm.add_discrete(d + e + f == 1, label='discrete-def') 'discrete-def'