13template<
typename ValueType>
19template<
typename ValueType,
typename SolutionType>
24template<
typename ValueType,
typename SolutionType>
30template<
typename ValueType,
typename SolutionType>
35template<
typename ValueType,
typename SolutionType>
42template<
typename ValueType,
typename SolutionType>
44 : optimizationDirection(optimizationDirection), relevantValueVector(
relevantValues) {
48template<
typename ValueType,
typename SolutionType>
50 return static_cast<bool>(optimizationDirection);
53template<
typename ValueType,
typename SolutionType>
55 if (optimizationDirection) {
56 if (optimizationDirection == storm::solver::OptimizationDirection::Minimize) {
57 optimizationDirection = storm::solver::OptimizationDirection::Maximize;
59 optimizationDirection = storm::solver::OptimizationDirection::Minimize;
66 switch (comparisonType.get()) {
83template<
typename ValueType,
typename SolutionType>
85 return optimizationDirection == OptimizationDirection::Minimize;
88template<
typename ValueType,
typename SolutionType>
90 STORM_LOG_THROW(optimizationDirection.has_value(), storm::exceptions::InvalidPropertyException,
"Optimization direction not set.");
91 return optimizationDirection.get();
94template<
typename ValueType,
typename SolutionType>
96 return comparisonType && threshold && relevantValueVector;
99template<
typename ValueType,
typename SolutionType>
104template<
typename ValueType,
typename SolutionType>
109template<
typename ValueType,
typename SolutionType>
111 return uncertaintyResolutionMode;
114template<
typename ValueType,
typename SolutionType>
116 return comparisonType.get();
119template<
typename ValueType,
typename SolutionType>
121 return threshold.get();
124template<
typename ValueType,
typename SolutionType>
126 return static_cast<bool>(relevantValueVector);
129template<
typename ValueType,
typename SolutionType>
131 return relevantValueVector.
get();
134template<
typename ValueType,
typename SolutionType>
136 return relevantValueVector.
get();
139template<
typename ValueType,
typename SolutionType>
141 if (relevantValueVector) {
142 relevantValueVector = relevantValueVector.get() % filter;
146template<
typename ValueType,
typename SolutionType>
148 relevantValueVector = std::move(values);
bool boundIsStrict() const
UncertaintyResolutionMode getUncertaintyResolutionMode() const
bool boundIsALowerBound() const
void oneMinus()
Flips the comparison type, the direction, and computes the new threshold as 1 - old threshold.
SolutionType const & thresholdValue() const
bool hasRelevantValues() const
void restrictRelevantValues(storm::storage::BitVector const &filter)
storm::storage::BitVector & relevantValues()
void setRelevantValues(storm::storage::BitVector &&values)
bool hasDirection() const
OptimizationDirection direction() const
storm::logic::ComparisonType boundComparisonType() const
A bit vector that is internally represented as a vector of 64-bit values.
bool get(uint64_t index) const
Retrieves the truth value of the bit at the given index and performs a bound check.
A class that holds a possibly non-square matrix in the compressed row storage format.
#define STORM_LOG_THROW(cond, exception, message)
UncertaintyResolutionMode