Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ConditionalStateEliminator.cpp
Go to the documentation of this file.
2
6
7namespace storm {
8namespace solver {
9namespace stateelimination {
10
11template<typename ValueType>
14 std::vector<ValueType>& oneStepProbabilities, storm::storage::BitVector& phiStates,
16 : StateEliminator<ValueType>(transitionMatrix, backwardTransitions),
17 oneStepProbabilities(oneStepProbabilities),
18 phiStates(phiStates),
19 psiStates(psiStates),
20 filterLabel(StateLabel::NONE) {}
21
22template<typename ValueType>
24 oneStepProbabilities[state] = storm::utility::simplify((ValueType)(loopProbability * oneStepProbabilities[state]));
25}
26
27template<typename ValueType>
30 oneStepProbabilities[predecessor] = storm::utility::simplify(
31 (ValueType)(oneStepProbabilities[predecessor] * storm::utility::simplify((ValueType)(probability * oneStepProbabilities[state]))));
32}
33
34template<typename ValueType>
36 // TODO find better solution than flag
37 switch (filterLabel) {
38 case StateLabel::PHI:
39 return phiStates.get(state);
40 case StateLabel::PSI:
41 return psiStates.get(state);
42 default:
43 STORM_LOG_ASSERT(false, "Specific state not set.");
44 return false;
45 }
46}
47
48template<typename ValueType>
52
53template<typename ValueType>
55 filterLabel = StateLabel::PHI;
56}
57
58template<typename ValueType>
60 filterLabel = StateLabel::PSI;
61}
62
63template<typename ValueType>
65 filterLabel = stateLabel;
66}
67
68template<typename ValueType>
70 filterLabel = StateLabel::NONE;
71}
72
74
77} // namespace stateelimination
78} // namespace solver
79} // namespace storm
bool filterPredecessor(storm::storage::sparse::state_type const &state) override
void updateValue(storm::storage::sparse::state_type const &state, ValueType const &loopProbability) override
ConditionalStateEliminator(storm::storage::FlexibleSparseMatrix< ValueType > &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > &backwardTransitions, std::vector< ValueType > &oneStepProbabilities, storm::storage::BitVector &phiStates, storm::storage::BitVector &psiStates)
void updatePredecessor(storm::storage::sparse::state_type const &predecessor, ValueType const &probability, storm::storage::sparse::state_type const &state) override
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
The flexible sparse matrix is used during state elimination.
#define STORM_LOG_ASSERT(cond, message)
Definition macros.h:11
ValueType simplify(ValueType value)