/* * TransitionReward.h * * Created on: Jan 10, 2013 * Author: Christian Dehnert */ #ifndef STORM_IR_TRANSITIONREWARD_H_ #define STORM_IR_TRANSITIONREWARD_H_ #include "expressions/BaseExpression.h" #include namespace storm { namespace ir { /*! * A class representing a transition reward. */ class TransitionReward { public: /*! * Default constructor. Creates an empty transition reward. */ TransitionReward(); /*! * Creates a transition reward for the transitions with the given name emanating from states * satisfying the given expression with the value given by another expression. * @param commandName the name of the command that obtains this reward. * @param statePredicate the predicate that needs to hold before taking a transition with the * previously specified name in order to obtain the reward. * @param rewardValue an expression specifying the values of the rewards to attach to the * transitions. */ TransitionReward(std::string commandName, std::shared_ptr statePredicate, std::shared_ptr rewardValue); /*! * Retrieves a string representation of this transition reward. * @returns a string representation of this transition reward. */ std::string toString() const; /*! * Retrieves reward for given transition. * Returns reward value if source state fulfills predicate and the transition is labeled correctly, zero otherwise. */ double getReward(std::string const & label, std::pair, std::vector> const * state) const; private: // The name of the command this transition-based reward is attached to. std::string commandName; // A predicate that needs to be satisfied by states for the reward to be obtained (by taking // a corresponding command transition). std::shared_ptr statePredicate; // The expression specifying the value of the reward obtained along the transitions. std::shared_ptr rewardValue; }; } // namespace ir } // namespace storm #endif /* STORM_IR_TRANSITIONREWARD_H_ */