Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
MarkovAutomaton.h
Go to the documentation of this file.
1#pragma once
2
3#include <optional>
4
6
7namespace storm {
8namespace models {
9namespace symbolic {
10
14template<storm::dd::DdType Type, typename ValueType = double>
15class MarkovAutomaton : public NondeterministicModel<Type, ValueType> {
16 public:
18
23
42 MarkovAutomaton(std::shared_ptr<storm::dd::DdManager<Type>> manager, storm::dd::Bdd<Type> markovianMarker, storm::dd::Bdd<Type> reachableStates,
44 std::set<storm::expressions::Variable> const& rowVariables,
45 std::shared_ptr<storm::adapters::AddExpressionAdapter<Type, ValueType>> rowExpressionAdapter,
46 std::set<storm::expressions::Variable> const& columnVariables,
47 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs,
48 std::set<storm::expressions::Variable> const& nondeterminismVariables,
49 std::map<std::string, storm::expressions::Expression> labelToExpressionMap = std::map<std::string, storm::expressions::Expression>(),
50 std::unordered_map<std::string, RewardModelType> const& rewardModels = std::unordered_map<std::string, RewardModelType>());
51
70 MarkovAutomaton(std::shared_ptr<storm::dd::DdManager<Type>> manager, storm::dd::Bdd<Type> markovianMarker, storm::dd::Bdd<Type> reachableStates,
72 std::set<storm::expressions::Variable> const& rowVariables, std::set<storm::expressions::Variable> const& columnVariables,
73 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs,
74 std::set<storm::expressions::Variable> const& nondeterminismVariables,
75 std::map<std::string, storm::dd::Bdd<Type>> labelToBddMap = std::map<std::string, storm::dd::Bdd<Type>>(),
76 std::unordered_map<std::string, RewardModelType> const& rewardModels = std::unordered_map<std::string, RewardModelType>(),
77 std::optional<storm::dd::Add<Type, ValueType>> exitRateVector = std::nullopt);
78
83
84 bool hasHybridStates() const;
85 bool isClosed();
86
88
90
91 template<typename NewValueType>
92 std::shared_ptr<MarkovAutomaton<Type, NewValueType>> toValueType() const;
93
94 private:
99 void computeMarkovianChoicesAndStates();
100
104 void convertToExitRatesAndProbabilities();
105
106 storm::dd::Bdd<Type> markovianMarker;
107 storm::dd::Bdd<Type> markovianStates;
108 storm::dd::Bdd<Type> markovianChoices;
109 storm::dd::Bdd<Type> probabilisticStates;
110 storm::dd::Add<Type, ValueType> exitRateVector;
111};
112
113} // namespace symbolic
114} // namespace models
115} // namespace storm
MarkovAutomaton(std::shared_ptr< storm::dd::DdManager< Type > > manager, storm::dd::Bdd< Type > markovianMarker, storm::dd::Bdd< Type > reachableStates, storm::dd::Bdd< Type > initialStates, storm::dd::Bdd< Type > deadlockStates, storm::dd::Add< Type, ValueType > transitionMatrix, std::set< storm::expressions::Variable > const &rowVariables, std::set< storm::expressions::Variable > const &columnVariables, std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > const &rowColumnMetaVariablePairs, std::set< storm::expressions::Variable > const &nondeterminismVariables, std::map< std::string, storm::dd::Bdd< Type > > labelToBddMap=std::map< std::string, storm::dd::Bdd< Type > >(), std::unordered_map< std::string, RewardModelType > const &rewardModels=std::unordered_map< std::string, RewardModelType >(), std::optional< storm::dd::Add< Type, ValueType > > exitRateVector=std::nullopt)
Constructs a model from the given data.
storm::dd::Bdd< Type > const & getProbabilisticStates() const
MarkovAutomaton(std::shared_ptr< storm::dd::DdManager< Type > > manager, storm::dd::Bdd< Type > markovianMarker, storm::dd::Bdd< Type > reachableStates, storm::dd::Bdd< Type > initialStates, storm::dd::Bdd< Type > deadlockStates, storm::dd::Add< Type, ValueType > transitionMatrix, std::set< storm::expressions::Variable > const &rowVariables, std::shared_ptr< storm::adapters::AddExpressionAdapter< Type, ValueType > > rowExpressionAdapter, std::set< storm::expressions::Variable > const &columnVariables, std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > const &rowColumnMetaVariablePairs, std::set< storm::expressions::Variable > const &nondeterminismVariables, std::map< std::string, storm::expressions::Expression > labelToExpressionMap=std::map< std::string, storm::expressions::Expression >(), std::unordered_map< std::string, RewardModelType > const &rewardModels=std::unordered_map< std::string, RewardModelType >())
Constructs a model from the given data.
MarkovAutomaton & operator=(MarkovAutomaton< Type, ValueType > const &other)=default
MarkovAutomaton< Type, ValueType > close()
storm::dd::Bdd< Type > const & getMarkovianStates() const
NondeterministicModel< Type, ValueType >::RewardModelType RewardModelType
MarkovAutomaton & operator=(MarkovAutomaton< Type, ValueType > &&other)=default
MarkovAutomaton(MarkovAutomaton< Type, ValueType > const &other)=default
storm::dd::Bdd< Type > const & getMarkovianMarker() const
std::shared_ptr< MarkovAutomaton< Type, NewValueType > > toValueType() const
storm::dd::Add< Type, ValueType > const & getExitRateVector() const
storm::dd::Bdd< Type > const & getMarkovianChoices() const
MarkovAutomaton(MarkovAutomaton< Type, ValueType > &&other)=default
storm::dd::Add< Type, ValueType > transitionMatrix
Definition Model.h:393
Model< Type, ValueType >::RewardModelType RewardModelType
NondeterministicModel(NondeterministicModel< Type, double > const &other)=default