qat.opt.NumberPartitioning
- class qat.opt.NumberPartitioning(array_of_numbers, **kwargs)
Specialization of the
Ising
class for Number Partitioning.This class allows for the encoding of a Number Partitioning problem for a given array of numbers. The method
produce_j_h_and_offset()
is automatically called. It computes the coupling matrix \(J\), magnetic field \(h\) and Ising energy offset corresponding to the Hamiltonian representation of the problem, as described in the reference. These are stored in the parent classIsing
and would be needed if one wishes to solve the problem through Simulated Annealing (SA), for instance - see the Number Partitioning notebook.import numpy as np from qat.opt import NumberPartitioning array_of_numbers_size = np.random.randint(low=1, high=10000, size=1)[0] array_of_numbers = np.random.randint(low=1, high=10000, size=array_of_numbers_size) number_partitioning_problem = NumberPartitioning(array_of_numbers) print("To anneal the problem, the solver would need " + str(array_of_numbers_size) + " spins.")
To anneal the problem, the solver would need 9572 spins.
- Parameters
numbers_array (1D numpy array) – an array with all the numbers we want to partition
- get_best_parameters()
This method returns a dictionary with the best found parameters (after benchmarking) for simulated quantum annealing (SQA), available in the QLM. However, the temperature parameters could also be used for simulated annealing (SA).
- Returns
6-key dictionary containing
n_monte_carlo_updates (int) - the number of Monte Carlo updates
n_trotters (int) - the number of “classical replicas” or “Trotter replicas”
gamma_max (double) - the starting magnetic field
gamma_min (double) - the final magnetic field
temp_max (double) - the starting temperature
temp_min (double) - the final temperature
- qat.opt.number_partitioning.produce_j_h_and_offset(array_of_numbers)
Returns the \(J\) coupling matrix of the problem, along with the magnetic field \(h\) and the Ising energy offset.
- Parameters
numbers_array (1D numpy array) – an array with all the numbers we want to partition