Browse Source

OVI: Debug output for inner interval iteration

tempestpy_adaptions
Jan Erik Karuc 5 years ago
parent
commit
50a51a70c0
  1. 13
      src/storm/solver/IterativeMinMaxLinearEquationSolver.cpp

13
src/storm/solver/IterativeMinMaxLinearEquationSolver.cpp

@ -422,6 +422,12 @@ namespace storm {
uint64_t currentVerificationIterations = 0;
uint64_t valueIterationInvocations = 0;
//DEBUG
uint64_t up_occur = 0;
uint64_t cross_occur = 0;
uint64_t down_occur = 0;
//DEBUG END
if (!this->multiplierA) {
this->multiplierA = storm::solver::MultiplierFactory<ValueType>().create(env, *this->A);
}
@ -523,6 +529,7 @@ namespace storm {
std::swap(currentUpperBound, newUpperBound);
if (newUpperBoundAlwaysHigher) {
++up_occur;
iterationPrecision = updateIterationPrecision(env, *currentX, *newX, relative, relevantValues);
// Not all values moved up or stayed the same
// If we have a single fixed point, we can safely set the new lower bound, to the wrongly guessed upper bound
@ -531,9 +538,11 @@ namespace storm {
}
break;
} else if (valuesCrossed) {
++cross_occur;
iterationPrecision = updateIterationPrecision(env, *currentX, *newX, relative, relevantValues);
break;
} else if (newUpperBoundAlwaysLowerEqual) {
++down_occur;
// All values moved down or stayed the same and we have a maximum difference of twice the requested precision
// We can safely use twice the requested precision, as we calculate the center of both vectors
// We can use max_if instead of computeMaxAbsDiff, as x is definitely a lower bound and ub is larger in all elements
@ -581,6 +590,10 @@ namespace storm {
std::swap(x, *currentX);
}
// DEBUG
std::cout << "Up mov: " << up_occur << ", Cross: " << cross_occur << ", Down mov: " << down_occur;
// DEBUG END
reportStatus(status, overallIterations);
// If requested, we store the scheduler for retrieval.

Loading…
Cancel
Save