|  | @ -8,6 +8,7 @@ | 
		
	
		
			
				|  |  | #include "storm/modelchecker/results/ExplicitQuantitativeCheckResult.h"
 |  |  | #include "storm/modelchecker/results/ExplicitQuantitativeCheckResult.h"
 | 
		
	
		
			
				|  |  | #include "storm/utility/constants.h"
 |  |  | #include "storm/utility/constants.h"
 | 
		
	
		
			
				|  |  | #include "storm/utility/vector.h"
 |  |  | #include "storm/utility/vector.h"
 | 
		
	
		
			
				|  |  |  |  |  | #include "storm/utility/SignalHandler.h"
 | 
		
	
		
			
				|  |  | #include "storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.h"
 |  |  | #include "storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.h"
 | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  | #include "storm/exceptions/InvalidOperationException.h"
 |  |  | #include "storm/exceptions/InvalidOperationException.h"
 | 
		
	
	
		
			
				|  | @ -97,7 +98,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     // We don't care for the optimizing objective at this point
 |  |  |                     // We don't care for the optimizing objective at this point
 | 
		
	
		
			
				|  |  |                     this->diracWeightVectorsToBeChecked.set(indexOfOptimizingObjective, false); |  |  |                     this->diracWeightVectorsToBeChecked.set(indexOfOptimizingObjective, false); | 
		
	
		
			
				|  |  |                  |  |  |                  | 
		
	
		
			
				|  |  |                     while(!this->maxStepsPerformed(env)){ |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     while(!this->maxStepsPerformed(env) && !storm::utility::resources::isTerminate()){ | 
		
	
		
			
				|  |  |                         WeightVector separatingVector = this->findSeparatingVector(thresholds); |  |  |                         WeightVector separatingVector = this->findSeparatingVector(thresholds); | 
		
	
		
			
				|  |  |                         this->updateWeightedPrecisionInAchievabilityPhase(separatingVector); |  |  |                         this->updateWeightedPrecisionInAchievabilityPhase(separatingVector); | 
		
	
		
			
				|  |  |                         this->performRefinementStep(env, std::move(separatingVector)); |  |  |                         this->performRefinementStep(env, std::move(separatingVector)); | 
		
	
	
		
			
				|  | @ -114,7 +115,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     // If there is only one objective than its the optimizing one. Thus the query has to be achievable.
 |  |  |                     // If there is only one objective than its the optimizing one. Thus the query has to be achievable.
 | 
		
	
		
			
				|  |  |                     return true; |  |  |                     return true; | 
		
	
		
			
				|  |  |                 } |  |  |                 } | 
		
	
		
			
				|  |  |                 STORM_LOG_ERROR("Could not check whether thresholds are achievable: Exceeded maximum number of refinement steps"); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 STORM_LOG_ERROR("Could not check whether thresholds are achievable: Termination requested or maximum number of refinement steps exceeded."); | 
		
	
		
			
				|  |  |                 return false; |  |  |                 return false; | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
		
			
				|  |  |              |  |  |              | 
		
	
	
		
			
				|  | @ -149,7 +150,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                 // the supremum over all strategies. Hence, one could combine a scheduler inducing the optimum value (but possibly violating strict
 |  |  |                 // the supremum over all strategies. Hence, one could combine a scheduler inducing the optimum value (but possibly violating strict
 | 
		
	
		
			
				|  |  |                 // thresholds) and (with very low probability) a scheduler that satisfies all (possibly strict) thresholds.
 |  |  |                 // thresholds) and (with very low probability) a scheduler that satisfies all (possibly strict) thresholds.
 | 
		
	
		
			
				|  |  |                 GeometryValueType result = storm::utility::zero<GeometryValueType>(); |  |  |                 GeometryValueType result = storm::utility::zero<GeometryValueType>(); | 
		
	
		
			
				|  |  |                 while(!this->maxStepsPerformed(env)) { |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 while(!this->maxStepsPerformed(env) && !storm::utility::resources::isTerminate()) { | 
		
	
		
			
				|  |  |                     if (this->refinementSteps.empty()) { |  |  |                     if (this->refinementSteps.empty()) { | 
		
	
		
			
				|  |  |                         // We did not make any refinement steps during the checkAchievability phase (e.g., because there is only one objective).
 |  |  |                         // We did not make any refinement steps during the checkAchievability phase (e.g., because there is only one objective).
 | 
		
	
		
			
				|  |  |                         this->weightVectorChecker->setWeightedPrecision(storm::utility::convertNumber<typename SparseModelType::ValueType>(env.modelchecker().multi().getPrecision())); |  |  |                         this->weightVectorChecker->setWeightedPrecision(storm::utility::convertNumber<typename SparseModelType::ValueType>(env.modelchecker().multi().getPrecision())); | 
		
	
	
		
			
				|  | @ -178,7 +179,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     this->updateWeightedPrecisionInImprovingPhase(env, separatingVector); |  |  |                     this->updateWeightedPrecisionInImprovingPhase(env, separatingVector); | 
		
	
		
			
				|  |  |                     this->performRefinementStep(env, std::move(separatingVector)); |  |  |                     this->performRefinementStep(env, std::move(separatingVector)); | 
		
	
		
			
				|  |  |                 } |  |  |                 } | 
		
	
		
			
				|  |  |                STORM_LOG_ERROR("Could not reach the desired precision: Exceeded maximum number of refinement steps"); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                STORM_LOG_ERROR("Could not reach the desired precision: Termination requested or maximum number of refinement steps exceeded."); | 
		
	
		
			
				|  |  |                return result; |  |  |                return result; | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
		
			
				|  |  |              |  |  |              | 
		
	
	
		
			
				|  | 
 |