1 #ifndef __STAN__MCMC__ADAPTIVE_HMC_H__
2 #define __STAN__MCMC__ADAPTIVE_HMC_H__
9 #include <boost/random/mersenne_twister.hpp>
10 #include <boost/random/normal_distribution.hpp>
11 #include <boost/random/uniform_01.hpp>
12 #include <boost/random/variate_generator.hpp>
40 template <
class BaseRNG = boost::mt19937>
80 double epsilon_pm = 0.0,
81 bool epsilon_adapt =
true,
84 BaseRNG rand_int = BaseRNG(std::time(0)),
85 const std::vector<double>* params_r = 0,
86 const std::vector<int>* params_i = 0)
126 for (
size_t i = 0; i < m.size(); ++i)
130 std::vector<double> g_new(this->
_g);
131 std::vector<double> x_new(this->
_x);
132 double logp_new = -1e100;
138 double range = high - low;
142 for (
unsigned int l = 0; l < _L; ++l)
148 double dH = H_new - H;
152 this->
_logp = logp_new;
157 if (adapt_stat != adapt_stat)
160 double adapt_g = adapt_stat - this->
_delta;
161 std::vector<double> gvec(1, -adapt_g);
162 std::vector<double> result;
166 std::vector<double> result;
169 double avg_eta = 1.0 / this->
n_steps();
188 names.push_back(
"stepsize__");