Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
WinningRegion.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4
8
9namespace storm {
10namespace expressions {
11class Expression;
12}
13namespace pomdp {
15 public:
16 WinningRegion(std::vector<uint64_t> const& observationSizes = {});
17
18 bool update(uint64_t observation, storm::storage::BitVector const& winning);
19 bool query(uint64_t observation, storm::storage::BitVector const& currently) const;
20 bool isWinning(uint64_t observation, uint64_t offset) const {
21 STORM_LOG_ASSERT(observation < observationSizes.size(), "Observation index out of range.");
22 STORM_LOG_ASSERT(offset < observationSizes[observation], "Offset out of range for observation.");
23 storm::storage::BitVector currently(observationSizes[observation]);
24 currently.set(offset);
25 return query(observation, currently);
26 }
27
28 std::vector<storm::storage::BitVector> const& getWinningSetsPerObservation(uint64_t observation) const;
29
30 void addTargetStates(uint64_t observation, storm::storage::BitVector const& offsets);
31 void setObservationIsWinning(uint64_t observation);
32
33 bool observationIsWinning(uint64_t observation) const;
34 storm::expressions::Expression extensionExpression(uint64_t observation, std::vector<storm::expressions::Expression>& varsForStates) const;
35
36 uint64_t getStorageSize() const;
37 storm::RationalNumber beliefSupportStates() const;
38 std::pair<storm::RationalNumber, storm::RationalNumber> computeNrWinningBeliefs() const;
39
40 uint64_t getNumberOfObservations() const;
41 bool empty() const;
42 void print() const;
43
44 void storeToFile(std::string const& path, std::string const& preamble = "", bool append = false) const;
45 static std::pair<WinningRegion, std::string> loadFromFile(std::string const& path);
46
47 private:
48 std::vector<std::vector<storm::storage::BitVector>> winningRegion;
49 std::vector<uint64_t> observationSizes;
50};
51} // namespace pomdp
52} // namespace storm
static std::pair< WinningRegion, std::string > loadFromFile(std::string const &path)
std::pair< storm::RationalNumber, storm::RationalNumber > computeNrWinningBeliefs() const
bool update(uint64_t observation, storm::storage::BitVector const &winning)
void addTargetStates(uint64_t observation, storm::storage::BitVector const &offsets)
WinningRegion(std::vector< uint64_t > const &observationSizes={})
std::vector< storm::storage::BitVector > const & getWinningSetsPerObservation(uint64_t observation) const
uint64_t getNumberOfObservations() const
How many different observations are there?
storm::RationalNumber beliefSupportStates() const
bool isWinning(uint64_t observation, uint64_t offset) const
storm::expressions::Expression extensionExpression(uint64_t observation, std::vector< storm::expressions::Expression > &varsForStates) const
bool query(uint64_t observation, storm::storage::BitVector const &currently) const
bool observationIsWinning(uint64_t observation) const
If we observe this observation, do we surely win?
void setObservationIsWinning(uint64_t observation)
void storeToFile(std::string const &path, std::string const &preamble="", bool append=false) const
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
void set(uint64_t index, bool value=true)
Sets the given truth value at the given index.
#define STORM_LOG_ASSERT(cond, message)
Definition macros.h:9