| 
						
						
						
					 | 
				
				 | 
				
					@ -1,5 +1,6 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "storm-pomdp/generator/NondeterministicBeliefTracker.h"
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "storm/utility/ConstantsComparator.h"
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    namespace generator { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -87,7 +88,24 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        template<typename ValueType> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        bool operator==(SparseBeliefState<ValueType> const& lhs, SparseBeliefState<ValueType> const& rhs) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return lhs.hash() == rhs.hash() && lhs.belief == rhs.belief; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (lhs.hash() != rhs.hash()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                return false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (lhs.belief.size() != rhs.belief.size()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                return false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            storm::utility::ConstantsComparator<ValueType> cmp(0.00001, true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            auto lhsIt = lhs.belief.begin(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            auto rhsIt = rhs.belief.begin(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            while(lhsIt != lhs.belief.end()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if (lhsIt->first != rhsIt->first || !cmp.isEqual(lhsIt->second, rhsIt->second)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    return false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ++lhsIt; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ++rhsIt; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            //return std::equal(lhs.belief.begin(), lhs.belief.end(), rhs.belief.begin());
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        template<typename ValueType> | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -115,7 +133,7 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for(auto& entry : newBelief) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                assert(!storm::utility::isZero(sum)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                entry.second /= sum; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                boost::hash_combine(newHash, std::hash<ValueType>()(entry.second)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                //boost::hash_combine(newHash, std::hash<ValueType>()(entry.second));
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                boost::hash_combine(newHash, entry.first); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                risk += entry.second * manager->getRisk(entry.first); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |