STAMINA/STORM 0.1
Infinite state-space truncator which generates a probability within a window
StaminaReExploringModelBuilder.h
1#ifndef STAMINA_BUILDER_REEXPLORINGMODELBUILDER_H
2#define STAMINA_BUILDER_REEXPLORINGMODELBUILDER_H
3
12#include "StaminaModelBuilder.h"
13
14namespace stamina {
15 namespace builder {
16 template<typename ValueType, typename RewardModelType = storm::models::sparse::StandardRewardModel<ValueType>, typename StateType = uint32_t>
17 class StaminaReExploringModelBuilder : public StaminaModelBuilder<ValueType, RewardModelType, StateType> {
18 public:
19// typedef typename StaminaModelBuilder<ValueType, RewardModelType, StateType>::ProbabilityState ProbabilityState;
26 std::shared_ptr<storm::generator::PrismNextStateGenerator<ValueType, StateType>> const& generator
27 , storm::prism::Program const& modulesFile
28 , storm::generator::NextStateGeneratorOptions const & options
29 );
37 storm::prism::Program const& program
38 , storm::generator::NextStateGeneratorOptions const& generatorOptions = storm::generator::NextStateGeneratorOptions()
39 );
49 void buildMatrices(
50 storm::storage::SparseMatrixBuilder<ValueType>& transitionMatrixBuilder
51 , std::vector<RewardModelBuilder<typename RewardModelType::ValueType>>& rewardModelBuilders
52 , StateAndChoiceInformationBuilder& choiceInformationBuilder
53 , boost::optional<storm::storage::BitVector>& markovianChoices
54 , boost::optional<storm::storage::sparse::StateValuationsBuilder>& stateValuationsBuilder
55 ) override;
63 StateType getOrAddStateIndex(CompressedState const& state) override;
69 storm::storage::sparse::ModelComponents<ValueType, RewardModelType> buildModelComponents() override;
70 private:
71 /*
72 * Access to data members of parent class
73 * */
82 // Options for next state generators
84 // The model builder must have access to this to create a fresh next state generator each iteration
104 void connectAllTerminalStatesToAbsorbing(storm::storage::SparseMatrixBuilder<ValueType>& transitionMatrixBuilder);
105 // Dynamic programming improvement: we keep an ordered set of the states terminated
106 // during the previous iteration (in an order that prevents needing to use a remapping
107 // vector for state indecies.
108 std::deque<std::pair<ProbabilityState<StateType> *, CompressedState>> statesTerminatedLastIteration;
109 uint64_t numberOfExploredStates;
110 uint64_t numberOfExploredStatesSinceLastMessage;
111 };
112 // "Custom" deleter (which actually is not custom) to allow for polymorphic shared pointers
113 template<typename ValueType, typename RewardModelType = storm::models::sparse::StandardRewardModel<ValueType>, typename StateType = uint32_t>
114 void __delete_stamina_iterative_model_builder(StaminaReExploringModelBuilder<ValueType, RewardModelType, StateType> * t) { delete t; }
115 }
116}
117#endif // STAMINA_BUILDER_REEXPLORINGMODELBUILDER_H
Definition: StaminaModelBuilder.h:61
Definition: StaminaReExploringModelBuilder.h:17
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: StaminaReExploringModelBuilder.cpp:40
StateType getOrAddStateIndex(CompressedState const &state) override
Definition: StaminaReExploringModelBuilder.cpp:267
StaminaReExploringModelBuilder(std::shared_ptr< storm::generator::PrismNextStateGenerator< ValueType, StateType > > const &generator, storm::prism::Program const &modulesFile, storm::generator::NextStateGeneratorOptions const &options)
Definition: StaminaReExploringModelBuilder.cpp:11
storm::storage::sparse::ModelComponents< ValueType, RewardModelType > buildModelComponents() override
Definition: StaminaReExploringModelBuilder.cpp:359
Definition: ExplicitTruncatedModelBuilder.cpp:40