44 return samples.size();
47 virtual void add(T x) {
55 if(which < capacity) {
113 return samples.size();
119 if(std::isnan(x.posterior) or x.posterior == -
infinity)
122 weight_lse =
logplusexp(weight_lse, x.posterior);
127 samples.push_back(x);
130 if(
flip(exp(x.posterior - weight_lse))) {
void clear()
Definition: ReservoirSample.h:143
T myrandom(T max)
Definition: Random.h:176
double weight_lse
Definition: ReservoirSample.h:95
const std::vector< T > & values() const
Get a multiset of values (ignoring the reservoir weights)
Definition: ReservoirSample.h:142
virtual std::string serialize() const override
Definition: ReservoirSample.h:69
void set_reservoir_size(const size_t s) const
Definition: ReservoirSample.h:30
virtual void add(T x)
Definition: ReservoirSample.h:116
PosteriorWeightedReservoirSample(size_t s=100)
Definition: ReservoirSample.h:97
void operator<<(T x)
Definition: ReservoirSample.h:136
ReservoirSample(size_t n=100)
Definition: ReservoirSample.h:28
Definition: Serializable.h:4
virtual void add(T x)
Definition: ReservoirSample.h:47
unsigned long N
Definition: ReservoirSample.h:22
bool flip(float p=0.5)
Definition: Random.h:25
std::vector< T > samples
Definition: ReservoirSample.h:92
Definition: ReservoirSample.h:88
void operator<<(T x)
Definition: ReservoirSample.h:60
const std::vector< T > & values() const
Definition: ReservoirSample.h:63
constexpr double infinity
Definition: Numerics.h:20
T logplusexp(const T a, const T b)
Definition: Numerics.h:131
static PosteriorWeightedReservoirSample< T > deserialize(const std::string &)
Definition: ReservoirSample.h:146
virtual std::string serialize() const override
Definition: ReservoirSample.h:145
static ReservoirSample< T > deserialize(const std::string &)
Definition: ReservoirSample.h:71
size_t capacity
Definition: ReservoirSample.h:21
unsigned long N
Definition: ReservoirSample.h:94
void clear()
Definition: ReservoirSample.h:65
size_t capacity
Definition: ReservoirSample.h:93
Definition: ReservoirSample.h:16
size_t size() const
Definition: ReservoirSample.h:39
std::vector< T > samples
Definition: ReservoirSample.h:20
void set_reservoir_size(const size_t s) const
Definition: ReservoirSample.h:99
size_t size() const
Definition: ReservoirSample.h:108