7template<
typename ValueType>
9 : pomdp(pomdp), currentBeliefSupport(pomdp.getInitialStates()) {}
11template<
typename ValueType>
13 return currentBeliefSupport;
16template<
typename ValueType>
19 for (uint64_t oldState : currentBeliefSupport) {
20 uint64_t row = pomdp.getTransitionMatrix().getRowGroupIndices()[oldState] + action;
21 for (
auto const& successor : pomdp.getTransitionMatrix().getRow(row)) {
23 if (pomdp.getObservation(successor.getColumn()) == observation) {
24 newBeliefSupport.
set(successor.getColumn(),
true);
28 currentBeliefSupport = newBeliefSupport;
31template<
typename ValueType>
33 currentBeliefSupport = pomdp.getInitialStates();
BeliefSupportTracker(storm::models::sparse::Pomdp< ValueType > const &pomdp)
Tracks the current belief support.
storm::storage::BitVector const & getCurrentBeliefSupport() const
The current belief support according to the tracker.
void track(uint64_t action, uint64_t observation)
Update current belief support state.
void reset()
Reset to initial state.
This class represents a partially observable Markov decision process.
A bit vector that is internally represented as a vector of 64-bit values.
void set(uint64_t index, bool value=true)
Sets the given truth value at the given index.
#define STORM_LOG_ASSERT(cond, message)
bool isZero(ValueType const &a)