Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
RewardBoundedBeliefSplitter.cpp
Go to the documentation of this file.
2
9
10namespace storm::pomdp::beliefs {
11
12template<typename RewardValueType, typename PomdpType, typename BeliefType>
14
15template<typename RewardValueType, typename PomdpType, typename BeliefType>
17 setRewardModels({rewardModelName});
18}
19
20template<typename RewardValueType, typename PomdpType, typename BeliefType>
22 STORM_LOG_THROW(!rewardModelNames.empty(), storm::exceptions::IllegalArgumentException, "At least one reward model must be selected.");
23 actionRewardVectors.assign(pomdp.getNumberOfChoices(), {});
24 for (auto const& rewardModelName : rewardModelNames) {
25 auto const& rewardModel = pomdp.getRewardModel(rewardModelName);
26 STORM_LOG_THROW(!rewardModel.hasTransitionRewards(), storm::exceptions::NotSupportedException,
27 "POMDPs with transition rewards are currently not supported.");
28 for (uint64_t state = 0; state < pomdp.getNumberOfStates(); ++state) {
29 for (auto const& choice : pomdp.getTransitionMatrix().getRowGroupIndices(state)) {
30 auto val = rewardModel.hasStateActionRewards() ? rewardModel.getStateActionReward(choice) : storm::utility::zero<PomdpValueType>();
31 if (rewardModel.hasStateRewards()) {
32 val += rewardModel.getStateReward(state);
33 }
34 actionRewardVectors[choice].push_back(storm::utility::convertNumber<RewardValueType>(val));
35 }
36 }
37 }
38}
39
40template<typename RewardValueType, typename PomdpType, typename BeliefType>
42 actionRewardVectors.clear();
43 rewardVectorToIndex.clear();
44}
45
46template<typename RewardValueType, typename PomdpType, typename BeliefType>
48 if (actionRewardVectors.empty()) {
49 return 0;
50 } else {
51 return actionRewardVectors.front().size();
52 }
53}
54
63
64} // namespace storm::pomdp::beliefs
Represents a belief of a Pomdp, i.e.
Definition Belief.h:21
Abstracts a given belief by splitting it into sub-beliefs based on the (state-action) reward of the P...
void setRewardModel(std::string const &rewardModelName="")
Selects one reward model; an empty name selects Storm's default reward model.
RewardBoundedBeliefSplitter(PomdpType const &pomdp)
Creates a splitter for pomdp.
void unsetRewardModels()
Clears the selected reward models and all generated reward-vector observation indices.
void setRewardModels(std::vector< std::string > const &rewardModelNames)
Selects a nonempty list of reward models used to form reward vectors.
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:39
ValueType zero()
Definition constants.cpp:26
TargetType convertNumber(SourceType const &number)