| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -13,24 +13,21 @@ namespace tempest { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        template<typename ValueType, typename IndexType> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        storm::storage::PostScheduler<ValueType> PostSafetyShield<ValueType, IndexType>::construct() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            storm::storage::PostScheduler<ValueType> shield(this->rowGroupIndices.size() - 1, this->computeRowGroupSizes()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            STORM_LOG_DEBUG(this->rowGroupIndices.size()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            STORM_LOG_DEBUG(this->relevantStates); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            STORM_LOG_DEBUG(this->coalitionStates.get()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for(auto const& x : this->choiceValues) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                STORM_LOG_DEBUG(x << ","); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            auto choice_it = this->choiceValues.begin(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if(this->coalitionStates.is_initialized()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                this->relevantStates &= this->coalitionStates.get(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            STORM_LOG_DEBUG(this->relevantStates); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for(uint state = 0; state < this->rowGroupIndices.size() - 1; state++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if(this->relevantStates.get(state)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    uint rowGroupSize = this->rowGroupIndices[state + 1] - this->rowGroupIndices[state]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    auto maxProbabilityIndex = std::max_element(choice_it, choice_it + rowGroupSize) - choice_it; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    ValueType maxProbability = *(choice_it + maxProbabilityIndex); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if(!allowedValue<ValueType, IndexType>(maxProbability, maxProbability, this->shieldingExpression)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        STORM_LOG_WARN("No shielding action possible with absolute comparison for state with index " << state); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        shield.setChoice(0, storm::storage::Distribution<ValueType, IndexType>(), state); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        continue; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    for(uint choice = 0; choice < rowGroupSize; choice++, choice_it++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        STORM_LOG_DEBUG("processing " << state << " with rowGroupSize of " << rowGroupSize << " choice index " << choice << " prob: " << *choice_it << " > " << maxProbability); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        storm::storage::Distribution<ValueType, IndexType> actionDistribution; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        if(allowedValue<ValueType, IndexType>(maxProbability, *choice_it, this->shieldingExpression)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            actionDistribution.addProbability(choice, 1); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -38,7 +35,6 @@ namespace tempest { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            actionDistribution.addProbability(maxProbabilityIndex, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        actionDistribution.normalize(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        STORM_LOG_DEBUG("  dist: " << actionDistribution); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        shield.setChoice(choice, storm::storage::SchedulerChoice<ValueType>(actionDistribution), state); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                } else { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |