STORM_LOG_THROW(!storm::utility::isZero(weights[this->indexOfOptimizingObjective]),exceptions::UnexpectedException,"The chosen weight-vector gives zero weight for the objective that is to be optimized.");
// If weighs[indexOfOptimizingObjective] is low, the computation of the weightVectorChecker needs to be more precise.
// Our heuristic ensures that if p is the new vertex of the under-approximation, then max{ eps | p' = p + (0..0 eps 0..0) is in the over-approximation } <= multiobjective_precision/2
// Reaching this point means that the underApproximation contains halfspaces. The seperating vector has to be the normal vector of one of these halfspaces.
// We pick one with maximal distance to the given point. However, Dirac weight vectors that only assign a non-zero weight to a single objective take precedence.
STORM_LOG_ASSERT(!underApproximation->contains(pointToBeSeparated),"Tried to find a separating point but the point is already contained in the underApproximation");
STORM_LOG_DEBUG("weighted objectives checker result (lower bounds) is "<<storm::utility::vector::toString(storm::utility::vector::convertNumericVector<double>(weightVectorChecker->getLowerBoundsOfInitialStateResults())));
RefinementStepstep;
step.weightVector=direction;
@ -136,7 +117,7 @@ namespace storm {
if(maximumOffset>h.offset()){
// We correct the issue by shifting the halfspace such that it contains the underapproximation
h.offset()=maximumOffset;
STORM_LOG_WARN("Numerical issues: The overapproximation would not contain the underapproximation. Hence, a halfspace is shifted by "<<storm::utility::convertNumber<double>(h.euclideanDistance(refinementSteps.back().upperBoundPoint))<<".");
STORM_LOG_WARN("Numerical issues: The overapproximation would not contain the underapproximation. Hence, a halfspace is shifted by "<<storm::utility::convertNumber<double>(h.invert().euclideanDistance(refinementSteps.back().upperBoundPoint))<<".");
STORM_LOG_THROW(resultingWeightedPrecision>=storm::utility::zero<ValueType>(),storm::exceptions::UnexpectedException,"The distance between the lower and the upper result is negative.");