Browse Source
MA to CTMC for trivial nondeterminism
MA to CTMC for trivial nondeterminism
Former-commit-id: 8a342f032e
tempestpy_adaptions
Mavo
9 years ago
7 changed files with 153 additions and 1 deletions
-
1benchmark_dft.py
-
5examples/dft/fdep3.dft
-
54src/models/sparse/MarkovAutomaton.cpp
-
45src/solver/stateelimination/MAEliminator.cpp
-
32src/solver/stateelimination/MAEliminator.h
-
9src/storage/FlexibleSparseMatrix.cpp
-
8src/storage/FlexibleSparseMatrix.h
@ -0,0 +1,5 @@ |
|||||
|
toplevel "A"; |
||||
|
"A" and "B" "C" "F"; |
||||
|
"F" fdep "B" "C"; |
||||
|
"B" lambda=0.4 dorm=0; |
||||
|
"C" lambda=0.8 dorm=0; |
@ -0,0 +1,45 @@ |
|||||
|
#include "src/solver/stateelimination/MAEliminator.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace solver { |
||||
|
namespace stateelimination { |
||||
|
|
||||
|
template<typename SparseModelType> |
||||
|
MAEliminator<SparseModelType>::MAEliminator(storm::storage::FlexibleSparseMatrix<ValueType>& transitionMatrix, storm::storage::FlexibleSparseMatrix<ValueType>& backwardTransitions) : StateEliminator<SparseModelType>(transitionMatrix, backwardTransitions){ |
||||
|
} |
||||
|
|
||||
|
template<typename SparseModelType> |
||||
|
void MAEliminator<SparseModelType>::updateValue(storm::storage::sparse::state_type const& state, ValueType const& loopProbability) { |
||||
|
// Do nothing
|
||||
|
} |
||||
|
|
||||
|
template<typename SparseModelType> |
||||
|
void MAEliminator<SparseModelType>::updatePredecessor(storm::storage::sparse::state_type const& predecessor, ValueType const& probability, storm::storage::sparse::state_type const& state) { |
||||
|
// Do nothing
|
||||
|
} |
||||
|
|
||||
|
template<typename SparseModelType> |
||||
|
void MAEliminator<SparseModelType>::updatePriority(storm::storage::sparse::state_type const& state) { |
||||
|
// Do nothing
|
||||
|
} |
||||
|
|
||||
|
template<typename SparseModelType> |
||||
|
bool MAEliminator<SparseModelType>::filterPredecessor(storm::storage::sparse::state_type const& state) { |
||||
|
assert(false); |
||||
|
} |
||||
|
|
||||
|
template<typename SparseModelType> |
||||
|
bool MAEliminator<SparseModelType>::isFilterPredecessor() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
template class MAEliminator<storm::models::sparse::Dtmc<double>>; |
||||
|
|
||||
|
#ifdef STORM_HAVE_CARL
|
||||
|
template class MAEliminator<storm::models::sparse::Dtmc<storm::RationalFunction>>; |
||||
|
#endif
|
||||
|
|
||||
|
} // namespace stateelimination
|
||||
|
} // namespace storage
|
||||
|
} // namespace storm
|
@ -0,0 +1,32 @@ |
|||||
|
#ifndef STORM_SOLVER_STATEELIMINATION_MAELIMINATOR_H_ |
||||
|
#define STORM_SOLVER_STATEELIMINATION_MAELIMINATOR_H_ |
||||
|
|
||||
|
#include "src/solver/stateelimination/StateEliminator.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace solver { |
||||
|
namespace stateelimination { |
||||
|
|
||||
|
template<typename SparseModelType> |
||||
|
class MAEliminator : public StateEliminator<SparseModelType> { |
||||
|
|
||||
|
typedef typename SparseModelType::ValueType ValueType; |
||||
|
|
||||
|
public: |
||||
|
MAEliminator(storm::storage::FlexibleSparseMatrix<ValueType>& transitionMatrix, storm::storage::FlexibleSparseMatrix<ValueType>& backwardTransitions); |
||||
|
|
||||
|
// Instantiaton of Virtual methods |
||||
|
void updateValue(storm::storage::sparse::state_type const& state, ValueType const& loopProbability) override; |
||||
|
void updatePredecessor(storm::storage::sparse::state_type const& predecessor, ValueType const& probability, storm::storage::sparse::state_type const& state) override; |
||||
|
void updatePriority(storm::storage::sparse::state_type const& state) override; |
||||
|
bool filterPredecessor(storm::storage::sparse::state_type const& state) override; |
||||
|
bool isFilterPredecessor() const override; |
||||
|
|
||||
|
private: |
||||
|
}; |
||||
|
|
||||
|
} // namespace stateelimination |
||||
|
} // namespace storage |
||||
|
} // namespace storm |
||||
|
|
||||
|
#endif // STORM_SOLVER_STATEELIMINATION_MAELIMINATOR_H_ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue