Storm 1.13.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
Mdp.cpp
Go to the documentation of this file.
2
8
9namespace storm {
10namespace models {
11namespace symbolic {
12
13template<storm::dd::DdType Type, typename ValueType>
16 std::set<storm::expressions::Variable> const& rowVariables,
17 std::shared_ptr<storm::adapters::AddExpressionAdapter<Type, ValueType>> rowExpressionAdapter,
18 std::set<storm::expressions::Variable> const& columnVariables,
19 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs,
20 std::set<storm::expressions::Variable> const& nondeterminismVariables,
21 std::map<std::string, storm::expressions::Expression> labelToExpressionMap,
22 std::unordered_map<std::string, RewardModelType> const& rewardModels)
23 : NondeterministicModel<Type, ValueType>(storm::models::ModelType::Mdp, manager, reachableStates, initialStates, deadlockStates, transitionMatrix,
24 rowVariables, rowExpressionAdapter, columnVariables, rowColumnMetaVariablePairs, nondeterminismVariables,
25 labelToExpressionMap, rewardModels) {
26 // Intentionally left empty.
27}
28
29template<storm::dd::DdType Type, typename ValueType>
32 std::set<storm::expressions::Variable> const& rowVariables, std::set<storm::expressions::Variable> const& columnVariables,
33 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs,
34 std::set<storm::expressions::Variable> const& nondeterminismVariables, std::map<std::string, storm::dd::Bdd<Type>> labelToBddMap,
35 std::unordered_map<std::string, RewardModelType> const& rewardModels)
36 : NondeterministicModel<Type, ValueType>(storm::models::ModelType::Mdp, manager, reachableStates, initialStates, deadlockStates, transitionMatrix,
37 rowVariables, columnVariables, rowColumnMetaVariablePairs, nondeterminismVariables, labelToBddMap, rewardModels) {
38 // Intentionally left empty.
39}
40
41template<storm::dd::DdType Type, typename ValueType>
42template<typename NewValueType>
43std::shared_ptr<Mdp<Type, NewValueType>> Mdp<Type, ValueType>::toValueType() const {
44 typedef typename NondeterministicModel<Type, NewValueType>::RewardModelType NewRewardModelType;
45 std::unordered_map<std::string, NewRewardModelType> newRewardModels;
46
47 for (auto const& e : this->getRewardModels()) {
48 newRewardModels.emplace(e.first, e.second.template toValueType<NewValueType>());
49 }
50
51 auto newLabelToBddMap = this->getLabelToBddMap();
52 newLabelToBddMap.erase("init");
53 newLabelToBddMap.erase("deadlock");
54
55 return std::make_shared<Mdp<Type, NewValueType>>(this->getManagerAsSharedPointer(), this->getReachableStates(), this->getInitialStates(),
58 this->getNondeterminismVariables(), newLabelToBddMap, newRewardModels);
59}
60
61// Explicitly instantiate the template class.
63
66template std::shared_ptr<Mdp<storm::dd::DdType::Sylvan, double>> Mdp<storm::dd::DdType::Sylvan, storm::RationalNumber>::toValueType() const;
68
69} // namespace symbolic
70} // namespace models
71} // namespace storm
Mdp(storm::storage::SparseMatrix< double > const &transitionMatrix, storm::models::sparse::StateLabeling const &stateLabeling, std::unordered_map< std::string, StandardRewardModel< double > > const &rewardModels=std::unordered_map< std::string, StandardRewardModel< double > >(), ModelType type=ModelType::Mdp)
This class represents a discrete-time Markov decision process.
Definition Mdp.h:13
Mdp(Mdp< Type, ValueType > const &other)=default
std::shared_ptr< Mdp< Type, NewValueType > > toValueType() const
Definition Mdp.cpp:43
storm::dd::Add< Type, ValueType > const & getTransitionMatrix() const
Definition Model.cpp:173
storm::dd::Bdd< Type > const & getDeadlockStates() const
Definition Model.cpp:108
std::set< storm::expressions::Variable > const & getColumnVariables() const
Definition Model.cpp:193
std::shared_ptr< storm::dd::DdManager< Type > > const & getManagerAsSharedPointer() const
Definition Model.cpp:93
std::map< std::string, storm::dd::Bdd< Type > > const & getLabelToBddMap() const
Definition Model.cpp:229
storm::dd::Bdd< Type > const & getInitialStates() const
Definition Model.cpp:103
storm::dd::Add< Type, ValueType > transitionMatrix
Definition Model.h:393
std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > const & getRowColumnMetaVariablePairs() const
Definition Model.cpp:219
std::set< storm::expressions::Variable > const & getRowVariables() const
Definition Model.cpp:188
std::unordered_map< std::string, RewardModelType > & getRewardModels()
Definition Model.cpp:294
storm::dd::Bdd< Type > const & getReachableStates() const
Definition Model.cpp:98
virtual std::set< storm::expressions::Variable > const & getNondeterminismVariables() const override
Model< Type, ValueType >::RewardModelType RewardModelType
NondeterministicModel(NondeterministicModel< Type, double > const &other)=default