60 template<
typename PMT = ParametricSparseModelType>
61 typename std::enable_if<std::is_same<PMT, storm::models::sparse::Dtmc<typename ParametricSparseModelType::ValueType>>::value ||
62 std::is_same<PMT, storm::models::sparse::Mdp<typename ParametricSparseModelType::ValueType>>::value>::type
63 initializeModelSpecificData(PMT
const& parametricModel) {
65 buildDummyMatrix(parametricModel.getTransitionMatrix()));
66 components.stateLabeling = parametricModel.getStateLabeling();
67 components.rewardModels = buildDummyRewardModels(parametricModel.getRewardModels());
68 components.choiceLabeling = parametricModel.getOptionalChoiceLabeling();
70 this->instantiatedModel = std::make_shared<ConstantSparseModelType>(std::move(components));
73 template<
typename PMT = ParametricSparseModelType>
74 typename std::enable_if<std::is_same<PMT, storm::models::sparse::Ctmc<typename ParametricSparseModelType::ValueType>>::value>::type
75 initializeModelSpecificData(PMT
const& parametricModel) {
77 buildDummyMatrix(parametricModel.getTransitionMatrix()));
78 components.stateLabeling = parametricModel.getStateLabeling();
79 components.rewardModels = buildDummyRewardModels(parametricModel.getRewardModels());
80 components.exitRates = std::vector<ConstantType>(parametricModel.getExitRateVector().size(), storm::utility::one<ConstantType>());
81 components.rateTransitions =
true;
82 components.choiceLabeling = parametricModel.getOptionalChoiceLabeling();
83 this->instantiatedModel = std::make_shared<ConstantSparseModelType>(std::move(components));
85 initializeVectorMapping(this->instantiatedModel->getExitRateVector(), this->functions, this->vectorMapping, parametricModel.getExitRateVector());
88 template<
typename PMT = ParametricSparseModelType>
89 typename std::enable_if<std::is_same<PMT, storm::models::sparse::MarkovAutomaton<typename ParametricSparseModelType::ValueType>>::value>::type
90 initializeModelSpecificData(PMT
const& parametricModel) {
92 buildDummyMatrix(parametricModel.getTransitionMatrix()));
93 components.stateLabeling = parametricModel.getStateLabeling();
94 components.rewardModels = buildDummyRewardModels(parametricModel.getRewardModels());
95 components.exitRates = std::vector<ConstantType>(parametricModel.getExitRates().size(), storm::utility::one<ConstantType>());
96 components.markovianStates = parametricModel.getMarkovianStates();
97 components.choiceLabeling = parametricModel.getOptionalChoiceLabeling();
98 this->instantiatedModel = std::make_shared<ConstantSparseModelType>(std::move(components));
100 initializeVectorMapping(this->instantiatedModel->getExitRates(), this->functions, this->vectorMapping, parametricModel.getExitRates());
103 template<
typename PMT = ParametricSparseModelType>
104 typename std::enable_if<std::is_same<PMT, storm::models::sparse::StochasticTwoPlayerGame<typename ParametricSparseModelType::ValueType>>::value>::type
105 initializeModelSpecificData(PMT
const& parametricModel) {
107 buildDummyMatrix(parametricModel.getTransitionMatrix()));
108 components.stateLabeling = parametricModel.getStateLabeling();
109 components.rewardModels = buildDummyRewardModels(parametricModel.getRewardModels());
110 components.player1Matrix = parametricModel.getPlayer1Matrix();
111 components.choiceLabeling = parametricModel.getOptionalChoiceLabeling();
113 this->instantiatedModel = std::make_shared<ConstantSparseModelType>(std::move(components));
116 template<
typename PMT = ParametricSparseModelType>
117 typename std::enable_if<std::is_same<PMT, ConstantSparseModelType>::value>::type instantiate_helper(
119 for (
auto& functionResult : this->functions) {
124 template<
typename PMT = ParametricSparseModelType>
125 typename std::enable_if<!std::is_same<PMT, ConstantSparseModelType>::value>::type instantiate_helper(
127 for (
auto& functionResult : this->functions) {
142 std::unordered_map<std::string, typename ConstantSparseModelType::RewardModelType> buildDummyRewardModels(
143 std::unordered_map<std::string, typename ParametricSparseModelType::RewardModelType>
const& parametricRewardModel)
const;
169 void initializeVectorMapping(std::vector<ConstantType>& constantVector, std::unordered_map<ParametricType, ConstantType>& functions,
170 std::vector<std::pair<
typename std::vector<ConstantType>::iterator,
ConstantType*>>& mapping,
171 std::vector<ParametricType>
const& parametricVector)
const;
174 std::shared_ptr<ConstantSparseModelType> instantiatedModel;
176 std::unordered_map<ParametricType, ConstantType> functions;
178 std::vector<std::pair<typename storm::storage::SparseMatrix<ConstantType>::iterator,
ConstantType*>> matrixMapping;
180 std::vector<std::pair<typename std::vector<ConstantType>::iterator,
ConstantType*>> vectorMapping;