Stefan Pranger
4 years ago
2 changed files with 106 additions and 0 deletions
@ -0,0 +1,49 @@ |
|||||
|
#include "storm/models/sparse/Smg.h"
|
||||
|
|
||||
|
#include "storm/exceptions/InvalidArgumentException.h"
|
||||
|
#include "storm/utility/constants.h"
|
||||
|
#include "storm/utility/vector.h"
|
||||
|
#include "storm/adapters/RationalFunctionAdapter.h"
|
||||
|
|
||||
|
#include "storm/models/sparse/StandardRewardModel.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace models { |
||||
|
namespace sparse { |
||||
|
|
||||
|
template <typename ValueType, typename RewardModelType> |
||||
|
Smg<ValueType, RewardModelType>::Smg(storm::storage::SparseMatrix<ValueType> const& transitionMatrix, storm::models::sparse::StateLabeling const& stateLabeling, |
||||
|
std::unordered_map<std::string, RewardModelType> const& rewardModels, ModelType type) |
||||
|
: Smg<ValueType, RewardModelType>(storm::storage::sparse::ModelComponents<ValueType, RewardModelType>(transitionMatrix, stateLabeling, rewardModels), type) { |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
template <typename ValueType, typename RewardModelType> |
||||
|
Smg<ValueType, RewardModelType>::Smg(storm::storage::SparseMatrix<ValueType>&& transitionMatrix, storm::models::sparse::StateLabeling&& stateLabeling, |
||||
|
std::unordered_map<std::string, RewardModelType>&& rewardModels, ModelType type) |
||||
|
: Smg<ValueType, RewardModelType>(storm::storage::sparse::ModelComponents<ValueType, RewardModelType>(std::move(transitionMatrix), std::move(stateLabeling), std::move(rewardModels)), type) { |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
template <typename ValueType, typename RewardModelType> |
||||
|
Smg<ValueType, RewardModelType>::Smg(storm::storage::sparse::ModelComponents<ValueType, RewardModelType> const& components, ModelType type) |
||||
|
: NondeterministicModel<ValueType, RewardModelType>(type, components) { |
||||
|
assert(type == storm::models::ModelType::Smg); |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
template <typename ValueType, typename RewardModelType> |
||||
|
Smg<ValueType, RewardModelType>::Smg(storm::storage::sparse::ModelComponents<ValueType, RewardModelType>&& components, ModelType type) |
||||
|
: NondeterministicModel<ValueType, RewardModelType>(type, std::move(components)) { |
||||
|
assert(type == storm::models::ModelType::Smg); |
||||
|
// Intentionally left empty
|
||||
|
} |
||||
|
|
||||
|
template class Smg<double>; |
||||
|
template class Smg<storm::RationalNumber>; |
||||
|
|
||||
|
template class Smg<double, storm::models::sparse::StandardRewardModel<storm::Interval>>; |
||||
|
template class Smg<storm::RationalFunction>; |
||||
|
} // namespace sparse
|
||||
|
} // namespace models
|
||||
|
} // namespace storm
|
@ -0,0 +1,57 @@ |
|||||
|
#ifndef STORM_MODELS_SPARSE_SMG_H_ |
||||
|
#define STORM_MODELS_SPARSE_SMG_H_ |
||||
|
|
||||
|
#include "storm/models/sparse/NondeterministicModel.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace models { |
||||
|
namespace sparse { |
||||
|
|
||||
|
/*! |
||||
|
* This class represents a stochastic multiplayer game. |
||||
|
*/ |
||||
|
template<class ValueType, typename RewardModelType = StandardRewardModel<ValueType>> |
||||
|
class Smg : public NondeterministicModel<ValueType, RewardModelType> { |
||||
|
public: |
||||
|
/*! |
||||
|
* Constructs a model from the given data. |
||||
|
* |
||||
|
* @param transitionMatrix The matrix representing the transitions in the model. |
||||
|
* @param stateLabeling The labeling of the states. |
||||
|
* @param rewardModels A mapping of reward model names to reward models. |
||||
|
*/ |
||||
|
Smg(storm::storage::SparseMatrix<ValueType> const& transitionMatrix, |
||||
|
storm::models::sparse::StateLabeling const& stateLabeling, |
||||
|
std::unordered_map<std::string, RewardModelType> const& rewardModels = std::unordered_map<std::string, RewardModelType>(), ModelType type = ModelType::Smg); |
||||
|
|
||||
|
/*! |
||||
|
* Constructs a model by moving the given data. |
||||
|
* |
||||
|
* @param transitionMatrix The matrix representing the transitions in the model. |
||||
|
* @param stateLabeling The labeling of the states. |
||||
|
* @param rewardModels A mapping of reward model names to reward models. |
||||
|
*/ |
||||
|
Smg(storm::storage::SparseMatrix<ValueType>&& transitionMatrix, |
||||
|
storm::models::sparse::StateLabeling&& stateLabeling, |
||||
|
std::unordered_map<std::string, RewardModelType>&& rewardModels = std::unordered_map<std::string, RewardModelType>(), ModelType type = ModelType::Smg); |
||||
|
|
||||
|
/*! |
||||
|
* Constructs a model from the given data. |
||||
|
* |
||||
|
* @param components The components for this model. |
||||
|
*/ |
||||
|
Smg(storm::storage::sparse::ModelComponents<ValueType, RewardModelType> const& components, ModelType type = ModelType::Smg); |
||||
|
Smg(storm::storage::sparse::ModelComponents<ValueType, RewardModelType>&& components, ModelType type = ModelType::Smg); |
||||
|
|
||||
|
Smg(Smg<ValueType, RewardModelType> const& other) = default; |
||||
|
Smg& operator=(Smg<ValueType, RewardModelType> const& other) = default; |
||||
|
|
||||
|
Smg(Smg<ValueType, RewardModelType>&& other) = default; |
||||
|
Smg& operator=(Smg<ValueType, RewardModelType>&& other) = default; |
||||
|
}; |
||||
|
|
||||
|
} // namespace sparse |
||||
|
} // namespace models |
||||
|
} // namespace storm |
||||
|
|
||||
|
#endif /* STORM_MODELS_SPARSE_SMG_H_ */ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue