Stan  2.10.0
probability, sampling & optimization
windowed_adaptation.hpp
Go to the documentation of this file.
1 #ifndef STAN_MCMC_WINDOWED_ADAPTATION_HPP
2 #define STAN_MCMC_WINDOWED_ADAPTATION_HPP
3 
6 #include <ostream>
7 #include <string>
8 
9 namespace stan {
10  namespace mcmc {
11 
13  public:
14  explicit windowed_adaptation(std::string name)
15  : estimator_name_(name) {
16  num_warmup_ = 0;
20 
21  restart();
22  }
23 
24  void restart() {
28  }
29 
30  void set_window_params(unsigned int num_warmup,
31  unsigned int init_buffer,
32  unsigned int term_buffer,
33  unsigned int base_window,
35  if (num_warmup < 20) {
36  writer("WARNING: No " + estimator_name_ + " estimation is");
37  writer(" performed for num_warmup < 20");
38  writer();
39  return;
40  }
41 
42  if (init_buffer + base_window + term_buffer > num_warmup) {
43  writer("WARNING: The initial buffer, adaptation window, "
44  "and terminal buffer");
45  writer(" overflow the total number of warmup iterations.");
46 
47  num_warmup_ = num_warmup;
48  adapt_init_buffer_ = 0.15 * num_warmup;
49  adapt_term_buffer_ = 0.10 * num_warmup;
51  = num_warmup - (adapt_init_buffer_ + adapt_term_buffer_);
52 
53  writer(" Defaulting to a 15%/75%/10% partition,");
54 
55  std::stringstream msg;
56  msg << " init_buffer = " << adapt_init_buffer_;
57  writer(msg.str());
58 
59  msg.str("");
60  msg << " adapt_window = " << adapt_base_window_;
61  writer(msg.str());
62 
63  msg.str("");
64  msg << " term_buffer = " << adapt_term_buffer_;
65  writer(msg.str());
66 
67  writer();
68  return;
69  }
70 
71  num_warmup_ = num_warmup;
72  adapt_init_buffer_ = init_buffer;
73  adapt_term_buffer_ = term_buffer;
74  adapt_base_window_ = base_window;
75  restart();
76  }
77 
82  }
83 
87  }
88 
91  return;
92 
93  adapt_window_size_ *= 2;
95 
97 
98  // Bounday of the following window, not the window just computed
99  unsigned int next_window_boundary
101 
102  // If the following window overtakes the full adaptation window,
103  // then stretch the current window to the end of the full window
104  if (next_window_boundary >= num_warmup_ - adapt_term_buffer_) {
106  }
107  }
108 
109  protected:
110  std::string estimator_name_;
111 
112  unsigned int num_warmup_;
113  unsigned int adapt_init_buffer_;
114  unsigned int adapt_term_buffer_;
115  unsigned int adapt_base_window_;
116 
117  unsigned int adapt_window_counter_;
118  unsigned int adapt_next_window_;
119  unsigned int adapt_window_size_;
120  };
121 
122  } // mcmc
123 } // stan
124 #endif
Probability, optimization and sampling library.
base_writer is an abstract base class defining the interface for Stan writer callbacks.
Definition: base_writer.hpp:20
void set_window_params(unsigned int num_warmup, unsigned int init_buffer, unsigned int term_buffer, unsigned int base_window, interface_callbacks::writer::base_writer &writer)

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