| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -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
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |