Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SolveGoal.cpp
Go to the documentation of this file.
2
3#include <memory>
4
7
9
13
14namespace storm {
15namespace storage {
16template<typename ValueType>
17class SparseMatrix;
18}
19
20namespace solver {
21
22template<typename ValueType, typename SolutionType>
24 // Intentionally left empty.
25}
26
27template<typename ValueType, typename SolutionType>
30 // Intentionally left empty.
31}
32
33template<typename ValueType, typename SolutionType>
34SolveGoal<ValueType, SolutionType>::SolveGoal(OptimizationDirection optimizationDirection) : optimizationDirection(optimizationDirection) {
35 // Intentionally left empty.
36}
37
38template<typename ValueType, typename SolutionType>
40 SolutionType const& boundThreshold, storm::storage::BitVector const& relevantValues)
41 : optimizationDirection(optimizationDirection), comparisonType(boundComparisonType), threshold(boundThreshold), relevantValueVector(relevantValues) {
42 // Intentionally left empty.
43}
44
45template<typename ValueType, typename SolutionType>
47 : optimizationDirection(optimizationDirection), relevantValueVector(relevantValues) {
48 // Intentionally left empty.
49}
50
51template<typename ValueType, typename SolutionType>
53 return static_cast<bool>(optimizationDirection);
54}
55
56template<typename ValueType, typename SolutionType>
58 if (optimizationDirection) {
59 if (optimizationDirection == storm::solver::OptimizationDirection::Minimize) {
60 optimizationDirection = storm::solver::OptimizationDirection::Maximize;
61 } else {
62 optimizationDirection = storm::solver::OptimizationDirection::Minimize;
63 }
64 }
65 if (threshold) {
66 this->threshold = storm::utility::one<SolutionType>() - this->threshold.get();
67 }
68 if (comparisonType) {
69 switch (comparisonType.get()) {
72 break;
75 break;
78 break;
81 break;
82 }
83 }
84}
85
86template<typename ValueType, typename SolutionType>
88 return optimizationDirection == OptimizationDirection::Minimize;
89}
90
91template<typename ValueType, typename SolutionType>
93 return optimizationDirection.get();
94}
95
96template<typename ValueType, typename SolutionType>
98 return comparisonType && threshold && relevantValueVector;
99}
100
101template<typename ValueType, typename SolutionType>
105
106template<typename ValueType, typename SolutionType>
108 return (comparisonType.get() == storm::logic::ComparisonType::Greater || comparisonType.get() == storm::logic::ComparisonType::Less);
109}
110
111template<typename ValueType, typename SolutionType>
113 return robustAgainstUncertainty;
114}
115
116template<typename ValueType, typename SolutionType>
118 return threshold.get();
119}
120
121template<typename ValueType, typename SolutionType>
123 return static_cast<bool>(relevantValueVector);
124}
125
126template<typename ValueType, typename SolutionType>
128 return relevantValueVector.get();
129}
130
131template<typename ValueType, typename SolutionType>
135
136template<typename ValueType, typename SolutionType>
138 if (relevantValueVector) {
139 relevantValueVector = relevantValueVector.get() % filter;
140 }
141}
142
143template<typename ValueType, typename SolutionType>
145 relevantValueVector = std::move(values);
146}
147
148template class SolveGoal<double>;
152
153} // namespace solver
154} // namespace storm
bool boundIsALowerBound() const
void oneMinus()
Flips the comparison type, the direction, and computes the new threshold as 1 - old threshold.
Definition SolveGoal.cpp:57
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
Definition SolveGoal.cpp:52
OptimizationDirection direction() const
Definition SolveGoal.cpp:92
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:18
bool get(uint_fast64_t index) const
Retrieves the truth value of the bit at the given index and performs a bound check.
bool constexpr minimize(OptimizationDirection d)
LabParser.cpp.
Definition cli.cpp:18