@ -283,7 +283,11 @@ namespace storm { 
		
	
		
			
				                    objectiveHelper . emplace_back ( * model ,  obj ) ;                     objectiveHelper . emplace_back ( * model ,  obj ) ;  
		
	
		
			
				                }                 }  
		
	
		
			
				                lpChecker  =  std : : make_shared < DeterministicSchedsLpChecker < SparseModelType ,  GeometryValueType > > ( env ,  * model ,  objectiveHelper ) ;                 lpChecker  =  std : : make_shared < DeterministicSchedsLpChecker < SparseModelType ,  GeometryValueType > > ( env ,  * model ,  objectiveHelper ) ;  
		
	
		
			
				                if  ( preprocessorResult . containsOnlyTotalRewardFormulas ( ) )  {  
		
	
		
			
				                    wvChecker  =  storm : : modelchecker : : multiobjective : : WeightVectorCheckerFactory < SparseModelType > : : create ( preprocessorResult ) ;                     wvChecker  =  storm : : modelchecker : : multiobjective : : WeightVectorCheckerFactory < SparseModelType > : : create ( preprocessorResult ) ;  
		
	
		
			
				                }  else  {  
		
	
		
			
				                    wvChecker  =  nullptr ;  
		
	
		
			
				                }  
		
	
		
			
				            }             }  
		
	
		
			
				
 
		
	
		
			
				            template  < class  SparseModelType ,  typename  GeometryValueType >             template  < class  SparseModelType ,  typename  GeometryValueType >  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -395,14 +399,17 @@ namespace storm { 
		
	
		
			
				                for  ( uint64_t  objIndex  =  0 ;  objIndex  <  objectives . size ( ) ;  + + objIndex )  {                 for  ( uint64_t  objIndex  =  0 ;  objIndex  <  objectives . size ( ) ;  + + objIndex )  {  
		
	
		
			
				                    std : : vector < GeometryValueType >  weightVector ( objectives . size ( ) ,  storm : : utility : : zero < ModelValueType > ( ) ) ;                     std : : vector < GeometryValueType >  weightVector ( objectives . size ( ) ,  storm : : utility : : zero < ModelValueType > ( ) ) ;  
		
	
		
			
				                    weightVector [ objIndex ]  =  storm : : utility : : one < GeometryValueType > ( ) ;                     weightVector [ objIndex ]  =  storm : : utility : : one < GeometryValueType > ( ) ;  
		
	
		
			
				                    //negateMinObjectives(weightVector);
  
		
	
		
			
				                    std : : vector < GeometryValueType >  point ;  
		
	
		
			
				                    if  ( wvChecker )  {  
		
	
		
			
				                        wvChecker - > check ( env ,  storm : : utility : : vector : : convertNumericVector < ModelValueType > ( weightVector ) ) ;                         wvChecker - > check ( env ,  storm : : utility : : vector : : convertNumericVector < ModelValueType > ( weightVector ) ) ;  
		
	
		
			
				                    auto  point  =  storm : : utility : : vector : : convertNumericVector < GeometryValueType > ( wvChecker - > getUnderApproximationOfInitialStateResults ( ) ) ;  
		
	
		
			
				                    //lpChecker->setCurrentWeightVector(weightVector);
  
		
	
		
			
				                    //auto point = lpChecker->check(env, negateMinObjectives(this->overApproximation));
  
		
	
		
			
				                    //STORM_LOG_THROW(point.is_initialized(), storm::exceptions::UnexpectedException, "Unable to find a point in the current overapproximation.");
  
		
	
		
			
				                    //negateMinObjectives(weightVector);
  
		
	
		
			
				                        point  =  storm : : utility : : vector : : convertNumericVector < GeometryValueType > ( wvChecker - > getUnderApproximationOfInitialStateResults ( ) ) ;  
		
	
		
			
				                        negateMinObjectives ( point ) ;                         negateMinObjectives ( point ) ;  
		
	
		
			
				                    }  else  {  
		
	
		
			
				                        lpChecker - > setCurrentWeightVector ( weightVector ) ;  
		
	
		
			
				                        auto  optionalPoint  =  lpChecker - > check ( env ,  negateMinObjectives ( this - > overApproximation ) ) ;  
		
	
		
			
				                        STORM_LOG_THROW ( optionalPoint . is_initialized ( ) ,  storm : : exceptions : : UnexpectedException ,  " Unable to find a point in the current overapproximation. " ) ;  
		
	
		
			
				                        point  =  std : : move ( optionalPoint . get ( ) ) ;  
		
	
		
			
				                    }  
		
	
		
			
				                    Point  p ( point ) ;                     Point  p ( point ) ;  
		
	
		
			
				                    p . setOnFacet ( ) ;                     p . setOnFacet ( ) ;  
		
	
		
			
				                    // Adapt the overapproximation
                     // Adapt the overapproximation
  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -483,20 +490,26 @@ namespace storm { 
		
	
		
			
				                                 
		
	
		
			
				                // Invoke optimization and insert the explored points
                 // Invoke optimization and insert the explored points
  
		
	
		
			
				                boost : : optional < PointId >  optPointId ;                 boost : : optional < PointId >  optPointId ;  
		
	
		
			
				                std : : vector < GeometryValueType >  point ;  
		
	
		
			
				                if  ( wvChecker )  {  
		
	
		
			
				                    wvChecker - > check ( env ,  storm : : utility : : vector : : convertNumericVector < ModelValueType > ( f . getHalfspace ( ) . normalVector ( ) ) ) ;                     wvChecker - > check ( env ,  storm : : utility : : vector : : convertNumericVector < ModelValueType > ( f . getHalfspace ( ) . normalVector ( ) ) ) ;  
		
	
		
			
				                auto  point  =  storm : : utility : : vector : : convertNumericVector < GeometryValueType > ( wvChecker - > getUnderApproximationOfInitialStateResults ( ) ) ;  
		
	
		
			
				                //auto currentArea = negateMinObjectives(overApproximation->intersection(f.getHalfspace().invert()));
  
		
	
		
			
				                //auto point = lpChecker->check(env, currentArea);
  
		
	
		
			
				 //               if (point.is_initialized()) {
  
		
	
		
			
				                    point  =  storm : : utility : : vector : : convertNumericVector < GeometryValueType > ( wvChecker - > getUnderApproximationOfInitialStateResults ( ) ) ;  
		
	
		
			
				                    negateMinObjectives ( point ) ;                     negateMinObjectives ( point ) ;  
		
	
		
			
				                }  else  {  
		
	
		
			
				                    auto  currentArea  =  negateMinObjectives ( overApproximation - > intersection ( f . getHalfspace ( ) . invert ( ) ) ) ;  
		
	
		
			
				                    auto  optionalPoint  =  lpChecker - > check ( env ,  currentArea ) ;  
		
	
		
			
				                    if  ( optionalPoint . is_initialized ( ) )  {  
		
	
		
			
				                        point  =  std : : move ( optionalPoint . get ( ) ) ;  
		
	
		
			
				                    }  else  {  
		
	
		
			
				                        // As we did not find any feasable solution in the given area, we take a point that lies on the facet
  
		
	
		
			
				                        point  =  pointset . getPoint ( f . getPoints ( ) . front ( ) ) . get ( ) ;  
		
	
		
			
				                    }  
		
	
		
			
				                }  
		
	
		
			
				                Point  p ( point ) ;                 Point  p ( point ) ;  
		
	
		
			
				                p . setOnFacet ( ) ;                 p . setOnFacet ( ) ;  
		
	
		
			
				                GeometryValueType  offset  =  storm : : utility : : vector : : dotProduct ( f . getHalfspace ( ) . normalVector ( ) ,  p . get ( ) ) ;                 GeometryValueType  offset  =  storm : : utility : : vector : : dotProduct ( f . getHalfspace ( ) . normalVector ( ) ,  p . get ( ) ) ;  
		
	
		
			
				                addHalfspaceToOverApproximation ( env ,  f . getHalfspace ( ) . normalVector ( ) ,  offset ) ;                 addHalfspaceToOverApproximation ( env ,  f . getHalfspace ( ) . normalVector ( ) ,  offset ) ;  
		
	
		
			
				                optPointId  =  pointset . addPoint ( env ,  std : : move ( p ) ) ;                 optPointId  =  pointset . addPoint ( env ,  std : : move ( p ) ) ;  
		
	
		
			
				                //} else {
  
		
	
		
			
				                //    addHalfspaceToOverApproximation(env, f.getHalfspace().normalVector(), f.getHalfspace().offset());
  
		
	
		
			
				                //}
  
		
	
		
			
				                                 
		
	
		
			
				                // Potentially generate new facets
                 // Potentially generate new facets
  
		
	
		
			
				                if  ( optPointId )  {                 if  ( optPointId )  {