|
@ -82,7 +82,7 @@ namespace storm { |
|
|
// Truncation error
|
|
|
// Truncation error
|
|
|
ValueType kappa = storm::utility::convertNumber<ValueType>(env.solver().timeBounded().getUnifPlusKappa()); |
|
|
ValueType kappa = storm::utility::convertNumber<ValueType>(env.solver().timeBounded().getUnifPlusKappa()); |
|
|
// Precision to be achieved
|
|
|
// Precision to be achieved
|
|
|
ValueType epsilon = storm::utility::convertNumber<ValueType>(env.solver().timeBounded().getPrecision()); |
|
|
|
|
|
|
|
|
ValueType epsilon = storm::utility::convertNumber<ValueType>(2.0) * storm::utility::convertNumber<ValueType>(env.solver().timeBounded().getPrecision()); |
|
|
bool relativePrecision = env.solver().timeBounded().getRelativeTerminationCriterion(); |
|
|
bool relativePrecision = env.solver().timeBounded().getRelativeTerminationCriterion(); |
|
|
// Uniformization rate
|
|
|
// Uniformization rate
|
|
|
ValueType lambda = *std::max_element(markovianExitRates.begin(), markovianExitRates.end()); |
|
|
ValueType lambda = *std::max_element(markovianExitRates.begin(), markovianExitRates.end()); |
|
@ -862,7 +862,7 @@ namespace storm { |
|
|
for (auto value : exitRateVector) { |
|
|
for (auto value : exitRateVector) { |
|
|
maxExitRate = std::max(maxExitRate, value); |
|
|
maxExitRate = std::max(maxExitRate, value); |
|
|
} |
|
|
} |
|
|
ValueType delta = (2 * storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision()) / (upperBound * maxExitRate * maxExitRate); |
|
|
|
|
|
|
|
|
ValueType delta = (2.0 * storm::utility::convertNumber<ValueType>(env.solver().timeBounded().getPrecision())) / (upperBound * maxExitRate * maxExitRate); |
|
|
|
|
|
|
|
|
// (2) Compute the number of steps we need to make for the interval.
|
|
|
// (2) Compute the number of steps we need to make for the interval.
|
|
|
uint64_t numberOfSteps = static_cast<uint64_t>(std::ceil((upperBound - lowerBound) / delta)); |
|
|
uint64_t numberOfSteps = static_cast<uint64_t>(std::ceil((upperBound - lowerBound) / delta)); |
|
|