Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
Pomdp.h
Go to the documentation of this file.
1#pragma once
2
4
6
7namespace storm {
8namespace models {
9namespace sparse {
10
14template<class ValueType, typename RewardModelType = StandardRewardModel<ValueType>>
15class Pomdp : public Mdp<ValueType, RewardModelType> {
16 public:
25 std::unordered_map<std::string, RewardModelType> const &rewardModels = std::unordered_map<std::string, RewardModelType>());
26
35 std::unordered_map<std::string, RewardModelType> &&rewardModels = std::unordered_map<std::string, RewardModelType>());
36
43
45
47
49
51
53
54 virtual void printModelInformationToStream(std::ostream &out) const override;
55
56 uint32_t getObservation(uint64_t state) const;
57
58 uint64_t getNrObservations() const;
59
63 uint64_t getMaxNrStatesWithSameObservation() const;
64
65 std::vector<uint32_t> const &getObservations() const;
66
76 void updateObservations(std::vector<uint32_t> &&newObservations, bool preservesCanonicity);
77
78 std::vector<uint64_t> getStatesWithObservation(uint32_t observation) const;
79
80 bool hasObservationValuations() const;
81
83
84 std::optional<storm::storage::sparse::StateValuations> const &getOptionalObservationValuations() const;
85
86 bool isCanonic() const;
87
88 void setIsCanonic(bool newValue = true);
89
90 virtual std::size_t hash() const override;
91
92 virtual bool isPartiallyObservable() const override;
93
94 protected:
100 virtual std::string additionalDotStateInfo(uint64_t state) const override;
101
102 // TODO: consider a bitvector based presentation (depending on our needs).
103 std::vector<uint32_t> observations;
105 bool canonicFlag = false;
106
107 std::optional<storm::storage::sparse::StateValuations> observationValuations;
108
110};
111} // namespace sparse
112} // namespace models
113} // namespace storm
This class represents a (discrete-time) Markov decision process.
Definition Mdp.h:14
This class represents a partially observable Markov decision process.
Definition Pomdp.h:15
Pomdp & operator=(Pomdp< ValueType, RewardModelType > const &other)=default
Pomdp(Pomdp< ValueType, RewardModelType > &&other)=default
virtual bool isPartiallyObservable() const override
Definition Pomdp.cpp:142
uint64_t getNrObservations() const
Definition Pomdp.cpp:68
storm::storage::sparse::StateValuations const & getObservationValuations() const
Definition Pomdp.cpp:122
virtual void printModelInformationToStream(std::ostream &out) const override
Prints information about the model to the specified stream.
Definition Pomdp.cpp:43
void updateObservations(std::vector< uint32_t > &&newObservations, bool preservesCanonicity)
Changes the observations to the given ones and updates redundant informations (like the number of obs...
Definition Pomdp.cpp:94
std::vector< uint64_t > getStatesWithObservation(uint32_t observation) const
Definition Pomdp.cpp:106
Pomdp & operator=(Pomdp< ValueType, RewardModelType > &&other)=default
std::optional< storm::storage::sparse::StateValuations > const & getOptionalObservationValuations() const
Definition Pomdp.cpp:127
virtual std::size_t hash() const override
Definition Pomdp.cpp:147
uint32_t getObservation(uint64_t state) const
Definition Pomdp.cpp:63
Pomdp(Pomdp< ValueType, RewardModelType > const &other)=default
std::optional< storm::storage::sparse::StateValuations > observationValuations
Definition Pomdp.h:107
uint64_t getMaxNrStatesWithSameObservation() const
Returns the number of hidden values, i.e.
Definition Pomdp.cpp:73
std::vector< uint32_t > observations
Definition Pomdp.h:103
void setIsCanonic(bool newValue=true)
Definition Pomdp.cpp:137
bool hasObservationValuations() const
Definition Pomdp.cpp:117
std::vector< uint32_t > const & getObservations() const
Definition Pomdp.cpp:89
virtual std::string additionalDotStateInfo(uint64_t state) const override
Return a string that is additonally added to the state information in the dot stream.
Definition Pomdp.cpp:101
This class manages the labeling of the state space with a number of (atomic) labels.
A class that holds a possibly non-square matrix in the compressed row storage format.
LabParser.cpp.
Definition cli.cpp:18