|  |  | @ -2,6 +2,9 @@ | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/models/sparse/StandardRewardModel.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/models/sparse/MarkovAutomaton.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/storage/Scheduler.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/storage/memorystructure/MemoryStructureBuilder.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/storage/memorystructure/SparseModelMemoryProduct.h"
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/adapters/RationalFunctionAdapter.h"
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -46,6 +49,23 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |              | 
			
		
	
		
			
				
					|  |  |  |             template<typename ValueType, typename RewardModelType> | 
			
		
	
		
			
				
					|  |  |  |             std::shared_ptr<storm::models::sparse::Model<ValueType, RewardModelType>> NondeterministicModel<ValueType, RewardModelType>::applyScheduler(storm::storage::Scheduler<ValueType> const& scheduler, bool dropUnreachableStates) { | 
			
		
	
		
			
				
					|  |  |  |                 boost::optional<storm::storage::SparseModelMemoryProduct<ValueType>> memoryProduct; | 
			
		
	
		
			
				
					|  |  |  |                 if (scheduler.isMemorylessScheduler()) { | 
			
		
	
		
			
				
					|  |  |  |                     storm::storage::MemoryStructure memStruct = storm::storage::MemoryStructureBuilder<ValueType, RewardModelType>::buildTrivialMemoryStructure(*this); | 
			
		
	
		
			
				
					|  |  |  |                     memoryProduct = memStruct.product(*this); | 
			
		
	
		
			
				
					|  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |                     boost::optional<storm::storage::MemoryStructure> const& memStruct = scheduler.getMemoryStructure(); | 
			
		
	
		
			
				
					|  |  |  |                     STORM_LOG_ASSERT(memStruct, "Memoryless scheduler without memory structure."); | 
			
		
	
		
			
				
					|  |  |  |                     memoryProduct = memStruct->product(*this); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 if (!dropUnreachableStates) { | 
			
		
	
		
			
				
					|  |  |  |                     memoryProduct->setBuildFullProduct(); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 return memoryProduct->build(scheduler); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |              | 
			
		
	
		
			
				
					|  |  |  |             template<typename ValueType, typename RewardModelType> | 
			
		
	
		
			
				
					|  |  |  |             void NondeterministicModel<ValueType, RewardModelType>::printModelInformationToStream(std::ostream& out) const { | 
			
		
	
		
			
				
					|  |  |  |                 this->printModelInformationHeaderToStream(out); | 
			
		
	
	
		
			
				
					|  |  | 
 |