Basic Workflow: Models and Sampling#

This section provides a high-level description of how you solve problems using hybrid solvers. (For solving problems directly on a QPU, see this section instead.)

The two main steps of solving problems using quantum computers are:

  1. Formulate[1] your problem as an objective function

    An objective function (cost function) is a mathematical expression of the problem to be optimized; for quantum computing, these are quadratic models and (for some hybrid solvers) nonlinear models that have lowest values (energy) for good solutions to the problems they represent.

  2. Find good solutions by sampling

    Samplers are processes that sample from low-energy states of objective functions. Find good solutions by submitting your model to one of a variety of D‑Wave’s quantum, classical, and hybrid quantum-classical samplers.

image

Fig. 1 Solution steps: (1) a problem known in “problem space” (a circuit of Boolean gates, a graph, a network, etc) is formulated as a model, mathematically or using Ocean functionality, and (2) the model is sampled for solutions.#

Objective Functions#

To express a problem for a D‑Wave solver in a form that enables solution by minimization, you need an objective function, a mathematical expression of the energy of a system. When the solver is a QPU, the energy is a function of binary variables representing its qubits[2]; for quantum-classical hybrid solvers, the objective function might be more abstract[3].

Energy of objective function.

Fig. 2 Energy of the objective function.#

For most problems, the lower the energy of the objective function, the better the solution. Sometimes any low-energy state is an acceptable solution to the original problem; for other problems, only optimal solutions are acceptable. The best solutions typically correspond to the global minimum energy in the solution space; see the figure above.

There are many ways of mapping between a problem—chains of amino acids forming 3D structures of folded proteins, traffic in the streets of Beijing, circuits of binary gates—and an objective function to be solved (by sampling) with a D‑Wave quantum computer, hybrid solver, or locally on your CPU. The Basic QPU Examples and Basic Hybrid Examples show some simple objective functions to help you begin.

For more detailed information on objective functions, how D‑Wave quantum computers minimize objective functions, see the What is Quantum Annealing? section; for techniques for reformulating problems as objective functions, see the Reformulating a Problem section.

For code examples that formulate models for various problems, see D-Wave’s examples repo and many example customer applications on the D-Wave website.

Simple Objective Example#

As an illustrative example, consider solving a simple equation, \(x+1=2\), not by the standard algebraic techniques but by formulating an objective that at its minimum value assigns a value to the variable, \(x\), that is also a good solution to the original equation.

Taking the square of the subtraction of one side from another, you can formulate the following objective function to minimize:

\[ \begin{align}\begin{aligned}\text{E}(x) &= [2-(x+1)]^2\\&= (1-x)^2\end{aligned}\end{align} \]

In this case minimization, \(\min_x{(1-x)^2}\), seeks the shortest distance between the sides of the original equation, which occurs at equality (with the square eliminating negative distance).

The Simple Sampling Example example below shows an equally simple solution by sampling.

Supported Models#

To express your problem as an objective function that you can submit to a D‑Wave hybrid sampler for solution, you typically use Ocean software’s nonlinear model.

Nonlinear models typically represent general optimization problems with an objective function and/or one or more constraints over integer and/or binary variables; the model supports constraints natively.

This model is especially suited for use with decision variables that represent a common logic, such as subsets of choices or permutations of ordering. For example, in a traveling salesperson problem, permutations of the variables representing cities can signify the order of the route being optimized, and, in a knapsack problem, the variables representing items can be divided into subsets of packed and not packed. The design principles and major features of this solver are described in the dwave-optimization philosophy page.

Other Models#

Ocean software also supports some quadratic models that can be submitted to hybrid solvers in the Leap service. These might currently be more suited to some problems.

  • Constrained quadratic models (CQM) are typically used for applications that optimize problems that might include binary-valued variables (both \(0/1\)-valued variables and \(-1/1\)-valued variables), integer-valued variables, and real variables (also known as continuous variables); the model supports constraints natively.

  • Binary quadratic models (BQM) are unconstrained and typically represent problems of decisions that could either be true (or yes) or false (no); for example, should an antenna transmit, or did a network node fail? The model uses \(0/1\)-valued variables and \(-1/1\)-valued variables; constraints are typically represented as penalty models.

  • Discrete quadratic models (DQM) are unconstrained and typically represent problems with several distinct options; for example, which shift should employee X work, or should the state on a map be colored red, blue, green, or yellow? The model uses variables that can represent a set of values such as {red, green, blue, yellow} or {3.2, 67}; constraints are typically represented as penalty models.

