Storm 1.13.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
HybridInfiniteHorizonHelper.h
Go to the documentation of this file.
1#pragma once
3
5
8
12
13namespace storm {
14class Environment;
15
16namespace storage {
17template<typename ValueType>
18class SparseMatrix;
19class BitVector;
20} // namespace storage
21
22namespace modelchecker {
23namespace helper {
24
25template<typename ValueType, bool Nondeterministic>
27
31template<typename ValueType, storm::dd::DdType DdType, bool Nondeterministic>
32class HybridInfiniteHorizonHelper : public SingleValueModelCheckerHelper<ValueType, storm::models::GetModelRepresentation<DdType>::representation> {
33 public:
38
43 storm::dd::Bdd<DdType> const& markovianStates, storm::dd::Add<DdType, ValueType> const& _exitRates);
44
50 storm::dd::Add<DdType, ValueType> const& _exitRates);
51
56 std::unique_ptr<HybridQuantitativeCheckResult<DdType, ValueType>> computeLongRunAverageProbabilities(Environment const& env,
57 storm::dd::Bdd<DdType> const& psiStates);
58
63 std::unique_ptr<HybridQuantitativeCheckResult<DdType, ValueType>> computeLongRunAverageRewards(
65
66 protected:
70 bool isContinuousTime() const;
71
77 template<bool N = Nondeterministic, std::enable_if_t<N, int> = 0>
78 std::unique_ptr<SparseInfiniteHorizonHelper<ValueType, Nondeterministic>> createSparseHelper(
79 storm::storage::SparseMatrix<ValueType> const& transitionMatrix, storm::storage::BitVector const& markovianStates,
80 std::vector<ValueType> const& exitRates, storm::dd::Odd const& odd) const;
81 template<bool N = Nondeterministic, std::enable_if_t<!N, int> = 0>
82 std::unique_ptr<SparseInfiniteHorizonHelper<ValueType, Nondeterministic>> createSparseHelper(
83 storm::storage::SparseMatrix<ValueType> const& transitionMatrix, storm::storage::BitVector const& markovianStates,
84 std::vector<ValueType> const& exitRates, storm::dd::Odd const& odd) const;
85
86 private:
88 storm::dd::Add<DdType, ValueType> const& _transitionMatrix;
89 storm::dd::Bdd<DdType> const* _markovianStates;
90 storm::dd::Add<DdType, ValueType> const* _exitRates;
91};
92} // namespace helper
93} // namespace modelchecker
94} // namespace storm
std::unique_ptr< HybridQuantitativeCheckResult< DdType, ValueType > > computeLongRunAverageProbabilities(Environment const &env, storm::dd::Bdd< DdType > const &psiStates)
Computes the long run average probabilities, i.e., the fraction of the time we are in a psiState.
std::unique_ptr< SparseInfiniteHorizonHelper< ValueType, Nondeterministic > > createSparseHelper(storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::BitVector const &markovianStates, std::vector< ValueType > const &exitRates, storm::dd::Odd const &odd) const
HybridInfiniteHorizonHelper(storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix)
Initializes the helper for a discrete time model (MDP or DTMC).
std::unique_ptr< HybridQuantitativeCheckResult< DdType, ValueType > > computeLongRunAverageRewards(Environment const &env, storm::models::symbolic::StandardRewardModel< DdType, ValueType > const &rewardModel)
Computes the long run average rewards, i.e., the average reward collected per time unit.
Helper class for model checking queries that depend on the long run behavior of the (nondeterministic...
Base class for all symbolic models.
Definition Model.h:42
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
A class that holds a possibly non-square matrix in the compressed row storage format.