Simulated Annealing Sampler

Attention

dwave-neal is deprecated since dwave-ocean-sdk 6.1.0 in favor of dwave-samplers and will be removed in dwave-ocean-sdk 8.0.0.

To migrate, use

from dwave.samplers import SimulatedAnnealingSampler

rather than

from neal import SimulatedAnnealingSampler

Class

class SimulatedAnnealingSampler[source]

Simulated annealing sampler for binary quadratic models.

Simulated annealing can be used for heuristic optimization or approximate Boltzmann sampling. This implementation approaches the equilibrium distribution by performing updates at a sequence of decreasing temperatures, terminating at the target \(\beta\).1 Each spin is updated once in a fixed order per point per \(\beta\) according to a Metropolis-Hastings update. When \(\beta\) is large the target distribution concentrates, at equilibrium, over ground states of the model. Samples are guaranteed to match the equilibrium for long, smooth \(\beta\) schedules.

1

\(\beta\) represents the inverse temperature, \(1/(k_B T)\), of a Boltzmann distribution where \(T\) is the thermodynamic temperature in kelvin and \(k_B\) is Boltzmann’s constant.

For more information, see Kirkpatrick, S.; Gelatt Jr, C. D.; Vecchi, M. P. (1983). “Optimization by Simulated Annealing”. Science. 220 (4598): 671–680

Also aliased as Neal.

Examples

This example solves a simple Ising problem.

>>> from dwave.samplers import SimulatedAnnealingSampler
>>> sampler = SimulatedAnnealingSampler()
>>> h = {'a': 0.0, 'b': 0.0, 'c': 0.0}
>>> J = {('a', 'b'): 1.0, ('b', 'c'): 1.0, ('a', 'c'): 1.0}
>>> sampleset = sampler.sample_ising(h, J, num_reads=10)
>>> print(sampleset.first.energy)
-1.0

Sampler Properties

properties

A dict containing any additional information about the sampler.

parameters

Keyword arguments accepted by the sampling methods.

Methods

sample(bqm[, beta_range, num_reads, ...])

Sample from a binary quadratic model.

sample_ising(h, J, **parameters)

Sample from an Ising model using the implemented sample method.

sample_qubo(Q, **parameters)

Sample from a QUBO using the implemented sample method.