|
|
@ -75,12 +75,16 @@ namespace storm { |
|
|
|
STORM_LOG_ASSERT(stateStorage.initialStateIndices.size() == 1, "Only one initial state assumed."); |
|
|
|
initialStateIndex = stateStorage.initialStateIndices[0]; |
|
|
|
STORM_LOG_TRACE("Initial state: " << initialStateIndex); |
|
|
|
|
|
|
|
// Initialize heuristic values for inital state
|
|
|
|
statesNotExplored.at(initialStateIndex)->setHeuristicValues(0, storm::utility::zero<ValueType>(), storm::utility::zero<ValueType>()); |
|
|
|
} else { |
|
|
|
initializeNextIteration(); |
|
|
|
} |
|
|
|
|
|
|
|
switch (heuristic) { |
|
|
|
case storm::builder::ApproximationHeuristic::NONE: |
|
|
|
// Do not change anything
|
|
|
|
break; |
|
|
|
case storm::builder::ApproximationHeuristic::DEPTH: |
|
|
|
approximationThreshold = iteration; |
|
|
|
break; |
|
|
@ -246,6 +250,7 @@ namespace storm { |
|
|
|
matrixBuilder.newRowGroup(); |
|
|
|
|
|
|
|
// Try to explore the next state
|
|
|
|
bool fixQueue = false; |
|
|
|
generator.load(currentState); |
|
|
|
|
|
|
|
if (currentState->isSkip(approximationThreshold, heuristic)) { |
|
|
@ -270,15 +275,21 @@ namespace storm { |
|
|
|
for (auto const& stateProbabilityPair : choice) { |
|
|
|
// Set transition to state id + offset. This helps in only remapping all previously skipped states.
|
|
|
|
matrixBuilder.addTransition(matrixBuilder.mappingOffset + stateProbabilityPair.first, stateProbabilityPair.second); |
|
|
|
// TODO Matthias: set heuristic values here
|
|
|
|
// Set heuristic values for reached states
|
|
|
|
auto iter = statesNotExplored.find(stateProbabilityPair.first); |
|
|
|
if (iter != statesNotExplored.end()) { |
|
|
|
iter->second->setHeuristicValues(currentState, stateProbabilityPair.second, choice.getTotalMass()); |
|
|
|
fixQueue = true; |
|
|
|
} |
|
|
|
} |
|
|
|
matrixBuilder.finishRow(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Update priority queue
|
|
|
|
// TODO Matthias: only when necessary
|
|
|
|
explorationQueue.fix(); |
|
|
|
if (fixQueue) { |
|
|
|
explorationQueue.fix(); |
|
|
|
} |
|
|
|
} // end exploration
|
|
|
|
} |
|
|
|
|
|
|
|