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