7namespace modelchecker {
10template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
15template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
17 _optimizationDirection = direction;
20template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
22 _optimizationDirection = boost::none;
25template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
27 return _optimizationDirection.is_initialized();
30template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
32 STORM_LOG_ASSERT(isOptimizationDirectionSet(),
"Requested optimization direction but none was set.");
33 return _optimizationDirection.get();
36template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
41template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
46template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
48 return _optimizationDirection;
51template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
53 ValueType
const& threshold) {
54 _valueThreshold = std::make_pair(comparisonType, threshold);
57template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
59 _valueThreshold = boost::none;
62template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
64 return _valueThreshold.is_initialized();
67template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
69 STORM_LOG_ASSERT(isValueThresholdSet(),
"Value Threshold comparison type was requested but not set before.");
70 return _valueThreshold->first;
73template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
75 STORM_LOG_ASSERT(isValueThresholdSet(),
"Value Threshold comparison type was requested but not set before.");
76 return _valueThreshold->second;
79template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
81 _produceScheduler = value;
84template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
86 return _produceScheduler;
89template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
91 _isQualitativeSet = value;
94template<
typename ValueType, storm::models::ModelRepresentation ModelRepresentation>
96 return _isQualitativeSet;
Helper for model checking queries where we are interested in (optimizing) a single value per state.
storm::logic::ComparisonType const & getValueThresholdComparisonType() const
void setValueThreshold(storm::logic::ComparisonType const &comparisonType, ValueType const &thresholdValue)
Sets a goal threshold for the value at each state.
bool isQualitativeSet() const
bool isOptimizationDirectionSet() const
void clearOptimizationDirection()
Clears the optimization direction if it was set before.
ValueType const & getValueThresholdValue() const
void setQualitative(bool value)
Sets whether the property needs to be checked qualitatively.
void setProduceScheduler(bool value)
Sets whether an optimal scheduler shall be constructed during the computation.
bool isProduceSchedulerSet() const
boost::optional< storm::solver::OptimizationDirection > getOptionalOptimizationDirection() const
storm::solver::OptimizationDirection const & getOptimizationDirection() const
void setOptimizationDirection(storm::solver::OptimizationDirection const &direction)
Sets the optimization direction, i.e., whether we want to minimize or maximize the value for each sta...
SingleValueModelCheckerHelper()
bool isValueThresholdSet() const
void clearValueThreshold()
Clears the valueThreshold if it was set before.
#define STORM_LOG_ASSERT(cond, message)
bool constexpr maximize(OptimizationDirection d)
bool constexpr minimize(OptimizationDirection d)