1#include "probfd/successor_samplers/vbiased_successor_sampler.h"
3#include "probfd/algorithms/state_properties.h"
5#include "downward/utils/rng.h"
9template <
typename Action>
10VBiasedSuccessorSampler<Action>::VBiasedSuccessorSampler(
int random_seed)
11 : rng_(
std::make_shared<utils::RandomNumberGenerator>(random_seed))
15template <
typename Action>
16VBiasedSuccessorSampler<Action>::VBiasedSuccessorSampler(
17 std::shared_ptr<utils::RandomNumberGenerator> rng)
18 : rng_(
std::move(rng))
22template <
typename Action>
23StateID VBiasedSuccessorSampler<Action>::sample(
26 const Distribution<StateID>& successors,
27 algorithms::StateProperties& properties)
32 for (
const auto& [item, probability] : successors) {
33 const auto p = probability * properties.lookup_value(item);
36 biased_.add_probability(item, p);
40 if (biased_.empty()) {
41 return successors.sample(*rng_)->item;
43 biased_.normalize(1_vt / sum);
44 return biased_.sample(*rng_)->item;
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