You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							78 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							78 lines
						
					
					
						
							2.6 KiB
						
					
					
				| from . import pomdp | |
| from .pomdp import * | |
| 
 | |
| def make_canonic(model): | |
|     """ | |
|     Make the POMDP canonic | |
|     :param model: | |
|     :return: | |
|     """ | |
| 
 | |
|     if model.supports_parameters: | |
|         return pomdp._make_canonic_Rf(model) | |
|     else: | |
|         return pomdp._make_canonic_Double(model) | |
| 
 | |
| def make_simple(model, keep_state_valuations=False): | |
|     """ | |
|     Make the POMDP simple (aka alternating), i.e., each state has at most two actions, and if there is nondeterminism, then there is no probabilistic branching, | |
|  | |
|     :param model: | |
|     :return: | |
|     """ | |
|     if model.supports_parameters: | |
|         return pomdp._make_simple_Rf(model, keep_state_valuations) | |
|     else: | |
|         return pomdp._make_simple_Double(model, keep_state_valuations) | |
| 
 | |
| def unfold_memory(model, memory, add_memory_labels=False, keep_state_valuations=False): | |
|     """ | |
|     Unfold the memory for an FSC into the POMDP | |
|  | |
|     :param model: A pomdp | |
|     :param memory: A memory structure | |
|     :return: A pomdp that contains states from the product of the original POMDP and the FSC Memory | |
|     """ | |
|     if model.supports_parameters: | |
|         return pomdp._unfold_memory_Rf(model, memory, add_memory_labels, keep_state_valuations) | |
|     else: | |
|         return pomdp._unfold_memory_Double(model, memory, add_memory_labels, keep_state_valuations) | |
| 
 | |
| def apply_unknown_fsc(model, mode): | |
|     if model.supports_parameters: | |
|         return pomdp._apply_unknown_fsc_Rf(model, mode) | |
|     else: | |
|         return pomdp._apply_unknown_fsc_Double(model, mode) | |
| 
 | |
| 
 | |
| def create_nondeterminstic_belief_tracker(model, reduction_timeout, track_timeout): | |
|     """ | |
|  | |
|     :param model: A POMDP | |
|     :param reduction_timeout: timeout in milliseconds for the reduction algorithm, 0 for no timeout. | |
|     :return: | |
|     """ | |
|     if model.is_exact: | |
|         opts = NondeterministicBeliefTrackerExactSparseOptions() | |
|         opts.reduction_timeout = reduction_timeout | |
|         opts.track_timeout = track_timeout | |
|         return pomdp.NondeterministicBeliefTrackerExactSparse(model, opts) | |
|     else: | |
|         opts = NondeterministicBeliefTrackerDoubleSparseOptions() | |
|         opts.reduction_timeout = reduction_timeout | |
|         opts.track_timeout = track_timeout | |
|         return pomdp.NondeterministicBeliefTrackerDoubleSparse(model, opts) | |
| 
 | |
| 
 | |
| def create_observation_trace_unfolder(model, risk_assessment, expr_manager): | |
|     """ | |
|  | |
|     :param model: | |
|     :param risk_assessment: | |
|     :param expr_manager: | |
|     :return: | |
|     """ | |
|     if model.is_exact: | |
|         return pomdp.ObservationTraceUnfolderExact(model, risk_assessment, expr_manager) | |
|     else: | |
|         return pomdp.ObservationTraceUnfolderDouble(model, risk_assessment, expr_manager) |