Samplers#

Samplers are processes that sample from low-energy states of objective functions. Having formulated an objective function that represents your problem (typically as a quadratic or nonlinear model), you sample it for solutions.

D‑Wave provides quantum, classical, and quantum-classical hybrid samplers that run either remotely (for example, in D‑Wave’s Leap service) or locally on your CPU.

  • QPU Solvers

    D‑Wave currently supports Advantage and Advantage2 quantum computers.

  • Quantum-Classical Hybrid Solvers

    Quantum-classical hybrid is the use of both classical and quantum resources to solve problems, exploiting the complementary strengths that each provides. For an overview of, and motivation for, hybrid computing, see: Medium Article on Hybrid Computing.

    D‑Wave provides two types of hybrid solvers: Leap service’s hybrid solvers, which are cloud-based hybrid compute resources, and hybrid solvers developed in Ocean software’s dwave-hybrid tool.

  • Classical Solvers

    You might use a classical solver while developing your code or on a small version of your problem to verify your code.

    For information on classical solvers, see the Classical Solvers section.

Simple Sampling Example#

As an illustrative example, consider solving by sampling the objective, \(\text{E}(x) = (1-x)^2\) found in the Simple Objective Example subsection above to represent equation, \(x+1=2\).

This example creates a simple sampler that generates 10 random values of the variable \(x\) and selects the one that produces the lowest value of the objective:

>>> import random
...
>>> x = [random.uniform(-10, 10) for i in range(10)]
>>> e = list(map(lambda x: (1-x)**2, x))
>>> best_found = x[e.index(min(e))]

One particular execution found this best solution:

>>> print('x_i = ' + ' , '.join(f'{x_i:.2f}' for x_i in x))
x_i = 7.87, 1.79, 9.61, 2.37, 0.68, -2.93, 3.96, 1.30, -3.85, -0.13
>>> print('e_i = ' + ', '.join(f'{e_i:.2f}' for e_i in e))
e_i = 47.23, 0.63, 74.19, 1.89, 0.10, 15.44, 8.77, 0.09, 23.50, 1.28
>>> print("Best solution found is {:.2f}".format(best_found))
Best solution found is 1.30

The figure below shows the value of the objective function for the random values of \(x\) chosen in the execution above. The minimum distance between the sides of the original equation, which occurs at equality, has the lowest value (energy) of \(\text{E}(x)\).

Simple random sampler: E(x) versus x.

Fig. 3 Values of the objective function, \(\text{E}(x) = (1-x)^2\), versus random values of \(x\) selected by a simple random sampler.#

Simple Workflow Example#

This example uses Ocean software tools to demonstrate the solution workflow described in this section on a simple problem of finding the minimum of a function of an integer variable, the polynomial \(y = i^2 - 4i\).

Plot of :math:`y = i^2 - 4i` with the x-axis from about -2 to +3 and the y-axis from -5 to +5, showing a parabola with its minimum at (i,y) of (+2,-4).

Fig. 4 Minimum point of a simple polynomial, \(y = i^2 - 4i\).#

The dwave-optimization package can formulate the problem as a nonlinear model as follows:

>>> from dwave.optimization import Model
...
>>> model = Model()
>>> i = model.integer(lower_bound=-5, upper_bound=5)
>>> y = i**2 - 4*i
>>> model.minimize(y)

Instantiate a hybrid nonlinear sampler and submit the problem for solution by a remote solver provided by the Leap quantum cloud service:

>>> from dwave.system import LeapHybridNLSampler
...
>>> with LeapHybridNLSampler() as sampler:
...     results = sampler.sample(
...         model,
...         label='SDK Examples - Polynomial')

Solutions are the assignment of values to the model’s decision variables, which are represented as states of the model. Print the best solution, which is typically the first returned state.

>>> with model.lock():
...     print(f"At i={i.state(0)}, lowest value of y is {model.objective.state(0)}")
At i=2.0, lowest value of y is -4.0

The best (lowest-energy) solution found has \(i=2\) as expected.