STAMINA/STORM 0.1
Infinite state-space truncator which generates a probability within a window
StaminaIterativeModelBuilder.h
1#ifndef STAMINA_BUILDER_ITERATIVEMODELBUILDER_H
2#define STAMINA_BUILDER_ITERATIVEMODELBUILDER_H
3
10#include "StaminaModelBuilder.h"
11
12namespace stamina {
13 namespace builder {
14 template<typename ValueType, typename RewardModelType = storm::models::sparse::StandardRewardModel<ValueType>, typename StateType = uint32_t>
15 class StaminaIterativeModelBuilder : public StaminaModelBuilder<ValueType, RewardModelType, StateType> {
16 public:
23 std::shared_ptr<storm::generator::PrismNextStateGenerator<ValueType, StateType>> const& generator
24 , storm::prism::Program const& modulesFile
25 , storm::generator::NextStateGeneratorOptions const & options
26 );
34 storm::prism::Program const& program
35 , storm::generator::NextStateGeneratorOptions const& generatorOptions = storm::generator::NextStateGeneratorOptions()
36 );
46 virtual void buildMatrices(
47 storm::storage::SparseMatrixBuilder<ValueType>& transitionMatrixBuilder
48 , std::vector<RewardModelBuilder<typename RewardModelType::ValueType>>& rewardModelBuilders
49 , StateAndChoiceInformationBuilder& choiceInformationBuilder
50 , boost::optional<storm::storage::BitVector>& markovianChoices
51 , boost::optional<storm::storage::sparse::StateValuationsBuilder>& stateValuationsBuilder
52 ) override;
60 StateType getOrAddStateIndex(CompressedState const& state) override;
66 storm::storage::sparse::ModelComponents<ValueType, RewardModelType> buildModelComponents() override;
67 protected:
68 /*
69 * Access to data members of parent class
70 * */
79 // Options for next state generators
81 // The model builder must have access to this to create a fresh next state generator each iteration
105 void connectAllTerminalStatesToAbsorbing(storm::storage::SparseMatrixBuilder<ValueType>& transitionMatrixBuilder);
106 // Dynamic programming improvement: we keep an ordered set of the states terminated
107 // during the previous iteration (in an order that prevents needing to use a remapping
108 // vector for state indecies.
109 std::deque<std::pair<ProbabilityState<StateType> *, CompressedState>> statesTerminatedLastIteration;
110 uint64_t numberOfExploredStates;
111 uint64_t numberOfExploredStatesSinceLastMessage;
112 };
113 // "Custom" deleter (which actually is not custom) to allow for polymorphic shared pointers
114 template<typename ValueType, typename RewardModelType = storm::models::sparse::StandardRewardModel<ValueType>, typename StateType = uint32_t>
115 void __delete_stamina_iterative_model_builder(StaminaIterativeModelBuilder<ValueType, RewardModelType, StateType> * t) { delete t; }
116 }
117}
118#endif // STAMINA_BUILDER_ITERATIVEMODELBUILDER_H
Definition: StaminaIterativeModelBuilder.h:15
virtual void buildMatrices(storm::storage::SparseMatrixBuilder< ValueType > &transitionMatrixBuilder, std::vector< RewardModelBuilder< typename RewardModelType::ValueType > > &rewardModelBuilders, StateAndChoiceInformationBuilder &choiceInformationBuilder, boost::optional< storm::storage::BitVector > &markovianChoices, boost::optional< storm::storage::sparse::StateValuationsBuilder > &stateValuationsBuilder) override
Definition: StaminaIterativeModelBuilder.cpp:40
void connectAllTerminalStatesToAbsorbing(storm::storage::SparseMatrixBuilder< ValueType > &transitionMatrixBuilder)
Definition: StaminaIterativeModelBuilder.cpp:467
StateType getOrAddStateIndex(CompressedState const &state) override
Definition: StaminaIterativeModelBuilder.cpp:269
StaminaIterativeModelBuilder(std::shared_ptr< storm::generator::PrismNextStateGenerator< ValueType, StateType > > const &generator, storm::prism::Program const &modulesFile, storm::generator::NextStateGeneratorOptions const &options)
Definition: StaminaIterativeModelBuilder.cpp:11
storm::storage::sparse::ModelComponents< ValueType, RewardModelType > buildModelComponents() override
Definition: StaminaIterativeModelBuilder.cpp:361
void flushStatesTerminated()
Definition: StaminaIterativeModelBuilder.cpp:456
Definition: StaminaModelBuilder.h:61
Definition: ExplicitTruncatedModelBuilder.cpp:40