Monte Carlo Integration Library 1.0
High-performance Monte Carlo methods for numerical integration and optimization
Public Types | Public Member Functions | List of all members
mc::integrators::MHMontecarloIntegrator< dim > Class Template Reference

Metropolis-Hastings MCMC integrator for complex domains. More...

#include <MHintegrator.hpp>

Inheritance diagram for mc::integrators::MHMontecarloIntegrator< dim >:
Collaboration diagram for mc::integrators::MHMontecarloIntegrator< dim >:

Public Types

using Point = mc::geom::Point< dim >
 
using Func = std::function< double(const Point &)>
 

Public Member Functions

 MHMontecarloIntegrator (const mc::domains::IntegrationDomain< dim > &d)
 Construct an MH-based integrator for a domain.
 
double integrate (const Func &f, int n_samples, const mc::proposals::Proposal< dim > &proposal, std::uint32_t seed) override
 Compute the integral using MH sampling combined with volume estimation.
 
void setConfig (std::size_t burn_in_, std::size_t thinning_, std::size_t n_samples_volume_, double deviation_, Func p_, Point x0_)
 Configure the MCMC sampler parameters.
 
- Public Member Functions inherited from mc::integrators::Integrator< dim >
 Integrator (const mc::domains::IntegrationDomain< dim > &d)
 Constructs an integrator for a specific domain.
 
virtual double integrate (const std::function< double(const mc::geom::Point< dim > &)> &f, int n_samples, const mc::proposals::Proposal< dim > &proposal, std::uint32_t seed)=0
 
virtual ~Integrator ()=default
 Virtual destructor for proper polymorphic cleanup.
 

Additional Inherited Members

- Protected Member Functions inherited from mc::integrators::Integrator< dim >
std::vector< mc::geom::Point< dim > > initializeRandomizer (int numbers)
 Initializes random samples uniformly distributed in the domain.
 
- Protected Attributes inherited from mc::integrators::Integrator< dim >
const mc::domains::IntegrationDomain< dim > & domain
 Reference to the integration domain.
 
std::vector< std::mt19937 > randomizer
 Per-thread random number generators.
 

Detailed Description

template<std::size_t dim>
class mc::integrators::MHMontecarloIntegrator< dim >

Metropolis-Hastings MCMC integrator for complex domains.

Template Parameters
dimDimensionality of the integration domain.

Two-stage integration approach:

  1. Volume Estimation: Hit-or-Miss MC to estimate V_Ω
  2. Mean Estimation: MH sampler with target density p(x) to estimate E[f]

Integral: ∫_Ω f(x) dx ≈ V̂_Ω · (1/M) ∑ᵢ f(xᵢ) where xᵢ ~ π(x) ∝ p(x)

This approach is especially effective for:

Note
Configuration must be set via setConfig() before integrate().

Definition at line 43 of file MHintegrator.hpp.

Member Typedef Documentation

◆ Func

template<std::size_t dim>
using mc::integrators::MHMontecarloIntegrator< dim >::Func = std::function<double(const Point&)>

Definition at line 46 of file MHintegrator.hpp.

◆ Point

template<std::size_t dim>
using mc::integrators::MHMontecarloIntegrator< dim >::Point = mc::geom::Point<dim>

Definition at line 45 of file MHintegrator.hpp.

Constructor & Destructor Documentation

◆ MHMontecarloIntegrator()

template<std::size_t dim>
mc::integrators::MHMontecarloIntegrator< dim >::MHMontecarloIntegrator ( const mc::domains::IntegrationDomain< dim > &  d)
explicit

Construct an MH-based integrator for a domain.

Parameters
dReference to the integration domain.

Member Function Documentation

◆ integrate()

template<std::size_t dim>
double mc::integrators::MHMontecarloIntegrator< dim >::integrate ( const Func f,
int  n_samples,
const mc::proposals::Proposal< dim > &  proposal,
std::uint32_t  seed 
)
override

Compute the integral using MH sampling combined with volume estimation.

Parameters
fIntegrand function: ℝⁿ → ℝ.
n_samplesNumber of post-burn-in, post-thinning samples to keep.
proposalUnused (MH uses internal sampler).
seedRandom seed for reproducibility.
Returns
Estimated integral ∫_Ω f(x) dx.
Exceptions
std::runtime_errorif setConfig() not called first.
std::invalid_argumentif n_samples ≤ 0.
std::runtime_errorif all samples yield non-finite f(x).

◆ setConfig()

template<std::size_t dim>
void mc::integrators::MHMontecarloIntegrator< dim >::setConfig ( std::size_t  burn_in_,
std::size_t  thinning_,
std::size_t  n_samples_volume_,
double  deviation_,
Func  p_,
Point  x0_ 
)

Configure the MCMC sampler parameters.

Parameters
burn_in_Number of initial samples to discard (warmup).
thinning_Keep every k-th sample (k=thinning_) for autocorrelation reduction.
n_samples_volume_Number of samples for volume estimation.
deviation_Proposal standard deviation (controls MH acceptance rate).
p_Target density: π(x) ∝ p(x); should be proportional to integrand.
x0_Initial point in the domain (burn-in starting point).
Exceptions
std::invalid_argumentif parameters are invalid (e.g., thinning=0, x0 ∉ Ω).
Note
Must be called before integrate().

The documentation for this class was generated from the following file: