1#ifndef STORM_BUILDER_EXPLICITMODELBUILDER_H
2#define STORM_BUILDER_EXPLICITMODELBUILDER_H
4#include <boost/container/flat_map.hpp>
5#include <boost/functional/hash.hpp>
6#include <boost/variant.hpp>
36using namespace storm::utility::prism;
37using namespace storm::generator;
40template<
typename ValueType>
44template<
typename StateType>
48 : varInfo(varInfo), stateToId(stateToId) {
57 StateType
lookup(std::map<storm::expressions::Variable, storm::expressions::Expression>
const& stateDescription)
const;
61 uint64_t
size()
const;
68template<
typename ValueType,
typename RewardModelType = storm::models::sparse::StandardRewardModel<ValueType>,
typename StateType = u
int32_t>
120 std::shared_ptr<storm::models::sparse::Model<ValueType, RewardModelType>>
build();
167 std::shared_ptr<storm::generator::NextStateGenerator<ValueType, StateType>> generator;
176 std::deque<std::pair<CompressedState, StateType>> statesToExplore;
180 boost::optional<std::vector<uint_fast64_t>> stateRemapping;
ExplicitStateLookup< StateType > exportExplicitStateLookup() const
Export a wrapper that contains (a copy of) the internal information that maps states to ids.
ExplicitModelBuilder(std::shared_ptr< storm::generator::NextStateGenerator< ValueType, StateType > > const &generator, Options const &options=Options())
Creates an explicit model builder that uses the provided generator.
std::shared_ptr< storm::models::sparse::Model< ValueType, RewardModelType > > build()
Convert the program given at construction time to an abstract model.
StateType lookup(std::map< storm::expressions::Variable, storm::expressions::Expression > const &stateDescription) const
Lookup state.
uint64_t size() const
How many states have been stored?
ExplicitStateLookup(VariableInformation const &varInfo, storm::storage::BitVectorHashMap< StateType > const &stateToId)
A structure that is used to keep track of a reward model currently being built.
This class manages the labeling of the state space with a number of (atomic) labels.
This class represents a hash-map whose keys are bit vectors.
A class that can be used to build a sparse matrix by adding value by value.
storm::storage::BitVector CompressedState
storm::builder::BuilderOptions NextStateGeneratorOptions
constexpr bool IsIntervalType
Helper to check if a type is an interval.
Options()
Creates an object representing the default building options.
std::optional< StateType > explorationStateLimit
ExplorationOrder explorationOrder