Samplers¶
A sampler accepts a binary quadratic model (BQM) and returns variable assignments. Samplers generally try to find minimizing values but can also sample from distributions defined by the BQM.
DWaveSampler¶
-
class
DWaveSampler
(failover=False, retry_interval=-1, order_by=None, **config)[source]¶ A class for using the D-Wave system as a sampler.
Uses parameters set in a configuration file, as environment variables, or explicitly as input arguments for selecting and communicating with a D-Wave system. For more information, see D-Wave Cloud Client.
Inherits from
dimod.Sampler
anddimod.Structured
.Parameters: - failover (bool, optional, default=False) – Switch to a new QPU in the rare event that the currently connected
system goes offline. Note that different QPUs may have different
hardware graphs and a failover will result in a regenerated
nodelist
,edgelist
,properties
andparameters
. - retry_interval (number, optional, default=-1) – The amount of time (in seconds) to wait to poll for a solver in the case that no solver is found. If retry_interval is negative then it will instead propogate the SolverNotFoundError to the user.
- order_by (callable/str/None) – Solver sorting key function or
StructuredSolver
attribute/item dot-separated path. Seeget_solvers()
for a more detailed description of the parameter. - config_file (str, optional) – Path to a configuration file that identifies a D-Wave system and provides connection information.
- profile (str, optional) – Profile to select from the configuration file.
- endpoint (str, optional) – D-Wave API endpoint URL.
- token (str, optional) – Authentication token for the D-Wave API to authenticate the client session.
- solver (dict/str, optional) – Solver (a D-Wave system on which to run submitted problems) to select given
as a set of required features. Supported features and values are described in
get_solvers()
. For backward compatibility, a solver name, formatted as a string, is accepted. - proxy (str, optional) – Proxy URL to be used for accessing the D-Wave API.
- **config – Keyword arguments passed directly to
from_config()
.
Examples
This example submits a two-variable Ising problem mapped directly to two adjacent qubits on a D-Wave system.
qubit_a
is the first qubit in the QPU’s indexed list of qubits andqubit_b
is one of the qubits coupled to it. Other required parameters for communication with the system, such as its URL and an autentication token, are implicitly set in a configuration file or as environment variables, as described in Configuring Access to D-Wave Solvers. Given sufficient reads (here 100), the quantum computer should return the best solution, \({1, -1}\) onqubit_a
andqubit_b
, respectively, as its first sample (samples are ordered from lowest energy).>>> from dwave.system import DWaveSampler ... >>> sampler = DWaveSampler(solver={'qpu': True}) ... >>> qubit_a = sampler.nodelist[0] >>> qubit_b = next(iter(sampler.adjacency[qubit_a])) >>> sampleset = sampler.sample_ising({qubit_a: -1, qubit_b: 1}, ... {}, ... num_reads=100) >>> sampleset.first.sample[qubit_a] == 1 and sampleset.first.sample[qubit_b] == -1 True
See Ocean Glossary for explanations of technical terms in descriptions of Ocean tools.
- failover (bool, optional, default=False) – Switch to a new QPU in the rare event that the currently connected
system goes offline. Note that different QPUs may have different
hardware graphs and a failover will result in a regenerated
Properties¶
For parameters and properties of D-Wave systems, see D-Wave System Documentation.
DWaveSampler.properties |
D-Wave solver properties as returned by a SAPI query. |
DWaveSampler.parameters |
D-Wave solver parameters in the form of a dict, where keys are keyword parameters accepted by a SAPI query and values are lists of properties in properties for each key. |
DWaveSampler.nodelist |
List of active qubits for the D-Wave solver. |
DWaveSampler.edgelist |
List of active couplers for the D-Wave solver. |
DWaveSampler.adjacency |
Adjacency structure formatted as a dict, where keys are the nodes of the structured sampler and values are sets of all adjacent nodes for each key node. |
DWaveSampler.structure |
Structure of the structured sampler formatted as a namedtuple , Structure(nodelist, edgelist, adjacency), where the 3-tuple values are the nodelist , edgelist and adjacency attributes. |
Methods¶
DWaveSampler.sample (bqm[, warnings]) |
Sample from the specified Ising model. |
DWaveSampler.sample_ising (h, *args, **kwargs) |
Sample from an Ising model using the implemented sample method. |
DWaveSampler.sample_qubo (Q, **parameters) |
Sample from a QUBO using the implemented sample method. |
DWaveSampler.validate_anneal_schedule (…) |
Raise an exception if the specified schedule is invalid for the sampler. |
DWaveSampler.to_networkx_graph () |
Converts DWaveSampler’s structure to a Chimera or Pegasus NetworkX graph. |
DWaveCliqueSampler¶
-
class
DWaveCliqueSampler
(**config)[source]¶ A sampler for solving clique problems on the D-Wave system.
This sampler wraps
find_clique_embedding()
to generate embeddings with even chain length. These embeddings work well for dense binary quadratic models. For sparse models, usingEmbeddingComposite
withDWaveSampler
is preferred.Parameters: **config – Keyword arguments, as accepted by DWaveSampler
Examples
This example creates a BQM based on a 6-node clique (complete graph), with random \(\pm 1\) values assigned to nodes, and submits it to a D-Wave system. Parameters for communication with the system, such as its URL and an autentication token, are implicitly set in a configuration file or as environment variables, as described in Configuring Access to D-Wave Solvers.
>>> from dwave.system import DWaveCliqueSampler >>> import dimod ... >>> bqm = dimod.generators.ran_r(1, 6) ... >>> sampler = DWaveCliqueSampler(solver={'qpu': True}) >>> sampler.largest_clique_size > 5 True >>> sampleset = sampler.sample(bqm, num_reads=100)
Properties¶
DWaveCliqueSampler.largest_clique_size |
The maximum number of variables that can be embedded. |
DWaveCliqueSampler.properties |
A dict containing any additional information about the sampler. |
DWaveCliqueSampler.parameters |
A dict where keys are the keyword parameters accepted by the sampler methods and values are lists of the properties relevent to each parameter. |
Methods¶
DWaveCliqueSampler.largest_clique () |
The clique embedding with the maximum number of source variables. |
DWaveCliqueSampler.sample (bqm[, chain_strength]) |
Sample from the specified binary quadratic model. |
DWaveCliqueSampler.sample_ising (h, J, …) |
Sample from an Ising model using the implemented sample method. |
DWaveCliqueSampler.sample_qubo (Q, **parameters) |
Sample from a QUBO using the implemented sample method. |
LeapHybridSampler¶
-
class
LeapHybridSampler
(solver=None, connection_close=True, **config)[source]¶ A class for using Leap’s cloud-based hybrid solvers.
Uses parameters set in a configuration file, as environment variables, or explicitly as input arguments for selecting and communicating with a hybrid solver. For more information, see D-Wave Cloud Client.
Inherits from
dimod.Sampler
.Parameters: - solver (dict/str, optional) – Solver (a hybrid solver on which to run submitted problems) to select
named as a string or given as a set of required features. Supported
features and values are described in
get_solvers()
. - connection_close (bool, optional) – Force HTTP(S) connection close after each request.
- config_file (str, optional) – Path to a configuration file that identifies a hybrid solver and provides connection information.
- profile (str, optional) – Profile to select from the configuration file.
- endpoint (str, optional) – D-Wave API endpoint URL.
- token (str, optional) – Authentication token for the D-Wave API to authenticate the client session.
- proxy (str, optional) – Proxy URL to be used for accessing the D-Wave API.
- **config – Keyword arguments passed directly to
from_config()
.
Examples
This example builds a random sparse graph and uses a hybrid solver to find a maximum independent set.
>>> import dimod >>> import networkx as nx >>> import dwave_networkx as dnx >>> import numpy as np >>> from dwave.system import LeapHybridSampler ... >>> # Create a maximum-independent set problem from a random graph >>> problem_node_count = 300 >>> G = nx.random_geometric_graph(problem_node_count, radius=0.0005*problem_node_count) >>> qubo = dnx.algorithms.independent_set.maximum_weighted_independent_set_qubo(G) >>> bqm = dimod.BQM.from_qubo(qubo) ... >>> # Find a good solution >>> sampler = LeapHybridSampler() # doctest: +SKIP >>> sampleset = sampler.sample(bqm) # doctest: +SKIP
- solver (dict/str, optional) – Solver (a hybrid solver on which to run submitted problems) to select
named as a string or given as a set of required features. Supported
features and values are described in
Properties¶
LeapHybridSampler.properties |
Solver properties as returned by a SAPI query. |
LeapHybridSampler.parameters |
Solver parameters in the form of a dict, where keys are keyword parameters accepted by a SAPI query and values are lists of properties in properties for each key. |
Methods¶
LeapHybridSampler.sample (bqm[, time_limit]) |
Sample from the specified binary quadratic model. |
LeapHybridSampler.sample_ising (h, J, …) |
Sample from an Ising model using the implemented sample method. |
LeapHybridSampler.sample_qubo (Q, **parameters) |
Sample from a QUBO using the implemented sample method. |