Abstractions

In addition to the QUMO abstraction, where the binary variables take the value $0$ or $1$, and the continuous variables are in the range $[-1, 1]$, there are a couple of more variants that may be useful for specific applications:

  • p-QUMO: This is a variant of QUMO where the binary variables take the value $0$ or $1$, and the continuous variables are in the range $[0, 1]$ (i.e., no negative values). This is useful for applications where the continuous variables express allocations (e.g., in portfolio optimization).

  • mixed-Ising: This is a variant of QUMO where the binary variables take the value $-1$ or $1$, and the continuous variables are in the range $[-1, 1]$. This is a natural extension of the Ising model.

These variants, alongside QUBO, are summarized in the following table:

Continuous: $[-1, 1]$Continuous: $[0, 1]$No continuous
Discrete: 0 or 1QUMOp-QUMOQUBO
Discrete: -1 or 1mixed-Ising(n.a.)Ising

Internally, by default the solver uses the mixed-Ising representation, and there is also support for native solving the QUMO representation. In the absence of continuous variables, the solver is an Ising solver (via the solve function), and a QUBO solver (via the solve_qumo function).

TODO: Reference the solve and solve_qumo functions.

Conversions between the different representations are supported via convert_to_qumo (of a mixed Ising problem) convert_to_mixed_ising (of a QUMO problem) convert_positive_qumo_to_mixed_ising (of a p-QUMO problem). Hence, to convert p-QUMO to QUMO, first convert to mixed-Ising, and then to QUMO.

TODO: Provide direct conversion from p-QUMO to QUMO.

Typically, it is better to express the problem in the more natural form, and then use the existing methods to convert to QUMO or mixed-Ising; this avoid conversion bugs that are often difficult to track down.