@ -654,14 +654,14 @@ namespace storm {
}
}
template < typename ValueType , typename std : : enable_if < storm : : NumberTraits < ValueType > : : SupportsExponential , int > : : type >
template < typename ValueType , typename std : : enable_if < storm : : NumberTraits < ValueType > : : SupportsExponential , int > : : type >
std : : vector < ValueType > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & env , storm : : storage : : SparseMatrix < ValueType > const & rateMatrix , storm : : storage : : SparseMatrix < ValueType > const & backwardTransitions , storm : : storage : : BitVector const & initialStates , storm : : storage : : BitVector const & phiStates , storm : : storage : : BitVector const & psiStates , std : : vector < ValueType > const & exitRates , double timeBound ) {
std : : vector < ValueType > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & env , storm : : storage : : SparseMatrix < ValueType > const & rateMatrix , storm : : storage : : BitVector const & initialStates , storm : : storage : : BitVector const & phiStates , storm : : storage : : BitVector const & psiStates , std : : vector < ValueType > const & exitRates , double timeBound ) {
// Compute transient probabilities going from initial state
// Compute transient probabilities going from initial state
// Instead of y=Px we now compute y=xP <=> y^T=P^Tx^T via transposition
// Instead of y=Px we now compute y=xP <=> y^T=P^Tx^T via transposition
uint_fast64_t numberOfStates = rateMatrix . getRowCount ( ) ;
uint_fast64_t numberOfStates = rateMatrix . getRowCount ( ) ;
// Create the result vector.
// Create the result vector.
std : : vector < ValueType > result ;
std : : vector < ValueType > result = std : : vector < ValueType > ( numberOfStates , storm : : utility : : zero < ValueType > ( ) ) ;
storm : : storage : : SparseMatrix < ValueType > transposedMatrix ( rateMatrix ) ;
storm : : storage : : SparseMatrix < ValueType > transposedMatrix ( rateMatrix ) ;
transposedMatrix . makeRowsAbsorbing ( psiStates ) ;
transposedMatrix . makeRowsAbsorbing ( psiStates ) ;
@ -676,7 +676,7 @@ namespace storm {
//storm::storage::BitVector relevantStates = statesWithProbabilityGreater0 & ~initialStates;//phiStates | psiStates;
//storm::storage::BitVector relevantStates = statesWithProbabilityGreater0 & ~initialStates;//phiStates | psiStates;
storm : : storage : : BitVector relevantStates ( numberOfStates , true ) ;
storm : : storage : : BitVector relevantStates ( numberOfStates , true ) ;
STORM_LOG_INFO ( relevantStates . getNumberOfSetBits ( ) < < " relevant states. " ) ;
STORM_LOG_DEBUG ( relevantStates . getNumberOfSetBits ( ) < < " relevant states. " ) ;
if ( ! relevantStates . empty ( ) ) {
if ( ! relevantStates . empty ( ) ) {
// Find the maximal rate of all relevant states to take it as the uniformization rate.
// Find the maximal rate of all relevant states to take it as the uniformization rate.
@ -712,17 +712,14 @@ namespace storm {
// Finally compute the transient probabilities.
// Finally compute the transient probabilities.
std : : vector < ValueType > subresult = computeTransientProbabilities < ValueType > ( env , uniformizedMatrix , nullptr , timeBound , uniformizationRate , values ) ;
std : : vector < ValueType > subresult = computeTransientProbabilities < ValueType > ( env , uniformizedMatrix , nullptr , timeBound , uniformizationRate , values ) ;
result = std : : vector < ValueType > ( numberOfStates , storm : : utility : : zero < ValueType > ( ) ) ;
storm : : utility : : vector : : setVectorValues ( result , relevantStates , subresult ) ;
storm : : utility : : vector : : setVectorValues ( result , relevantStates , subresult ) ;
} else {
result = std : : vector < ValueType > ( numberOfStates , storm : : utility : : zero < ValueType > ( ) ) ;
}
}
return result ;
return result ;
}
}
template < typename ValueType , typename std : : enable_if < ! storm : : NumberTraits < ValueType > : : SupportsExponential , int > : : type >
template < typename ValueType , typename std : : enable_if < ! storm : : NumberTraits < ValueType > : : SupportsExponential , int > : : type >
std : : vector < ValueType > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & , storm : : storage : : SparseMatrix < ValueType > const & , storm : : storage : : SparseMatrix < ValueType > const & , storm : : storage : : BitVector const & , storm : : storage : : BitVector const & , storm : : storage : : BitVector const & , std : : vector < ValueType > const & , double ) {
std : : vector < ValueType > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & , storm : : storage : : SparseMatrix < ValueType > const & , storm : : storage : : BitVector const & , storm : : storage : : BitVector const & , storm : : storage : : BitVector const & , std : : vector < ValueType > const & , double ) {
STORM_LOG_THROW ( false , storm : : exceptions : : InvalidOperationException , " Computing bounded until probabilities is unsupported for this value type. " ) ;
STORM_LOG_THROW ( false , storm : : exceptions : : InvalidOperationException , " Computing bounded until probabilities is unsupported for this value type. " ) ;
}
}
@ -882,7 +879,7 @@ namespace storm {
template std : : vector < double > SparseCtmcCslHelper : : computeCumulativeRewards ( Environment const & env , storm : : solver : : SolveGoal < double > & & goal , storm : : storage : : SparseMatrix < double > const & rateMatrix , std : : vector < double > const & exitRateVector , storm : : models : : sparse : : StandardRewardModel < double > const & rewardModel , double timeBound ) ;
template std : : vector < double > SparseCtmcCslHelper : : computeCumulativeRewards ( Environment const & env , storm : : solver : : SolveGoal < double > & & goal , storm : : storage : : SparseMatrix < double > const & rateMatrix , std : : vector < double > const & exitRateVector , storm : : models : : sparse : : StandardRewardModel < double > const & rewardModel , double timeBound ) ;
template std : : vector < double > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & env , storm : : storage : : SparseMatrix < double > const & rateMatrix , storm : : storage : : SparseMatrix < double > const & backwardTransitions , storm : : storage : : BitVector const & initialStates , storm : : storage : : BitVector const & phiStates , storm : : storage : : BitVector const & psiStates , std : : vector < double > const & exitRates , double timeBound ) ;
template std : : vector < double > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & env , storm : : storage : : SparseMatrix < double > const & rateMatrix , storm : : storage : : BitVector const & initialStates , storm : : storage : : BitVector const & phiStates , storm : : storage : : BitVector const & psiStates , std : : vector < double > const & exitRates , double timeBound ) ;
template storm : : storage : : SparseMatrix < double > SparseCtmcCslHelper : : computeUniformizedMatrix ( storm : : storage : : SparseMatrix < double > const & rateMatrix , storm : : storage : : BitVector const & maybeStates , double uniformizationRate , std : : vector < double > const & exitRates ) ;
template storm : : storage : : SparseMatrix < double > SparseCtmcCslHelper : : computeUniformizedMatrix ( storm : : storage : : SparseMatrix < double > const & rateMatrix , storm : : storage : : BitVector const & maybeStates , double uniformizationRate , std : : vector < double > const & exitRates ) ;
@ -925,8 +922,8 @@ namespace storm {
template std : : vector < storm : : RationalNumber > SparseCtmcCslHelper : : computeCumulativeRewards ( Environment const & env , storm : : solver : : SolveGoal < storm : : RationalNumber > & & goal , storm : : storage : : SparseMatrix < storm : : RationalNumber > const & rateMatrix , std : : vector < storm : : RationalNumber > const & exitRateVector , storm : : models : : sparse : : StandardRewardModel < storm : : RationalNumber > const & rewardModel , double timeBound ) ;
template std : : vector < storm : : RationalNumber > SparseCtmcCslHelper : : computeCumulativeRewards ( Environment const & env , storm : : solver : : SolveGoal < storm : : RationalNumber > & & goal , storm : : storage : : SparseMatrix < storm : : RationalNumber > const & rateMatrix , std : : vector < storm : : RationalNumber > const & exitRateVector , storm : : models : : sparse : : StandardRewardModel < storm : : RationalNumber > const & rewardModel , double timeBound ) ;
template std : : vector < storm : : RationalFunction > SparseCtmcCslHelper : : computeCumulativeRewards ( Environment const & env , storm : : solver : : SolveGoal < storm : : RationalFunction > & & goal , storm : : storage : : SparseMatrix < storm : : RationalFunction > const & rateMatrix , std : : vector < storm : : RationalFunction > const & exitRateVector , storm : : models : : sparse : : StandardRewardModel < storm : : RationalFunction > const & rewardModel , double timeBound ) ;
template std : : vector < storm : : RationalFunction > SparseCtmcCslHelper : : computeCumulativeRewards ( Environment const & env , storm : : solver : : SolveGoal < storm : : RationalFunction > & & goal , storm : : storage : : SparseMatrix < storm : : RationalFunction > const & rateMatrix , std : : vector < storm : : RationalFunction > const & exitRateVector , storm : : models : : sparse : : StandardRewardModel < storm : : RationalFunction > const & rewardModel , double timeBound ) ;
template std : : vector < storm : : RationalNumber > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & env , storm : : storage : : SparseMatrix < storm : : RationalNumber > const & rateMatrix , storm : : storage : : SparseMatrix < storm : : RationalNumber > const & backwardTransitions , storm : : storage : : BitVector const & initialStates , storm : : storage : : BitVector const & phiStates , storm : : storage : : BitVector const & psiStates , std : : vector < storm : : RationalNumber > const & exitRates , double timeBound ) ;
template std : : vector < storm : : RationalFunction > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & env , storm : : storage : : SparseMatrix < storm : : RationalFunction > const & rateMatrix , storm : : storage : : SparseMatrix < storm : : RationalFunction > const & backwardTransitions , storm : : storage : : BitVector const & initialStates , storm : : storage : : BitVector const & phiStates , storm : : storage : : BitVector const & psiStates , std : : vector < storm : : RationalFunction > const & exitRates , double timeBound ) ;
template std : : vector < storm : : RationalNumber > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & env , storm : : storage : : SparseMatrix < storm : : RationalNumber > const & rateMatrix , storm : : storage : : BitVector const & initialStates , storm : : storage : : BitVector const & phiStates , storm : : storage : : BitVector const & psiStates , std : : vector < storm : : RationalNumber > const & exitRates , double timeBound ) ;
template std : : vector < storm : : RationalFunction > SparseCtmcCslHelper : : computeAllTransientProbabilities ( Environment const & env , storm : : storage : : SparseMatrix < storm : : RationalFunction > const & rateMatrix , storm : : storage : : BitVector const & initialStates , storm : : storage : : BitVector const & phiStates , storm : : storage : : BitVector const & psiStates , std : : vector < storm : : RationalFunction > const & exitRates , double timeBound ) ;
template storm : : storage : : SparseMatrix < double > SparseCtmcCslHelper : : computeProbabilityMatrix ( storm : : storage : : SparseMatrix < double > const & rateMatrix , std : : vector < double > const & exitRates ) ;
template storm : : storage : : SparseMatrix < double > SparseCtmcCslHelper : : computeProbabilityMatrix ( storm : : storage : : SparseMatrix < double > const & rateMatrix , std : : vector < double > const & exitRates ) ;
template storm : : storage : : SparseMatrix < storm : : RationalNumber > SparseCtmcCslHelper : : computeProbabilityMatrix ( storm : : storage : : SparseMatrix < storm : : RationalNumber > const & rateMatrix , std : : vector < storm : : RationalNumber > const & exitRates ) ;
template storm : : storage : : SparseMatrix < storm : : RationalNumber > SparseCtmcCslHelper : : computeProbabilityMatrix ( storm : : storage : : SparseMatrix < storm : : RationalNumber > const & rateMatrix , std : : vector < storm : : RationalNumber > const & exitRates ) ;