This repository contains the python implementation of Quantum Enhanced Markov Chain Monte Carlo. The code is based mainly on the algorithm reported by David Layden et al. in Quantum-enhanced Markov chain Monte Carlo. The code provides support for reproducing most of the results discussed in the original paper, and the adavantages of the Quantum Enhanced MCMC (quMCMC) over classical MCMC has been highlighted.
The package can be installed using pip
in the main directory of the package as,
>>> pip install .
## DEFINE MODEL
n_spins = 10
## construct problem Hamiltonian ##
shape_of_J=(n_spins,n_spins)
## defining J matrix (mutual 1-1 interaction)
J = np.random.uniform(low= -2, high= 2, size= shape_of_J )
J = 0.5 * (J + J.transpose() )
J = np.round( J - np.diag(np.diag(J)) , decimals= 3)
# defining h
h = np.round(0.5 * np.random.randn(n_spins), decimals=2)
# instantiate the model
model = IsingEnergyFunction(J, h, name= 'my_model')
=============================================
MODEL : my_model
=============================================
Non-zero Interactions (J) : 45 / 45
Non-zero Bias (h) : 9 / 10
---------------------------------------------
Average Interaction Strength <|J|> : 0.5966799999999999
Average Bias Strength <|h|>: 0.5010000000000001
alpha : 0.5606804251097042
---------------------------------------------
## set current beta
beta = 1.100209
## RUN EXACT SAMPLING
exact_sampled_model = Exact_Sampling(model, beta)
steps = 10000
## RUN CLSSICAL SAMPLING
cl_chain =classical_mcmc(
n_hops=steps,
model=model,
temperature=1/beta,
)
## RUN QUUANTUM SAMPLING
qamcmc_chain =quantum_enhanced_mcmc(
n_hops=steps,
model=model,
temperature=1/beta,
)
For a more detailed example check the tutorial.ipynb
- Quantum-enhanced Markov chain Monte Carlo by David Layden et al.
- Qulacs Simulator
- Qiskit Aer Simulator
The package is licensed under MIT License