Storm
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>
26class SparseInfiniteHorizonHelper;
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
Helper class for model checking queries that depend on the long run behavior of the (nondeterministic...
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
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 for model checking queries where we are interested in (optimizing) a single value per state.
Base class for all symbolic models.
Definition Model.h:46
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:18
A class that holds a possibly non-square matrix in the compressed row storage format.
storage::BitVector BitVector
LabParser.cpp.
Definition cli.cpp:18