Browse Source
			
			
			Added proper source grouping for properties directory. Fixed one performance tests. Started on SCC-based reachability model checker.
			
				
		Added proper source grouping for properties directory. Fixed one performance tests. Started on SCC-based reachability model checker.
	
		
	
			
				Former-commit-id: e48c163783
			
			
				main
			
			
		
				 6 changed files with 127 additions and 47 deletions
			
			
		- 
					20CMakeLists.txt
- 
					7examples/dtmc/die/die.pm
- 
					30src/modelchecker/reachability/SparseSccModelChecker.cpp
- 
					36src/modelchecker/reachability/SparseSccModelChecker.h
- 
					77src/storm.cpp
- 
					4test/performance/storage/StronglyConnectedComponentDecompositionTest.cpp
| @ -0,0 +1,30 @@ | |||||
|  | #include "src/modelchecker/reachability/SparseSccModelChecker.h"
 | ||||
|  | 
 | ||||
|  | namespace storm { | ||||
|  |     namespace modelchecker { | ||||
|  |         namespace reachability { | ||||
|  |              | ||||
|  |             template<typename ValueType> | ||||
|  |             ValueType SparseSccModelChecker<ValueType>::computeReachabilityProbability(storm::models::Dtmc<ValueType> const& dtmc, storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates) { | ||||
|  |                  | ||||
|  |                  | ||||
|  |                  | ||||
|  |                 return 0; | ||||
|  |             } | ||||
|  |              | ||||
|  |             template<typename ValueType> | ||||
|  |             typename SparseSccModelChecker<ValueType>::FlexibleSparseMatrix SparseSccModelChecker<ValueType>::getFlexibleSparseMatrix(storm::storage::SparseMatrix<ValueType> const& matrix) { | ||||
|  |                 FlexibleSparseMatrix flexibleMatrix(matrix.getRowCount()); | ||||
|  |                  | ||||
|  |                 for (SparseSccModelChecker<ValueType>::FlexibleMatrix::index_type row = 0; row < matrix.getRowCount(); ++row) { | ||||
|  |                      | ||||
|  |                 } | ||||
|  |                  | ||||
|  |                 return flexibleMatrix; | ||||
|  |             } | ||||
|  |              | ||||
|  |             template class SparseSccModelChecker<double>; | ||||
|  |              | ||||
|  |         } // namespace reachability
 | ||||
|  |     } // namespace modelchecker
 | ||||
|  | } // namespace storm
 | ||||
| @ -0,0 +1,36 @@ | |||||
|  | #include "src/models/Dtmc.h" | ||||
|  | 
 | ||||
|  | namespace storm { | ||||
|  |     namespace modelchecker { | ||||
|  |         namespace reachability { | ||||
|  |              | ||||
|  |             template<typename ValueType> | ||||
|  |             class SparseSccModelChecker { | ||||
|  |             private: | ||||
|  |                 class FlexibleSparseMatrix { | ||||
|  |                 public: | ||||
|  |                     typedef uint_fast64_t index_type; | ||||
|  |                     typedef ValueType value_type; | ||||
|  |                     typedef std::vector<storm::storage::MatrixEntry<index_type, value_type>> row_type; | ||||
|  |                      | ||||
|  |                     FlexibleSparseMatrix(index_type rows); | ||||
|  |                      | ||||
|  |                     void reserveInRow(index_type row, index_type numberOfElements); | ||||
|  |                      | ||||
|  |                     row_type& getRow(index_type); | ||||
|  |                      | ||||
|  |                 private: | ||||
|  |                     std::vector<row_type> data; | ||||
|  |                 }; | ||||
|  |                  | ||||
|  |             public: | ||||
|  |                 static ValueType computeReachabilityProbability(storm::models::Dtmc<ValueType> const& dtmc, storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates); | ||||
|  |                  | ||||
|  |             private: | ||||
|  |                 void treatScc(storm::storage::SparseMatrix<ValueType>& matrix, storm::storage::BitVector const& scc, uint_fast64_t level) const; | ||||
|  |                  | ||||
|  |                 FlexibleSparseMatrix getFlexibleSparseMatrix(storm::storage::SparseMatrix<ValueType> const& matrix); | ||||
|  |             }; | ||||
|  |         } | ||||
|  |     } | ||||
|  | } | ||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue