Module lattice_qcd_rs::simulation::monte_carlo::metropolis_hastings
source · 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.
Example
use lattice_qcd_rs::{
error::ImplementationError,
simulation::monte_carlo::MetropolisHastingsDeltaDiagnostic,
simulation::state::{LatticeState, LatticeStateDefault},
ComplexField,
};
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)
.ok_or(ImplementationError::OptionWithUnexpectedNone)?;
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
.average_trace_plaquette()
.ok_or(ImplementationError::OptionWithUnexpectedNone)?
.real();
Structs
- 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.