Skip to content

Commit

Permalink
refactored init_adapt function to call a simpler init_adapt function …
Browse files Browse the repository at this point in the history
…that can be called through tests
  • Loading branch information
syclik committed Dec 13, 2013
1 parent 65ceb15 commit f7cbafd
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions src/stan/gm/command.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,34 +208,42 @@ namespace stan {
}

template<class Sampler>
bool init_adapt(stan::mcmc::base_mcmc* sampler, categorical_argument* adapt) {

double delta = dynamic_cast<real_argument*>(adapt->arg("delta"))->value();
double gamma = dynamic_cast<real_argument*>(adapt->arg("gamma"))->value();
double kappa = dynamic_cast<real_argument*>(adapt->arg("kappa"))->value();
double t0 = dynamic_cast<real_argument*>(adapt->arg("t0"))->value();

double epsilon = dynamic_cast<Sampler*>(sampler)->get_nominal_stepsize();
bool init_adapt(Sampler* sampler,
const double delta,
const double gamma,
const double kappa,
const double t0) {
const double epsilon = sampler->get_nominal_stepsize();

Sampler* s = dynamic_cast<Sampler*>(sampler);
sampler->get_stepsize_adaptation().set_mu(log(10 * epsilon));
sampler->get_stepsize_adaptation().set_delta(delta);
sampler->get_stepsize_adaptation().set_gamma(gamma);
sampler->get_stepsize_adaptation().set_kappa(kappa);
sampler->get_stepsize_adaptation().set_t0(t0);

s->get_stepsize_adaptation().set_mu(log(10 * epsilon));
s->get_stepsize_adaptation().set_delta(delta);
s->get_stepsize_adaptation().set_gamma(gamma);
s->get_stepsize_adaptation().set_kappa(kappa);
s->get_stepsize_adaptation().set_t0(t0);

s->engage_adaptation();
sampler->engage_adaptation();

try {
s->init_stepsize();
sampler->init_stepsize();
} catch (std::runtime_error e) {
std::cout << e.what() << std::endl;
return false;
}

return true;
}

template<class Sampler>
bool init_adapt(stan::mcmc::base_mcmc* sampler, categorical_argument* adapt) {

double delta = dynamic_cast<real_argument*>(adapt->arg("delta"))->value();
double gamma = dynamic_cast<real_argument*>(adapt->arg("gamma"))->value();
double kappa = dynamic_cast<real_argument*>(adapt->arg("kappa"))->value();
double t0 = dynamic_cast<real_argument*>(adapt->arg("t0"))->value();

Sampler* s = dynamic_cast<Sampler*>(sampler);

return init_adapt<Sampler>(s, delta, gamma, kappa, t0);
}

template<class Sampler>
Expand Down

0 comments on commit f7cbafd

Please sign in to comment.