#include "storm/builder/RewardModelBuilder.h" #include "storm/adapters/RationalFunctionAdapter.h" #include "storm/models/sparse/StandardRewardModel.h" #include "storm/utility/macros.h" #include "storm/exceptions/InvalidArgumentException.h" namespace storm { namespace builder { template RewardModelBuilder::RewardModelBuilder(RewardModelInformation const& rewardModelInformation) : rewardModelName(rewardModelInformation.getName()), stateRewards(rewardModelInformation.hasStateRewards()), stateActionRewards(rewardModelInformation.hasStateActionRewards()), stateRewardVector(), stateActionRewardVector() { STORM_LOG_THROW(!rewardModelInformation.hasTransitionRewards(), storm::exceptions::InvalidArgumentException, "Unable to treat transition rewards."); } template storm::models::sparse::StandardRewardModel RewardModelBuilder::build(uint_fast64_t rowCount, uint_fast64_t, uint_fast64_t rowGroupCount) { boost::optional> optionalStateRewardVector; if (hasStateRewards()) { stateRewardVector.resize(rowGroupCount); optionalStateRewardVector = std::move(stateRewardVector); } boost::optional> optionalStateActionRewardVector; if (hasStateActionRewards()) { stateActionRewardVector.resize(rowCount); optionalStateActionRewardVector = std::move(stateActionRewardVector); } return storm::models::sparse::StandardRewardModel(std::move(optionalStateRewardVector), std::move(optionalStateActionRewardVector)); } template std::string const& RewardModelBuilder::getName() const { return rewardModelName; } template void RewardModelBuilder::addStateReward(ValueType const& value) { stateRewardVector.push_back(value); } template void RewardModelBuilder::addStateActionReward(ValueType const& value) { stateActionRewardVector.push_back(value); } template bool RewardModelBuilder::hasStateRewards() const { return stateRewards; } template bool RewardModelBuilder::hasStateActionRewards() const { return stateActionRewards; } template class RewardModelBuilder; template class RewardModelBuilder; template class RewardModelBuilder; template class RewardModelBuilder; } }