dwavesystems / dimod

A shared API for QUBO/Ising samplers.
https://docs.ocean.dwavesys.com/en/stable/docs_dimod/
Apache License 2.0
123 stars 81 forks source link

Allow single-variable BQM/QMs to be treated as variable labels #996

Open arcondello opened 3 years ago

arcondello commented 3 years ago

A frequent source of confusion in 0.10 is the distinction between x and 'x' in

>>> x = Binary('x')

The former is a dimod.BinaryQuadraticModel object, the latter is a string label of a variable. This leads to confusing behavior like https://github.com/dwavesystems/dimod/issues/921.

Would likely require https://github.com/dwavesystems/dimod/issues/966 and https://github.com/dwavesystems/dimod/issues/923.

The biggest challenge will be hunting down all of the locations that take a variable label and updating them. Though updating dimod.Variables would be an obvious place to start.

A good first step would be to raise a better error in some of the most common places it happens.

arcondello commented 3 years ago

Another approach would be to make a Spin, Binary, Integer full subclasses that promote themselves to QM and BQM. I think that might also lead to lots of confusing behavior.