AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
vbiased_successor_sampler_impl.h
1#include "probfd/successor_samplers/vbiased_successor_sampler.h"
2
3#include "probfd/algorithms/state_properties.h"
4
5#include "downward/utils/rng.h"
6
8
9template <typename Action>
10VBiasedSuccessorSampler<Action>::VBiasedSuccessorSampler(int random_seed)
11 : rng_(std::make_shared<utils::RandomNumberGenerator>(random_seed))
12{
13}
14
15template <typename Action>
16VBiasedSuccessorSampler<Action>::VBiasedSuccessorSampler(
17 std::shared_ptr<utils::RandomNumberGenerator> rng)
18 : rng_(std::move(rng))
19{
20}
21
22template <typename Action>
23StateID VBiasedSuccessorSampler<Action>::sample(
24 StateID,
25 Action,
26 const Distribution<StateID>& successors,
27 algorithms::StateProperties& properties)
28{
29 biased_.clear();
30
31 value_t sum = 0;
32 for (const auto& [item, probability] : successors) {
33 const auto p = probability * properties.lookup_value(item);
34 if (p > 0_vt) {
35 sum += p;
36 biased_.add_probability(item, p);
37 }
38 }
39
40 if (biased_.empty()) {
41 return successors.sample(*rng_)->item;
42 }
43 biased_.normalize(1_vt / sum);
44 return biased_.sample(*rng_)->item;
45}
46
47} // namespace probfd::successor_samplers
This namespace contains implementations of transition successor samplers.
Definition arbitrary_sampler.h:7
double value_t
Typedef for the state value type.
Definition aliases.h:7
STL namespace.