AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
random_tiebreaker_impl.h
1#include <utility>
2
3#include "downward/utils/rng.h"
4
5namespace probfd::policy_pickers {
6
7template <typename State, typename Action>
8RandomTiebreaker<State, Action>::RandomTiebreaker(
9 bool stable_policy,
10 int random_seed)
11 : RandomTiebreaker(
12 stable_policy,
13 std::make_shared<utils::RandomNumberGenerator>(random_seed))
14{
15}
16
17template <typename State, typename Action>
18RandomTiebreaker<State, Action>::RandomTiebreaker(
19 bool stable_policy,
20 std::shared_ptr<utils::RandomNumberGenerator> rng)
21 : RandomTiebreaker::StablePolicyPicker(stable_policy)
22 , rng_(std::move(rng))
23{
24}
25
26template <typename State, typename Action>
27int RandomTiebreaker<State, Action>::pick_index(
28 MDP<State, Action>&,
29 std::optional<Action>,
30 const std::vector<Transition<Action>>& greedy_transitions,
31 algorithms::StateProperties&)
32{
33 return rng_->random(greedy_transitions.size());
34}
35
36} // namespace probfd::policy_pickers
STL namespace.