46 if (this->getParameterSpace().getVariables().size() == 2) {
48 auto x = *this->getParameterSpace().getVariables().begin();
49 auto y = *(this->getParameterSpace().getVariables().rbegin());
51 uint_fast64_t
const sizeX = 128;
52 uint_fast64_t
const sizeY = 64;
54 out <<
"Region refinement Check result (visualization):\n";
55 out <<
" \t x-axis: " << x <<
" \t y-axis: " << y <<
" \t S=safe, [ ]=unsafe, -=ambiguous \n";
56 for (uint_fast64_t i = 0; i < sizeX + 2; ++i) {
61 CoefficientType deltaX =
62 (getParameterSpace().getUpperBoundary(x) - getParameterSpace().getLowerBoundary(x)) / storm::utility::convertNumber<CoefficientType>(sizeX);
63 CoefficientType deltaY =
64 (getParameterSpace().getUpperBoundary(y) - getParameterSpace().getLowerBoundary(y)) / storm::utility::convertNumber<CoefficientType>(sizeY);
65 CoefficientType printedRegionArea = deltaX * deltaY;
66 for (CoefficientType yUpper = getParameterSpace().getUpperBoundary(y); yUpper != getParameterSpace().getLowerBoundary(y); yUpper -= deltaY) {
67 CoefficientType yLower = yUpper - deltaY;
69 for (CoefficientType xLower = getParameterSpace().getLowerBoundary(x); xLower != getParameterSpace().getUpperBoundary(x); xLower += deltaX) {
70 CoefficientType xUpper = xLower + deltaX;
71 bool currRegionSafe =
false;
72 bool currRegionUnSafe =
false;
73 bool currRegionIllDefined =
false;
74 bool currRegionComplete =
false;
75 CoefficientType coveredArea = storm::utility::zero<CoefficientType>();
76 for (
auto const& r : this->getRegionResults()) {
81 CoefficientType interesctionSizeY = std::min(yUpper, r.first.getUpperBoundary(y)) - std::max(yLower, r.first.getLowerBoundary(y));
82 interesctionSizeY = std::max(interesctionSizeY, storm::utility::zero<CoefficientType>());
83 CoefficientType interesctionSizeX = std::min(xUpper, r.first.getUpperBoundary(x)) - std::max(xLower, r.first.getLowerBoundary(x));
84 interesctionSizeX = std::max(interesctionSizeX, storm::utility::zero<CoefficientType>());
85 CoefficientType intersectionArea = interesctionSizeY * interesctionSizeX;
90 coveredArea += intersectionArea;
91 if (currRegionSafe && currRegionUnSafe) {
94 if (coveredArea == printedRegionArea) {
95 currRegionComplete =
true;
100 if (currRegionComplete && currRegionSafe && !currRegionUnSafe) {
102 }
else if (currRegionComplete && currRegionUnSafe && !currRegionSafe) {
104 }
else if (currRegionComplete && currRegionIllDefined) {
112 for (uint_fast64_t i = 0; i < sizeX + 2; ++i) {
117 STORM_LOG_WARN(
"Writing illustration of region check result to a stream is only implemented for two parameters.");