Monte Carlo Integration Library 1.0
High-performance Monte Carlo methods for numerical integration and optimization
MHintegrator.hpp
Go to the documentation of this file.
1
8#ifndef MONTECARLO_DGL_MHINTEGRATOR_HPP
9#define MONTECARLO_DGL_MHINTEGRATOR_HPP
10
11#include "integrator.hpp"
12#include "../domains/integration_domain.hpp"
13#include "../proposals/proposal.hpp"
14#include "../mcmc/metropolisHastingsSampler.hpp"
15#include "../estimators/VolumeEstimatorMC.hpp"
16#include "../geometry.hpp"
17
18#include <cstddef>
19#include <cstdint>
20#include <functional>
21
22namespace mc::integrators {
23
42template <std::size_t dim>
44public:
46 using Func = std::function<double(const Point&)>;
47
53
65 double integrate(const Func& f,
66 int n_samples,
67 const mc::proposals::Proposal<dim>& proposal,
68 std::uint32_t seed) override;
69
82 void setConfig(std::size_t burn_in_,
83 std::size_t thinning_,
84 std::size_t n_samples_volume_,
85 double deviation_,
86 Func p_,
87 Point x0_);
88
89private:
91 bool configured = false;
92
94 std::size_t burn_in = 0;
96 std::size_t thinning = 1;
98 std::size_t n_samples_volume = 0;
100 double deviation = 1.0;
101
103 std::function<double(const Point&)> p;
106};
107
108} // namespace mc::integrators
109
110#include "MHintegrator.tpp"
111
112#endif // MONTECARLO_DGL_MHINTEGRATOR_HPP
Abstract base class for N-dimensional integration domains.
N-dimensional point representation.
Definition geometry.hpp:32
Abstract base class for Monte Carlo integration in N dimensions.
Metropolis-Hastings MCMC integrator for complex domains.
std::function< double(const Point &)> Func
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.
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.
Abstract proposal distribution interface.
Definition proposal.hpp:29
Abstract base class for numerical integration in N-dimensional spaces.