@ -46,10 +46,10 @@ namespace storm {
template < storm : : dd : : DdType DdType , typename ValueType , typename std : : enable_if < storm : : NumberTraits < ValueType > : : SupportsExponential , int > : : type >
std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < DdType , ValueType > const & model , storm : : dd : : Add < DdType , ValueType > const & transitionMatrix , storm : : dd : : Bdd < DdType > const & markovianStates , storm : : dd : : Add < DdType , ValueType > const & exitRateVector , storm : : dd : : Bdd < DdType > const & psiStates , bool qualitative , double lowerBound , double upperBound ) {
std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < DdType , ValueType > const & model , storm : : dd : : Add < DdType , ValueType > const & transitionMatrix , storm : : dd : : Bdd < DdType > const & markovianStates , storm : : dd : : Add < DdType , ValueType > const & exitRateVector , storm : : dd : : Bdd < DdType > const & phiStates , storm : : dd : : Bdd < DdType > const & p siStates , bool qualitative , double lowerBound , double upperBound ) {
// If the time bounds are [0, inf], we rather call untimed reachability.
if ( storm : : utility : : isZero ( lowerBound ) & & upperBound = = storm : : utility : : infinity < ValueType > ( ) ) {
return storm : : modelchecker : : helper : : HybridMdpPrctlHelper < DdType , ValueType > : : computeUntilProbabilities ( env , dir , model , transitionMatrix , psiStates . getDdManager ( ) . getBddOne ( ) , psiStates , qualitative ) ;
return storm : : modelchecker : : helper : : HybridMdpPrctlHelper < DdType , ValueType > : : computeUntilProbabilities ( env , dir , model , transitionMatrix , phiStates , psiStates , qualitative ) ;
}
// If the interval is of the form [0,0], we can return the result directly
if ( storm : : utility : : isZero ( upperBound ) ) {
@ -66,12 +66,12 @@ namespace storm {
conversionWatch . stop ( ) ;
STORM_LOG_INFO ( " Converting symbolic matrix to explicit representation done in " < < conversionWatch . getTimeInMilliseconds ( ) < < " ms. " ) ;
auto explicitResult = storm : : modelchecker : : helper : : SparseMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( env , dir , explicitTransitionMatrix , explicitExitRateVector , markovianStates . toVector ( odd ) , psiStates . toVector ( odd ) , { lowerBound , upperBound } ) ;
auto explicitResult = storm : : modelchecker : : helper : : SparseMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( env , dir , explicitTransitionMatrix , explicitExitRateVector , markovianStates . toVector ( odd ) , phiStates . toVector ( odd ) , p siStates . toVector ( odd ) , { lowerBound , upperBound } ) ;
return std : : unique_ptr < CheckResult > ( new HybridQuantitativeCheckResult < DdType , ValueType > ( model . getReachableStates ( ) , model . getManager ( ) . getBddZero ( ) , model . getManager ( ) . template getAddZero < ValueType > ( ) , model . getReachableStates ( ) , std : : move ( odd ) , std : : move ( explicitResult ) ) ) ;
}
template < storm : : dd : : DdType DdType , typename ValueType , typename std : : enable_if < ! storm : : NumberTraits < ValueType > : : SupportsExponential , int > : : type >
std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & , OptimizationDirection , storm : : models : : symbolic : : MarkovAutomaton < DdType , ValueType > const & , storm : : dd : : Add < DdType , ValueType > const & , storm : : dd : : Bdd < DdType > const & , storm : : dd : : Add < DdType , ValueType > const & , storm : : dd : : Bdd < DdType > const & , bool , double , double ) {
std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & , OptimizationDirection , storm : : models : : symbolic : : MarkovAutomaton < DdType , ValueType > const & , storm : : dd : : Add < DdType , ValueType > const & , storm : : dd : : Bdd < DdType > const & , storm : : dd : : Add < DdType , ValueType > const & , storm : : dd : : Bdd < DdType > const & , storm : : dd : : Bdd < DdType > const & , bool , double , double ) {
STORM_LOG_THROW ( false , storm : : exceptions : : InvalidOperationException , " Computing bounded until probabilities is unsupported for this value type. " ) ;
}
@ -127,19 +127,19 @@ namespace storm {
// Cudd, double.
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeReachabilityRewards ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : CUDD , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & exitRateVector , typename storm : : models : : symbolic : : Model < storm : : dd : : DdType : : CUDD , double > : : RewardModelType const & rewardModel , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & targetStates , bool qualitative ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : CUDD , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & psiStates , bool qualitative , double lowerBound , double upperBound ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : CUDD , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & phiStates , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & p siStates , bool qualitative , double lowerBound , double upperBound ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeLongRunAverageProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : CUDD , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & psiStates ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeLongRunAverageRewards ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : CUDD , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : CUDD > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : CUDD , double > const & exitRateVector , typename storm : : models : : symbolic : : Model < storm : : dd : : DdType : : CUDD , double > : : RewardModelType const & rewardModel ) ;
// Sylvan, double.
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeReachabilityRewards ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & exitRateVector , typename storm : : models : : symbolic : : Model < storm : : dd : : DdType : : Sylvan , double > : : RewardModelType const & rewardModel , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & targetStates , bool qualitative ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & psiStates , bool qualitative , double lowerBound , double upperBound ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & phiStates , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & p siStates , bool qualitative , double lowerBound , double upperBound ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeLongRunAverageProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & psiStates ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeLongRunAverageRewards ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , double > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , double > const & exitRateVector , typename storm : : models : : symbolic : : Model < storm : : dd : : DdType : : Sylvan , double > : : RewardModelType const & rewardModel ) ;
// Sylvan, rational number.
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeReachabilityRewards ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & exitRateVector , typename storm : : models : : symbolic : : Model < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > : : RewardModelType const & rewardModel , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & targetStates , bool qualitative ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & psiStates , bool qualitative , double lowerBound , double upperBound ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeBoundedUntilProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & phiStates , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & p siStates , bool qualitative , double lowerBound , double upperBound ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeLongRunAverageProbabilities ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & exitRateVector , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & psiStates ) ;
template std : : unique_ptr < CheckResult > HybridMarkovAutomatonCslHelper : : computeLongRunAverageRewards ( Environment const & env , OptimizationDirection dir , storm : : models : : symbolic : : MarkovAutomaton < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & model , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & transitionMatrix , storm : : dd : : Bdd < storm : : dd : : DdType : : Sylvan > const & markovianStates , storm : : dd : : Add < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > const & exitRateVector , typename storm : : models : : symbolic : : Model < storm : : dd : : DdType : : Sylvan , storm : : RationalNumber > : : RewardModelType const & rewardModel ) ;
xxxxxxxxxx