Storm
A Modern Probabilistic Model Checker
|
#include <RegionModelChecker.h>
Public Types | |
typedef storm::storage::ParameterRegion< ParametricType >::CoefficientType | CoefficientType |
typedef storm::storage::ParameterRegion< ParametricType >::VariableType | VariableType |
Public Member Functions | |
RegionModelChecker () | |
virtual | ~RegionModelChecker ()=default |
virtual bool | canHandle (std::shared_ptr< storm::models::ModelBase > parametricModel, CheckTask< storm::logic::Formula, ParametricType > const &checkTask) const =0 |
virtual void | specify (Environment const &env, std::shared_ptr< storm::models::ModelBase > parametricModel, CheckTask< storm::logic::Formula, ParametricType > const &checkTask, bool generateRegionSplitEstimates, bool allowModelSimplifications=true)=0 |
virtual RegionResult | analyzeRegion (Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, RegionResultHypothesis const &hypothesis=RegionResultHypothesis::Unknown, RegionResult const &initialResult=RegionResult::Unknown, bool sampleVerticesOfRegion=false, std::shared_ptr< storm::analysis::LocalMonotonicityResult< VariableType > > localMonotonicityResult=nullptr)=0 |
Analyzes the given region. | |
std::unique_ptr< storm::modelchecker::RegionCheckResult< ParametricType > > | analyzeRegions (Environment const &env, std::vector< storm::storage::ParameterRegion< ParametricType > > const ®ions, std::vector< RegionResultHypothesis > const &hypotheses, bool sampleVerticesOfRegion=false) |
Analyzes the given regions. | |
virtual ParametricType | getBoundAtInitState (Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, storm::solver::OptimizationDirection const &dirForParameters) |
std::unique_ptr< storm::modelchecker::RegionRefinementCheckResult< ParametricType > > | performRegionRefinement (Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, boost::optional< ParametricType > const &coverageThreshold, boost::optional< uint64_t > depthThreshold=boost::none, RegionResultHypothesis const &hypothesis=RegionResultHypothesis::Unknown, uint64_t monThresh=0) |
Iteratively refines the region until the region analysis yields a conclusive result (AllSat or AllViolated). | |
virtual std::pair< ParametricType, typename storm::storage::ParameterRegion< ParametricType >::Valuation > | computeExtremalValue (Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, storm::solver::OptimizationDirection const &dir, ParametricType const &precision, bool absolutePrecision, std::optional< storm::logic::Bound > const &boundInvariant=std::nullopt) |
Finds the extremal value within the given region and with the given precision. | |
virtual bool | verifyRegion (Environment const &env, storm::storage::ParameterRegion< ParametricType > const ®ion, storm::logic::Bound const &bound) |
Checks whether the bound is satisfied on the complete region. | |
virtual bool | isRegionSplitEstimateSupported () const |
Returns true if region split estimation (a) was enabled when model and check task have been specified and (b) is supported by this region model checker. | |
virtual std::map< VariableType, double > | getRegionSplitEstimate () const |
Returns an estimate of the benefit of splitting the last checked region with respect to each parameter. | |
virtual std::shared_ptr< storm::analysis::Order > | extendOrder (std::shared_ptr< storm::analysis::Order > order, storm::storage::ParameterRegion< ParametricType > region) |
virtual void | setConstantEntries (std::shared_ptr< storm::analysis::LocalMonotonicityResult< VariableType > > localMonotonicityResult) |
bool | isUseMonotonicitySet () const |
bool | isUseBoundsSet () |
bool | isOnlyGlobalSet () |
void | setUseMonotonicity (bool monotonicity=true) |
void | setUseBounds (bool bounds=true) |
void | setUseOnlyGlobal (bool global=true) |
virtual void | setMaxSplitDimensions (uint64_t) |
When splitting, split in at most this many dimensions. | |
virtual void | resetMaxSplitDimensions () |
When splitting, split in every dimension. | |
void | setMonotoneParameters (std::pair< std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType >, std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType > > monotoneParameters) |
Protected Member Functions | |
virtual void | extendLocalMonotonicityResult (storm::storage::ParameterRegion< ParametricType > const ®ion, std::shared_ptr< storm::analysis::Order > order, std::shared_ptr< storm::analysis::LocalMonotonicityResult< VariableType > > localMonotonicityResult) |
virtual void | splitSmart (storm::storage::ParameterRegion< ParametricType > ®ion, std::vector< storm::storage::ParameterRegion< ParametricType > > ®ionVector, storm::analysis::MonotonicityResult< VariableType > &monRes, bool splitForExtremum) const |
Protected Attributes | |
uint_fast64_t | numberOfRegionsKnownThroughMonotonicity |
boost::optional< std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType > > | monotoneIncrParameters |
boost::optional< std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType > > | monotoneDecrParameters |
Definition at line 25 of file RegionModelChecker.h.
typedef storm::storage::ParameterRegion<ParametricType>::CoefficientType storm::modelchecker::RegionModelChecker< ParametricType >::CoefficientType |
Definition at line 27 of file RegionModelChecker.h.
typedef storm::storage::ParameterRegion<ParametricType>::VariableType storm::modelchecker::RegionModelChecker< ParametricType >::VariableType |
Definition at line 28 of file RegionModelChecker.h.
storm::modelchecker::RegionModelChecker< ParametricType >::RegionModelChecker | ( | ) |
Definition at line 25 of file RegionModelChecker.cpp.
|
virtualdefault |
|
pure virtual |
Analyzes the given region.
hypothesis | if not 'unknown', the region checker only tries to show the hypothesis |
initialResult | encodes what is already known about this region |
sampleVerticesOfRegion | enables sampling of the vertices of the region in cases where AllSat/AllViolated could not be shown. |
std::unique_ptr< storm::modelchecker::RegionCheckResult< ParametricType > > storm::modelchecker::RegionModelChecker< ParametricType >::analyzeRegions | ( | Environment const & | env, |
std::vector< storm::storage::ParameterRegion< ParametricType > > const & | regions, | ||
std::vector< RegionResultHypothesis > const & | hypotheses, | ||
bool | sampleVerticesOfRegion = false |
||
) |
Analyzes the given regions.
hypothesis | if not 'unknown', we only try to show the hypothesis for each region |
If supported by this model checker, it is possible to sample the vertices of the regions whenever AllSat/AllViolated could not be shown.
Definition at line 30 of file RegionModelChecker.cpp.
|
pure virtual |
Implemented in storm::modelchecker::SparseMdpParameterLiftingModelChecker< SparseModelType, ConstantType >, storm::modelchecker::SparseMdpParameterLiftingModelChecker< SparseModelType, ImpreciseType >, storm::modelchecker::SparseMdpParameterLiftingModelChecker< SparseModelType, PreciseType >, storm::modelchecker::ValidatingSparseParameterLiftingModelChecker< SparseModelType, ImpreciseType, PreciseType >, storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ConstantType >, storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ImpreciseType >, and storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, PreciseType >.
|
virtual |
Finds the extremal value within the given region and with the given precision.
The returned value v corresponds to the value at the returned valuation. The actual maximum (minimum) lies in the interval [v, v'] ([v', v]) where v' is based on the precision. (With absolute precision, v' = v +/- precision). TODO: Check documentation, which was incomplete.
env | |
region | The region in which to optimize |
dir | The direction in which to optimize |
precision | The required precision (unless boundInvariant is set). |
absolutePrecision | true iff precision should be measured absolutely |
boundInvariant | if this invariant on v is violated, the algorithm may return v while violating the precision requirements. |
Definition at line 344 of file RegionModelChecker.cpp.
|
protectedvirtual |
Definition at line 337 of file RegionModelChecker.cpp.
|
virtual |
Definition at line 369 of file RegionModelChecker.cpp.
|
virtual |
Definition at line 49 of file RegionModelChecker.cpp.
|
virtual |
Returns an estimate of the benefit of splitting the last checked region with respect to each parameter.
This method should only be called if region split estimation is supported and enabled. If a parameter is assigned a high value, we should prefer splitting with respect to this parameter.
Reimplemented in storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ConstantType >, storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ImpreciseType >, and storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, PreciseType >.
Definition at line 363 of file RegionModelChecker.cpp.
bool storm::modelchecker::RegionModelChecker< ParametricType >::isOnlyGlobalSet | ( | ) |
Definition at line 403 of file RegionModelChecker.cpp.
|
virtual |
Returns true if region split estimation (a) was enabled when model and check task have been specified and (b) is supported by this region model checker.
Reimplemented in storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ConstantType >, storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ImpreciseType >, and storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, PreciseType >.
Definition at line 358 of file RegionModelChecker.cpp.
bool storm::modelchecker::RegionModelChecker< ParametricType >::isUseBoundsSet | ( | ) |
Definition at line 398 of file RegionModelChecker.cpp.
bool storm::modelchecker::RegionModelChecker< ParametricType >::isUseMonotonicitySet | ( | ) | const |
Definition at line 393 of file RegionModelChecker.cpp.
std::unique_ptr< storm::modelchecker::RegionRefinementCheckResult< ParametricType > > storm::modelchecker::RegionModelChecker< ParametricType >::performRegionRefinement | ( | Environment const & | env, |
storm::storage::ParameterRegion< ParametricType > const & | region, | ||
boost::optional< ParametricType > const & | coverageThreshold, | ||
boost::optional< uint64_t > | depthThreshold = boost::none , |
||
RegionResultHypothesis const & | hypothesis = RegionResultHypothesis::Unknown , |
||
uint64_t | monThresh = 0 |
||
) |
Iteratively refines the region until the region analysis yields a conclusive result (AllSat or AllViolated).
region | the considered region |
coverageThreshold | if given, the refinement stops as soon as the fraction of the area of the subregions with inconclusive result is less then this threshold |
depthThreshold | if given, the refinement stops at the given depth. depth=0 means no refinement. |
hypothesis | if not 'unknown', it is only checked whether the hypothesis holds within the given region. |
monThresh | if given, determines at which depth to start using monotonicity |
Definition at line 56 of file RegionModelChecker.cpp.
|
virtual |
When splitting, split in every dimension.
Reimplemented in storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ConstantType >, storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ImpreciseType >, and storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, PreciseType >.
Definition at line 388 of file RegionModelChecker.cpp.
|
virtual |
Definition at line 377 of file RegionModelChecker.cpp.
|
virtual |
When splitting, split in at most this many dimensions.
Reimplemented in storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ConstantType >, storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ImpreciseType >, and storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, PreciseType >.
Definition at line 383 of file RegionModelChecker.cpp.
void storm::modelchecker::RegionModelChecker< ParametricType >::setMonotoneParameters | ( | std::pair< std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType >, std::set< typename storm::storage::ParameterRegion< ParametricType >::VariableType > > | monotoneParameters | ) |
Definition at line 433 of file RegionModelChecker.cpp.
void storm::modelchecker::RegionModelChecker< ParametricType >::setUseBounds | ( | bool | bounds = true | ) |
Definition at line 413 of file RegionModelChecker.cpp.
void storm::modelchecker::RegionModelChecker< ParametricType >::setUseMonotonicity | ( | bool | monotonicity = true | ) |
Definition at line 408 of file RegionModelChecker.cpp.
void storm::modelchecker::RegionModelChecker< ParametricType >::setUseOnlyGlobal | ( | bool | global = true | ) |
Definition at line 419 of file RegionModelChecker.cpp.
|
pure virtual |
Implemented in storm::modelchecker::SparseMdpParameterLiftingModelChecker< SparseModelType, ConstantType >, storm::modelchecker::SparseMdpParameterLiftingModelChecker< SparseModelType, ImpreciseType >, storm::modelchecker::SparseMdpParameterLiftingModelChecker< SparseModelType, PreciseType >, storm::modelchecker::ValidatingSparseDtmcParameterLiftingModelChecker< SparseModelType, ImpreciseType, PreciseType >, storm::modelchecker::ValidatingSparseMdpParameterLiftingModelChecker< SparseModelType, ImpreciseType, PreciseType >, storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ConstantType >, storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, ImpreciseType >, and storm::modelchecker::SparseDtmcParameterLiftingModelChecker< SparseModelType, PreciseType >.
|
protectedvirtual |
Definition at line 425 of file RegionModelChecker.cpp.
|
virtual |
Checks whether the bound is satisfied on the complete region.
Definition at line 352 of file RegionModelChecker.cpp.
|
protected |
Definition at line 148 of file RegionModelChecker.h.
|
protected |
Definition at line 147 of file RegionModelChecker.h.
|
protected |
Definition at line 146 of file RegionModelChecker.h.