1#ifndef PROBFD_POLICIES_VECTOR_MULTI_POLICY_H
2#define PROBFD_POLICIES_VECTOR_MULTI_POLICY_H
4#include "probfd/multi_policy.h"
5#include "probfd/types.h"
7#include <unordered_map>
9namespace probfd::policies {
11template <
typename State,
typename Action>
12class VectorMultiPolicy :
public MultiPolicy<State, Action> {
13 StateSpace<State, Action>* state_space_;
14 std::vector<std::vector<PolicyDecision<Action>>> decisions_per_state_;
17 explicit VectorMultiPolicy(
18 StateSpace<State, Action>* state_space,
20 : state_space_(state_space)
21 , decisions_per_state_(
23 std::vector<PolicyDecision<Action>>{})
27 std::vector<PolicyDecision<Action>>
28 get_decisions(
const State& state)
const override
30 const auto state_id = state_space_->get_state_id(state);
31 return decisions_per_state_[state_id];
34 std::vector<PolicyDecision<Action>>& operator[](StateID state_id)
36 return decisions_per_state_[state_id];
39 const std::vector<PolicyDecision<Action>>&
40 operator[](StateID state_id)
const
42 return decisions_per_state_[state_id];