Hamiltonian Monte Carlo

montecarlo Class Reference

#include <montecarlo.hpp>

Collaboration diagram for montecarlo:

Public Member Functions

 montecarlo (prior &in_prior, data &in_data, forwardModel in_model, int in_nt, double in_dt, int in_iterations, bool useGeneralisedMomentumPropose, bool useGeneralisedMomentumKinetic, bool normalizeMomentum, bool evaluateHamiltonianBeforeLeap)
 
 ~montecarlo ()
 
void sample (bool hamilton)
 
std::vector< double > precomp_misfitGrad (std::vector< double > parameters)
 

Private Member Functions

void propose_metropolis ()
 
void propose_hamilton (int &uturns)
 
void leap_frog (int &uturns, bool writeTrajectory)
 
double chi ()
 
double energy ()
 
void write_sample (std::ofstream &outfile, double misfit)
 
double precomp_misfit ()
 
std::vector< double > precomp_misfitGrad ()
 
double kineticEnergy ()
 

Private Attributes

prior _prior
 
data _data
 
forwardModel _model
 
posterior _posterior
 
int _nt
 
double _dt
 
int _iterations
 
bool _useGeneralisedMomentumKinetic
 
bool _useGeneralisedMomentumPropose
 
bool _normalizeMomentum
 
bool _evaluateHamiltonianBeforeLeap
 
std::vector< double > _currentModel
 
std::vector< double > _proposedModel
 
std::vector< double > _currentMomentum
 
std::vector< double > _proposedMomentum
 
std::vector< std::vector< double > > _massMatrix
 
std::vector< std::vector< double > > _CholeskyLowerMassMatrix
 
std::vector< std::vector< double > > _inverseMassMatrix
 
std::vector< std::vector< double > > _inverseMassMatrixDiagonal
 
std::vector< std::vector< double > > _A
 
std::vector< double > _bT
 
double _c
 

Detailed Description

Definition at line 47 of file montecarlo.hpp.

Constructor & Destructor Documentation

◆ montecarlo()

montecarlo::montecarlo ( prior in_prior,
data in_data,
forwardModel  in_model,
int  in_nt,
double  in_dt,
int  in_iterations,
bool  useGeneralisedMomentumPropose,
bool  useGeneralisedMomentumKinetic,
bool  normalizeMomentum,
bool  evaluateHamiltonianBeforeLeap 
)

Definition at line 17 of file montecarlo.cpp.

◆ ~montecarlo()

montecarlo::~montecarlo ( )
default

Member Function Documentation

◆ chi()

double montecarlo::chi ( )
private

Definition at line 98 of file montecarlo.cpp.

◆ energy()

double montecarlo::energy ( )
private

Definition at line 103 of file montecarlo.cpp.

◆ kineticEnergy()

double montecarlo::kineticEnergy ( )
private

Definition at line 87 of file montecarlo.cpp.

◆ leap_frog()

void montecarlo::leap_frog ( int &  uturns,
bool  writeTrajectory 
)
private

Definition at line 161 of file montecarlo.cpp.

◆ precomp_misfit()

double montecarlo::precomp_misfit ( )
private

Definition at line 83 of file montecarlo.cpp.

◆ precomp_misfitGrad() [1/2]

std::vector< double > montecarlo::precomp_misfitGrad ( std::vector< double >  parameters)

Definition at line 213 of file montecarlo.cpp.

◆ precomp_misfitGrad() [2/2]

std::vector< double > montecarlo::precomp_misfitGrad ( )
private

Definition at line 93 of file montecarlo.cpp.

◆ propose_hamilton()

void montecarlo::propose_hamilton ( int &  uturns)
private

Definition at line 74 of file montecarlo.cpp.

◆ propose_metropolis()

void montecarlo::propose_metropolis ( )
private

Definition at line 69 of file montecarlo.cpp.

◆ sample()

void montecarlo::sample ( bool  hamilton)

Definition at line 109 of file montecarlo.cpp.

◆ write_sample()

void montecarlo::write_sample ( std::ofstream &  outfile,
double  misfit 
)
private

Definition at line 204 of file montecarlo.cpp.

Member Data Documentation

◆ _A

std::vector<std::vector<double> > montecarlo::_A
private

Definition at line 89 of file montecarlo.hpp.

◆ _bT

std::vector<double> montecarlo::_bT
private

Definition at line 90 of file montecarlo.hpp.

◆ _c

double montecarlo::_c
private

Definition at line 91 of file montecarlo.hpp.

◆ _CholeskyLowerMassMatrix

std::vector<std::vector<double> > montecarlo::_CholeskyLowerMassMatrix
private

Definition at line 84 of file montecarlo.hpp.

◆ _currentModel

std::vector<double> montecarlo::_currentModel
private

Definition at line 78 of file montecarlo.hpp.

◆ _currentMomentum

std::vector<double> montecarlo::_currentMomentum
private

Definition at line 80 of file montecarlo.hpp.

◆ _data

data montecarlo::_data
private

Definition at line 67 of file montecarlo.hpp.

◆ _dt

double montecarlo::_dt
private

Definition at line 71 of file montecarlo.hpp.

◆ _evaluateHamiltonianBeforeLeap

bool montecarlo::_evaluateHamiltonianBeforeLeap
private

Definition at line 76 of file montecarlo.hpp.

◆ _inverseMassMatrix

std::vector<std::vector<double> > montecarlo::_inverseMassMatrix
private

Definition at line 85 of file montecarlo.hpp.

◆ _inverseMassMatrixDiagonal

std::vector<std::vector<double> > montecarlo::_inverseMassMatrixDiagonal
private

Definition at line 86 of file montecarlo.hpp.

◆ _iterations

int montecarlo::_iterations
private

Definition at line 72 of file montecarlo.hpp.

◆ _massMatrix

std::vector<std::vector<double> > montecarlo::_massMatrix
private

Definition at line 83 of file montecarlo.hpp.

◆ _model

forwardModel montecarlo::_model
private

Definition at line 68 of file montecarlo.hpp.

◆ _normalizeMomentum

bool montecarlo::_normalizeMomentum
private

Definition at line 75 of file montecarlo.hpp.

◆ _nt

int montecarlo::_nt
private

Definition at line 70 of file montecarlo.hpp.

◆ _posterior

posterior montecarlo::_posterior
private

Definition at line 69 of file montecarlo.hpp.

◆ _prior

prior montecarlo::_prior
private

Definition at line 66 of file montecarlo.hpp.

◆ _proposedModel

std::vector<double> montecarlo::_proposedModel
private

Definition at line 79 of file montecarlo.hpp.

◆ _proposedMomentum

std::vector<double> montecarlo::_proposedMomentum
private

Definition at line 81 of file montecarlo.hpp.

◆ _useGeneralisedMomentumKinetic

bool montecarlo::_useGeneralisedMomentumKinetic
private

Definition at line 73 of file montecarlo.hpp.

◆ _useGeneralisedMomentumPropose

bool montecarlo::_useGeneralisedMomentumPropose
private

Definition at line 74 of file montecarlo.hpp.


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