Expand description

Metropolis Hastings method

I recommend not using method in this module, but they may have niche usage. look at super::metropolis_hastings_sweep for a more common algorithm.


use lattice_qcd_rs::{
    simulation::state::{LatticeState, LatticeStateDefault},

let mut rng = rand::thread_rng();

let size = 1_000_f64;
let number_of_pts = 4;
let beta = 2_f64;
let mut simulation =
    LatticeStateDefault::<4>::new_determinist(size, beta, number_of_pts, &mut rng)?;

let spread_parameter = 1E-5_f64;
let mut mc = MetropolisHastingsDeltaDiagnostic::new(spread_parameter, rng)

let number_of_sims = 100;
for _ in 0..number_of_sims / 10 {
    for _ in 0..10 {
        simulation = simulation.monte_carlo_step(&mut mc)?;
    simulation.normalize_link_matrices(); // we renormalize all matrices back to SU(3);
let average = simulation


Metropolis Hastings algorithm. Very slow, use MetropolisHastingsDeltaDiagnostic instead when applicable.

Metropolis Hastings algorithm with diagnostics.

Metropolis Hastings algorithm with diagnostics. Very slow, use MetropolisHastingsDeltaDiagnostic instead.