diff --git a/src/models/sparse/Model.cpp b/src/models/sparse/Model.cpp index fe2127679..10e4ecbd8 100644 --- a/src/models/sparse/Model.cpp +++ b/src/models/sparse/Model.cpp @@ -90,7 +90,7 @@ namespace storm { } template - RewardModelType& Model::getRewardModel(std::string const& rewardModelName) { + RewardModelType& Model::rewardModel(std::string const& rewardModelName) { assert(this->hasRewardModel(rewardModelName)); return this->rewardModels.find(rewardModelName)->second; } diff --git a/src/models/sparse/Model.h b/src/models/sparse/Model.h index 01b1932e1..79f2ef9e4 100644 --- a/src/models/sparse/Model.h +++ b/src/models/sparse/Model.h @@ -268,7 +268,7 @@ namespace storm { protected: - RewardModelType & getRewardModel(std::string const& rewardModelName); + RewardModelType & rewardModel(std::string const& rewardModelName); /*! * Sets the transition matrix of the model. * diff --git a/src/models/sparse/StandardRewardModel.cpp b/src/models/sparse/StandardRewardModel.cpp index befc06aa6..762836ebb 100644 --- a/src/models/sparse/StandardRewardModel.cpp +++ b/src/models/sparse/StandardRewardModel.cpp @@ -82,7 +82,15 @@ namespace storm { assert(choiceIndex < this->optionalStateActionRewardVector.get().size()); return this->optionalStateActionRewardVector.get()[choiceIndex]; } - + + template + template + void StandardRewardModel::setStateActionReward(uint_fast64_t choiceIndex, T const &newValue) { + assert(this->hasStateActionRewards()); + assert(choiceIndex < this->optionalStateActionRewardVector.get().size()); + this->optionalStateActionRewardVector.get()[choiceIndex] = newValue; + } + template boost::optional> const& StandardRewardModel::getOptionalStateActionRewardVector() const { return this->optionalStateActionRewardVector; @@ -258,6 +266,7 @@ namespace storm { template std::vector StandardRewardModel::getTotalRewardVector(uint_fast64_t numberOfRows, storm::storage::SparseMatrix const& transitionMatrix, storm::storage::BitVector const& filter) const; template std::vector StandardRewardModel::getTotalRewardVector(storm::storage::SparseMatrix const& transitionMatrix, std::vector const& weights) const; template void StandardRewardModel::reduceToStateBasedRewards(storm::storage::SparseMatrix const& transitionMatrix, bool reduceToStateRewards); + template void StandardRewardModel::setStateActionReward(uint_fast64_t choiceIndex, double const & newValue); template class StandardRewardModel; template std::ostream& operator<<(std::ostream& out, StandardRewardModel const& rewardModel); @@ -265,6 +274,7 @@ namespace storm { template std::vector StandardRewardModel::getTotalRewardVector(storm::storage::SparseMatrix const& transitionMatrix) const; template std::vector StandardRewardModel::getTotalRewardVector(storm::storage::SparseMatrix const& transitionMatrix, std::vector const& weights) const; template void StandardRewardModel::reduceToStateBasedRewards(storm::storage::SparseMatrix const& transitionMatrix, bool reduceToStateRewards); + template void StandardRewardModel::setStateActionReward(uint_fast64_t choiceIndex, float const & newValue); template class StandardRewardModel; template std::ostream& operator<<(std::ostream& out, StandardRewardModel const& rewardModel); @@ -273,12 +283,15 @@ namespace storm { template std::vector StandardRewardModel::getTotalRewardVector(storm::storage::SparseMatrix const& transitionMatrix) const; template std::vector StandardRewardModel::getTotalRewardVector(storm::storage::SparseMatrix const& transitionMatrix, std::vector const& weights) const; template void StandardRewardModel::reduceToStateBasedRewards(storm::storage::SparseMatrix const& transitionMatrix, bool reduceToStateRewards); + template void StandardRewardModel::setStateActionReward(uint_fast64_t choiceIndex, storm::RationalFunction const & newValue); template class StandardRewardModel; template std::ostream& operator<<(std::ostream& out, StandardRewardModel const& rewardModel); template std::vector StandardRewardModel::getTotalRewardVector(uint_fast64_t numberOfRows, storm::storage::SparseMatrix const& transitionMatrix, storm::storage::BitVector const& filter) const; template std::vector StandardRewardModel::getTotalRewardVector(storm::storage::SparseMatrix const& transitionMatrix) const; template std::vector StandardRewardModel::getTotalRewardVector(storm::storage::SparseMatrix const& transitionMatrix, std::vector const& weights) const; + template void StandardRewardModel::setStateActionReward(uint_fast64_t choiceIndex, double const & newValue); + template void StandardRewardModel::setStateActionReward(uint_fast64_t choiceIndex, storm::Interval const & newValue); template void StandardRewardModel::reduceToStateBasedRewards(storm::storage::SparseMatrix const& transitionMatrix, bool reduceToStateRewards); template class StandardRewardModel; template std::ostream& operator<<(std::ostream& out, StandardRewardModel const& rewardModel); diff --git a/src/models/sparse/StandardRewardModel.h b/src/models/sparse/StandardRewardModel.h index 144307e7c..64b63b36e 100644 --- a/src/models/sparse/StandardRewardModel.h +++ b/src/models/sparse/StandardRewardModel.h @@ -112,6 +112,12 @@ namespace storm { */ ValueType const& getStateActionReward(uint_fast64_t choiceIndex) const; + /*! + * Sets the state-action reward for the given choice + */ + template + void setStateActionReward(uint_fast64_t choiceIndex, T const& newValue); + /*! * Retrieves an optional value that contains the state-action reward vector if there is one. *