22template<
typename ValueType>
34 STORM_LOG_THROW(
false, storm::exceptions::NotImplementedException,
"Should be handled by specialized heuristic.");
50 STORM_LOG_THROW(
false, storm::exceptions::NotImplementedException,
"Should be handled by specialized heuristic.");
54 STORM_LOG_THROW(
false, storm::exceptions::NotImplementedException,
"Should be handled by specialized heuristic.");
58 STORM_LOG_THROW(
false, storm::exceptions::NotImplementedException,
"Should be handled by specialized heuristic.");
62 STORM_LOG_THROW(
false, storm::exceptions::NotImplementedException,
"Should be handled by specialized heuristic.");
67 virtual bool isSkip(
double approximationThreshold)
const {
80template<
typename ValueType>
89 if (predecessor.
getDepth() + 1 < this->depth) {
104 bool isSkip(
double approximationThreshold)
const override {
116template<
typename ValueType>
142template<
typename ValueType>
std::optional< ValueType > lowerBound
The bounds are set by the model builder before the heuristic enters the exploration queue.
double getPriority() const override
DFTExplorationHeuristicBoundDifference(size_t id, DFTExplorationHeuristic< ValueType > const &predecessor, ValueType rate, ValueType exitRate)
ValueType getUpperBound() const override
ValueType getLowerBound() const override
void setBounds(ValueType lowerBound, ValueType upperBound) override
std::optional< ValueType > upperBound
DFTExplorationHeuristicBoundDifference(size_t id)
double getPriority() const override
DFTExplorationHeuristicDepth(size_t id, DFTExplorationHeuristic< ValueType > const &predecessor)
DFTExplorationHeuristicDepth(size_t id)
bool operator<(DFTExplorationHeuristic< ValueType > const &other) const override
size_t getDepth() const override
bool updateHeuristicValues(DFTExplorationHeuristic< ValueType > const &predecessor, ValueType, ValueType) override
bool isSkip(double approximationThreshold) const override
General super class for approximation heuristics.
DFTExplorationHeuristic(size_t id)
virtual ValueType getProbability() const
virtual bool isSkip(double approximationThreshold) const
virtual bool operator<(DFTExplorationHeuristic< ValueType > const &other) const
virtual void setBounds(ValueType, ValueType)
virtual ~DFTExplorationHeuristic()=default
virtual size_t getDepth() const
virtual ValueType getLowerBound() const
virtual double getPriority() const =0
virtual ValueType getUpperBound() const
virtual bool updateHeuristicValues(DFTExplorationHeuristic const &predecessor, ValueType rate, ValueType exitRate)=0
DFTExplorationHeuristicProbability(size_t id, DFTExplorationHeuristic< ValueType > const &predecessor, ValueType rate, ValueType exitRate)
bool updateHeuristicValues(DFTExplorationHeuristic< ValueType > const &predecessor, ValueType rate, ValueType exitRate) override
ValueType getProbability() const override
DFTExplorationHeuristicProbability(size_t id)
double getPriority() const override
#define STORM_LOG_ASSERT(cond, message)
#define STORM_LOG_THROW(cond, exception, message)
ApproximationHeuristic
Enum representing the heuristic used for deciding which states to expand.
bool isZero(ValueType const &a)