7template<
typename ParametricType>
12template<
typename ParametricType>
22 if (r.refinementDepth == 0) {
25 r.monotonicityAnnotation =
30 if (allowDeleteAnnotationsOfThis) {
36template<
typename ParametricType>
38 std::set<VariableType>
const& discreteVariables,
bool allowDeleteAnnotationsOfThis) {
39 std::vector<storm::storage::ParameterRegion<ParametricType>> subRegionsWithoutAnnotations;
40 region.split(splittingPoint, subRegionsWithoutAnnotations, consideredVariables, discreteVariables);
41 subRegions.reserve(subRegionsWithoutAnnotations.size());
42 for (
auto& newRegion : subRegionsWithoutAnnotations) {
48template<
typename ParametricType>
50 bool allowDeleteAnnotationsOfThis) {
52 splitAndPropagate(
region.getCenterPoint(), splittingVariables, discreteVariables, allowDeleteAnnotationsOfThis);
55template<
typename ParametricType>
58 child.postOrderTraverseSubRegions(visitor);
63template<
typename ParametricType>
67 child.preOrderTraverseSubRegions(visitor);
71template<
typename ParametricType>
75 max = std::max(max, child.getMaxDepthOfSubRegions() + 1);
80template<
typename ParametricType>
storm::utility::parametric::Valuation< ParametricType > Valuation
#define STORM_LOG_ASSERT(cond, message)
@ CenterSat
the formula is satisfied for the parameter Valuation that corresponds to the center point of the regi...
@ AllSat
the formula is satisfied for all well-defined parameters in the given region
@ AllViolated
the formula is violated for all well-defined parameters in the given region
@ Unknown
the result is unknown
@ CenterViolated
the formula is violated for the parameter Valuation that corresponds to the center point of the regio...
@ ExistsSat
the formula is satisfied for at least one parameter evaluation that lies in the given region
@ ExistsViolated
the formula is violated for at least one parameter evaluation that lies in the given region
solver::OptimizationDirection OptimizationDirection
void propagateAnnotationsToSubregions(bool allowDeleteAnnotationsOfThis)
storm::modelchecker::MonotonicityAnnotation< ParametricType > monotonicityAnnotation
Whether the result is known through monotonicity.
void postOrderTraverseSubRegions(std::function< void(AnnotatedRegion< ParametricType > &)> const &visitor)
void preOrderTraverseSubRegions(std::function< void(AnnotatedRegion< ParametricType > &)> const &visitor)
storm::modelchecker::RegionResult result
The depth of the refinement tree this region is in.
typename Region::CoefficientType CoefficientType
storm::utility::Maximum< CoefficientType > knownLowerValueBound
storm::utility::Minimum< CoefficientType > knownUpperValueBound
AnnotatedRegion(Region const ®ion)
uint64_t getMaxDepthOfSubRegions() const
std::vector< AnnotatedRegion< ParametricType > > subRegions
uint64_t refinementDepth
The region this is an annotation for.
storm::storage::ParameterRegion< ParametricType > Region
void splitLeafNodeAtCenter(std::set< VariableType > const &splittingVariables, std::set< VariableType > const &discreteVariables, bool allowDeleteAnnotationsOfThis)
bool updateValueBound(CoefficientType const &newValue, storm::OptimizationDirection dir)
what is known about this region in terms of monotonicity
Region const region
The subregions of this region.
void splitAndPropagate(typename Region::Valuation const &splittingPoint, std::set< VariableType > const &consideredVariables, std::set< VariableType > const &discreteVariables, bool allowDeleteAnnotationsOfThis)