11template<
typename StateType,
typename ValueType>
14 : unexploredMarker(unexploredMarker),
15 optimizationDirection(direction),
16 localPrecomputation(false),
17 numberOfExplorationStepsUntilPrecomputation(100000),
18 numberOfSampledPathsUntilPrecomputation(),
23 numberOfSampledPathsUntilPrecomputation = env.getSampledPathsUntilPrecomputation().value();
28template<
typename StateType,
typename ValueType>
30 StateType
const& state)
const {
31 return unexploredStates.find(state);
34template<
typename StateType,
typename ValueType>
36 return unexploredStates.end();
39template<
typename StateType,
typename ValueType>
41 unexploredStates.erase(it);
44template<
typename StateType,
typename ValueType>
46 stateToRowGroupMapping.push_back(unexploredMarker);
47 unexploredStates[stateId] = compressedState;
50template<
typename StateType,
typename ValueType>
52 stateToRowGroupMapping[state] = rowGroup;
55template<
typename StateType,
typename ValueType>
57 stateToRowGroupMapping[state] = rowGroupIndices.
size() - 1;
58 return stateToRowGroupMapping[state];
61template<
typename StateType,
typename ValueType>
63 return rowGroupIndices.size() - 1;
66template<
typename StateType,
typename ValueType>
68 rowGroupIndices.push_back(action);
71template<
typename StateType,
typename ValueType>
76template<
typename StateType,
typename ValueType>
78 rowGroupIndices.push_back(matrix.size());
81template<
typename StateType,
typename ValueType>
83 matrix.emplace_back(std::move(matrix[action]));
86template<
typename StateType,
typename ValueType>
91template<
typename StateType,
typename ValueType>
93 return unexploredStates.size();
96template<
typename StateType,
typename ValueType>
98 return stateToRowGroupMapping.size();
101template<
typename StateType,
typename ValueType>
103 return stateToRowGroupMapping[state];
106template<
typename StateType,
typename ValueType>
108 return unexploredMarker;
111template<
typename StateType,
typename ValueType>
113 return stateToRowGroupMapping[state] == unexploredMarker;
116template<
typename StateType,
typename ValueType>
118 return terminalStates.find(state) != terminalStates.end();
121template<
typename StateType,
typename ValueType>
123 StateType
const& group)
const {
124 return rowGroupIndices[group];
127template<
typename StateType,
typename ValueType>
129 return rowGroupIndices[group + 1] - rowGroupIndices[group];
132template<
typename StateType,
typename ValueType>
137template<
typename StateType,
typename ValueType>
139 terminalStates.insert(state);
142template<
typename StateType,
typename ValueType>
147template<
typename StateType,
typename ValueType>
153template<
typename StateType,
typename ValueType>
155 matrix.resize(matrix.size() + count);
158template<
typename StateType,
typename ValueType>
160 return optimizationDirection == storm::OptimizationDirection::Maximize;
163template<
typename StateType,
typename ValueType>
168template<
typename StateType,
typename ValueType>
170 std::size_t& numberExplorationStepsSinceLastPrecomputation)
const {
171 bool result = numberExplorationStepsSinceLastPrecomputation > numberOfExplorationStepsUntilPrecomputation;
173 numberExplorationStepsSinceLastPrecomputation = 0;
178template<
typename StateType,
typename ValueType>
180 if (!numberOfSampledPathsUntilPrecomputation) {
183 bool result = numberOfSampledPathsSinceLastPrecomputation > numberOfSampledPathsUntilPrecomputation.get();
185 numberOfSampledPathsSinceLastPrecomputation = 0;
191template<
typename StateType,
typename ValueType>
193 return localPrecomputation;
196template<
typename StateType,
typename ValueType>
201template<
typename StateType,
typename ValueType>
203 return nextStateHeuristic;
206template<
typename StateType,
typename ValueType>
211template<
typename StateType,
typename ValueType>
216template<
typename StateType,
typename ValueType>
221template<
typename StateType,
typename ValueType>
223 return optimizationDirection;
226template<
typename StateType,
typename ValueType>
228 optimizationDirection = direction;
storm::modelchecker::exploration_detail::NextStateHeuristic getNextStateHeuristic() const
storm::modelchecker::exploration_detail::PrecomputationType getPrecomputationType() const
std::optional< uint64_t > const & getSampledPathsUntilPrecomputation() const
uint64_t getStepsUntilPrecomputation() const
size_t size() const
Retrieves the number of bits this bit vector can store.
storm::storage::BitVector CompressedState
@ DifferenceProbabilitySum
solver::OptimizationDirection OptimizationDirection