#include "storm/models/sparse/Pomdp.h" namespace storm { namespace models { namespace sparse { template Pomdp::Pomdp(storm::storage::SparseMatrix const &transitionMatrix, storm::models::sparse::StateLabeling const &stateLabeling, std::unordered_map const &rewardModels) : Mdp(transitionMatrix, stateLabeling, rewardModels, storm::models::ModelType::Pomdp) { // Intentionally left blank. } template Pomdp::Pomdp(storm::storage::SparseMatrix &&transitionMatrix, storm::models::sparse::StateLabeling &&stateLabeling, std::unordered_map &&rewardModels) : Mdp(transitionMatrix, stateLabeling, rewardModels, storm::models::ModelType::Pomdp) { // Intentionally left empty. } template Pomdp::Pomdp(storm::storage::sparse::ModelComponents const &components) : Mdp(components, storm::models::ModelType::Pomdp), observations(components.observabilityClasses.get()) { computeNrObservations(); } template Pomdp::Pomdp(storm::storage::sparse::ModelComponents &&components): Mdp(components, storm::models::ModelType::Pomdp), observations(components.observabilityClasses.get()) { computeNrObservations(); } template void Pomdp::printModelInformationToStream(std::ostream& out) const { this->printModelInformationHeaderToStream(out); out << "Choices: \t" << this->getNumberOfChoices() << std::endl; out << "Observations: \t" << this->nrObservations << std::endl; this->printModelInformationFooterToStream(out); } template void Pomdp::computeNrObservations() { uint64_t highestEntry = 0; for (uint32_t entry : observations) { if (entry > highestEntry) { highestEntry = entry; } } nrObservations = highestEntry; // In debug mode, ensure that every observability is used. } template class Pomdp; template class Pomdp; template class Pomdp>; template class Pomdp; } } }