Stan  2.10.0
probability, sampling & optimization
init_adapt.hpp
Go to the documentation of this file.
1 #ifndef STAN_SERVICES_SAMPLE_INIT_ADAPT_HPP
2 #define STAN_SERVICES_SAMPLE_INIT_ADAPT_HPP
3 
6 #include <stan/math/prim/mat/fun/Eigen.hpp>
9 #include <ostream>
10 
11 namespace stan {
12  namespace services {
13  namespace sample {
14 
15  template<class Sampler>
16  bool init_adapt(Sampler* sampler,
17  const double delta,
18  const double gamma,
19  const double kappa,
20  const double t0,
21  const Eigen::VectorXd& cont_params,
24  const double epsilon = sampler->get_nominal_stepsize();
25 
26  sampler->get_stepsize_adaptation().set_mu(log(10 * epsilon));
27  sampler->get_stepsize_adaptation().set_delta(delta);
28  sampler->get_stepsize_adaptation().set_gamma(gamma);
29  sampler->get_stepsize_adaptation().set_kappa(kappa);
30  sampler->get_stepsize_adaptation().set_t0(t0);
31 
32  sampler->engage_adaptation();
33 
34  try {
35  sampler->z().q = cont_params;
36  sampler->init_stepsize(info_writer, error_writer);
37  } catch (const std::exception& e) {
38  error_writer("Exception initializing step size.");
39  error_writer(e.what());
40  return false;
41  }
42  return true;
43  }
44 
45  template<class Sampler>
47  categorical_argument* adapt,
48  const Eigen::VectorXd& cont_params,
51  double delta
52  = dynamic_cast<real_argument*>(adapt->arg("delta"))->value();
53  double gamma
54  = dynamic_cast<real_argument*>(adapt->arg("gamma"))->value();
55  double kappa
56  = dynamic_cast<real_argument*>(adapt->arg("kappa"))->value();
57  double t0
58  = dynamic_cast<real_argument*>(adapt->arg("t0"))->value();
59 
60  return init_adapt<Sampler>(dynamic_cast<Sampler*>(sampler),
61  delta, gamma, kappa, t0, cont_params,
62  info_writer, error_writer);
63  }
64 
65  }
66  }
67 }
68 
69 #endif
void sample(stan::mcmc::base_mcmc *sampler, int num_warmup, int num_samples, int num_thin, int refresh, bool save, stan::services::sample::mcmc_writer< Model, SampleRecorder, DiagnosticRecorder, MessageRecorder > &mcmc_writer, stan::mcmc::sample &init_s, Model &model, RNG &base_rng, const std::string &prefix, const std::string &suffix, std::ostream &o, StartTransitionCallback &callback, interface_callbacks::writer::base_writer &info_writer, interface_callbacks::writer::base_writer &error_writer)
Definition: sample.hpp:17
Probability, optimization and sampling library.
bool init_adapt(Sampler *sampler, const double delta, const double gamma, const double kappa, const double t0, const Eigen::VectorXd &cont_params, interface_callbacks::writer::base_writer &info_writer, interface_callbacks::writer::base_writer &error_writer)
Definition: init_adapt.hpp:16
argument * arg(const std::string &name)
base_writer is an abstract base class defining the interface for Stan writer callbacks.
Definition: base_writer.hpp:20

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