Stan  2.5.0
probability, sampling & optimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
adapt_dense_e_nuts.hpp
Go to the documentation of this file.
1 #ifndef STAN__MCMC__ADAPT__DENSE__E__NUTS__BETA
2 #define STAN__MCMC__ADAPT__DENSE__E__NUTS__BETA
3 
6 
7 namespace stan {
8 
9  namespace mcmc {
10 
11  // The No-U-Turn Sampler (NUTS) on a
12  // Euclidean manifold with dense metric
13  // and adaptive stepsize
14 
15  template <typename M, class BaseRNG>
16  class adapt_dense_e_nuts: public dense_e_nuts<M, BaseRNG>,
17  public stepsize_covar_adapter {
18 
19  public:
20 
21  adapt_dense_e_nuts(M &m, BaseRNG& rng,
22  std::ostream* o = &std::cout, std::ostream* e = 0):
23  dense_e_nuts<M, BaseRNG>(m, rng, o, e),
24  stepsize_covar_adapter(m.num_params_r())
25  {};
26 
28 
29  sample transition(sample& init_sample) {
30 
32 
33  if (this->adapt_flag_) {
34 
36 
37  bool update = this->covar_adaptation_.learn_covariance(this->z_.mInv, this->z_.q);
38 
39  if(update) {
40  this->init_stepsize();
41 
42  this->stepsize_adaptation_.set_mu(log(10 * this->nom_epsilon_));
44  }
45 
46  }
47 
48  return s;
49 
50  }
51 
55  }
56 
57  };
58 
59  } // mcmc
60 
61 } // stan
62 
63 
64 #endif
void complete_adaptation(double &epsilon)
double accept_stat() const
Definition: sample.hpp:46
void learn_stepsize(double &epsilon, double adapt_stat)
bool learn_covariance(Eigen::MatrixXd &covar, const Eigen::VectorXd &q)
virtual void disengage_adaptation()
double e()
Return the base of the natural logarithm.
Definition: constants.hpp:86
adapt_dense_e_nuts(M &m, BaseRNG &rng, std::ostream *o=&std::cout, std::ostream *e=0)
fvar< T > log(const fvar< T > &x)
Definition: log.hpp:15
sample transition(sample &init_sample)

     [ Stan Home Page ] © 2011–2014, Stan Development Team.