3 changed files with 266 additions and 0 deletions
-
101src/formula/abstract/CumulativeReward.h
-
102src/formula/abstract/InstantaneousReward.h
-
63src/formula/abstract/SteadyStateReward.h
@ -0,0 +1,101 @@ |
|||||
|
/* |
||||
|
* InstantaneousReward.h |
||||
|
* |
||||
|
* Created on: 26.12.2012 |
||||
|
* Author: Christian Dehnert |
||||
|
*/ |
||||
|
|
||||
|
#ifndef STORM_FORMULA_ABSTRACT_CUMULATIVEREWARD_H_ |
||||
|
#define STORM_FORMULA_ABSTRACT_CUMULATIVEREWARD_H_ |
||||
|
|
||||
|
#include "AbstractFormula.h" |
||||
|
#include "src/formula/AbstractFormulaChecker.h" |
||||
|
#include <string> |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace formula { |
||||
|
namespace abstract { |
||||
|
|
||||
|
/*! |
||||
|
* @brief |
||||
|
* Class for a Abstract (path) formula tree with a Cumulative Reward node as root. |
||||
|
* |
||||
|
* The subtrees are seen as part of the object and deleted with the object |
||||
|
* (this behavior can be prevented by setting them to NULL before deletion) |
||||
|
* |
||||
|
* @see AbstractPathFormula |
||||
|
* @see AbstractFormula |
||||
|
*/ |
||||
|
template <class T> |
||||
|
class CumulativeReward : public AbstractFormula<T> { |
||||
|
|
||||
|
public: |
||||
|
/*! |
||||
|
* Empty constructor |
||||
|
*/ |
||||
|
CumulativeReward() { |
||||
|
bound = 0; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* Constructor |
||||
|
* |
||||
|
* @param bound The time bound of the reward formula |
||||
|
*/ |
||||
|
CumulativeReward(T bound) { |
||||
|
this->bound = bound; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* Empty destructor. |
||||
|
*/ |
||||
|
virtual ~CumulativeReward() { |
||||
|
// Intentionally left empty. |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* @returns the time instance for the instantaneous reward operator |
||||
|
*/ |
||||
|
T getBound() const { |
||||
|
return bound; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* Sets the the time instance for the instantaneous reward operator |
||||
|
* |
||||
|
* @param bound the new bound. |
||||
|
*/ |
||||
|
void setBound(T bound) { |
||||
|
this->bound = bound; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* @returns a string representation of the formula |
||||
|
*/ |
||||
|
virtual std::string toString() const { |
||||
|
std::string result = "C <= "; |
||||
|
result += std::to_string(bound); |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* @brief Checks if all subtrees conform to some logic. |
||||
|
* |
||||
|
* As CumulativeReward objects have no subformulas, we return true here. |
||||
|
* |
||||
|
* @param checker Formula checker object. |
||||
|
* @return true |
||||
|
*/ |
||||
|
virtual bool conforms(const AbstractFormulaChecker<T>& checker) const { |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
private: |
||||
|
T bound; |
||||
|
}; |
||||
|
|
||||
|
} //namespace abstract |
||||
|
} //namespace formula |
||||
|
} //namespace storm |
||||
|
|
||||
|
#endif /* STORM_FORMULA_ABSTRACT_INSTANTANEOUSREWARD_H_ */ |
@ -0,0 +1,102 @@ |
|||||
|
/* |
||||
|
* InstantaneousReward.h |
||||
|
* |
||||
|
* Created on: 26.12.2012 |
||||
|
* Author: Christian Dehnert |
||||
|
*/ |
||||
|
|
||||
|
#ifndef STORM_FORMULA_ABSTRACT_INSTANTANEOUSREWARD_H_ |
||||
|
#define STORM_FORMULA_ABSTRACT_INSTANTANEOUSREWARD_H_ |
||||
|
|
||||
|
#include "AbstractFormula.h" |
||||
|
#include "src/formula/AbstractFormulaChecker.h" |
||||
|
#include "boost/integer/integer_mask.hpp" |
||||
|
#include <string> |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace formula { |
||||
|
namespace abstract { |
||||
|
|
||||
|
/*! |
||||
|
* @brief |
||||
|
* Class for a Abstract (path) formula tree with a Instantaneous Reward node as root. |
||||
|
* |
||||
|
* The subtrees are seen as part of the object and deleted with the object |
||||
|
* (this behavior can be prevented by setting them to NULL before deletion) |
||||
|
* |
||||
|
* @see AbstractPathFormula |
||||
|
* @see AbstractFormula |
||||
|
*/ |
||||
|
template <class T> |
||||
|
class InstantaneousReward : public AbstractFormula<T> { |
||||
|
|
||||
|
public: |
||||
|
/*! |
||||
|
* Empty constructor |
||||
|
*/ |
||||
|
InstantaneousReward() { |
||||
|
bound = 0; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* Constructor |
||||
|
* |
||||
|
* @param bound The time instance of the reward formula |
||||
|
*/ |
||||
|
InstantaneousReward(uint_fast64_t bound) { |
||||
|
this->bound = bound; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* Empty destructor. |
||||
|
*/ |
||||
|
virtual ~InstantaneousReward() { |
||||
|
// Intentionally left empty. |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* @returns the time instance for the instantaneous reward operator |
||||
|
*/ |
||||
|
uint_fast64_t getBound() const { |
||||
|
return bound; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* Sets the the time instance for the instantaneous reward operator |
||||
|
* |
||||
|
* @param bound the new bound. |
||||
|
*/ |
||||
|
void setBound(uint_fast64_t bound) { |
||||
|
this->bound = bound; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* @returns a string representation of the formula |
||||
|
*/ |
||||
|
virtual std::string toString() const { |
||||
|
std::string result = "I="; |
||||
|
result += std::to_string(bound); |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* @brief Checks if all subtrees conform to some logic. |
||||
|
* |
||||
|
* As InstantaneousReward formulas have no subformulas, we return true here. |
||||
|
* |
||||
|
* @param checker Formula checker object. |
||||
|
* @return true |
||||
|
*/ |
||||
|
virtual bool conforms(const AbstractFormulaChecker<T>& checker) const { |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
private: |
||||
|
uint_fast64_t bound; |
||||
|
}; |
||||
|
|
||||
|
} //namespace abstract |
||||
|
} //namespace formula |
||||
|
} //namespace storm |
||||
|
|
||||
|
#endif /* STORM_FORMULA_ABSTRACT_INSTANTANEOUSREWARD_H_ */ |
@ -0,0 +1,63 @@ |
|||||
|
/* |
||||
|
* SteadyStateReward.h |
||||
|
* |
||||
|
* Created on: 08.04.2013 |
||||
|
* Author: Thomas Heinemann |
||||
|
*/ |
||||
|
|
||||
|
#ifndef STORM_FORMULA_ABSTRACT_STEADYSTATEREWARD_H_ |
||||
|
#define STORM_FORMULA_ABSTRACT_STEADYSTATEREWARD_H_ |
||||
|
|
||||
|
#include "AbstractFormula.h" |
||||
|
#include "src/formula/AbstractFormulaChecker.h" |
||||
|
#include <string> |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace formula { |
||||
|
namespace abstract { |
||||
|
|
||||
|
/*! |
||||
|
* @brief |
||||
|
* Class for a Abstract (path) formula tree with a Steady State Reward node as root. |
||||
|
* |
||||
|
* @see AbstractPathFormula |
||||
|
* @see AbstractFormula |
||||
|
*/ |
||||
|
template <class T> |
||||
|
class SteadyStateReward: public AbstractFormula<T> { |
||||
|
public: |
||||
|
/*! |
||||
|
* Empty constructor |
||||
|
*/ |
||||
|
SteadyStateReward() { |
||||
|
// Intentionally left empty |
||||
|
|
||||
|
} |
||||
|
virtual ~SteadyStateReward() { |
||||
|
// Intentionally left empty |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* @returns a string representation of the formula |
||||
|
*/ |
||||
|
virtual std::string toString() const { |
||||
|
return "S"; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* @brief Checks if all subtrees conform to some logic. |
||||
|
* |
||||
|
* As SteadyStateReward objects have no subformulas, we return true here. |
||||
|
* |
||||
|
* @param checker Formula checker object. |
||||
|
* @return true |
||||
|
*/ |
||||
|
virtual bool conforms(const AbstractFormulaChecker<T>& checker) const { |
||||
|
return true; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
} //namespace abstract |
||||
|
} //namespace formula |
||||
|
} //namespace storm |
||||
|
#endif /* STORM_FORMULA_ABSTRACT_STEADYSTATEREWARD_H_ */ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue