20template<
typename ValueType>
25template<
typename ValueType>
30template<
typename ValueType>
35template<
typename ValueType>
42template<
typename ValueType>
44 localA = std::make_unique<storm::storage::SparseMatrix<ValueType>>(std::move(A));
45 this->A = localA.get();
49template<
typename ValueType>
51 std::vector<ValueType>
const& b)
const {
57 STORM_LOG_INFO(
"Solving linear equation system (" << x.size() <<
" rows) with elimination");
69 boost::optional<std::vector<uint_fast64_t>> distanceBasedPriorities;
83 order, distanceBasedPriorities, flexibleMatrix, flexibleBackwardTransitions, b,
storm::storage::BitVector(x.size(),
true));
89 while (priorityQueue->hasNext()) {
90 auto state = priorityQueue->pop();
97template<
typename ValueType>
102template<
typename ValueType>
103uint64_t EliminationLinearEquationSolver<ValueType>::getMatrixRowCount()
const {
104 return this->A->getRowCount();
107template<
typename ValueType>
108uint64_t EliminationLinearEquationSolver<ValueType>::getMatrixColumnCount()
const {
109 return this->A->getColumnCount();
112template<
typename ValueType>
114 return std::make_unique<storm::solver::EliminationLinearEquationSolver<ValueType>>();
117template<
typename ValueType>
119 return std::make_unique<EliminationLinearEquationSolverFactory<ValueType>>(*this);
storm::solver::stateelimination::EliminationOrder const & getOrder() const
SolverEnvironment & solver()
EliminationSolverEnvironment & elimination()
virtual std::unique_ptr< storm::solver::LinearEquationSolver< ValueType > > create(Environment const &env) const override
Creates an equation solver with the current settings, but without a matrix.
virtual std::unique_ptr< LinearEquationSolverFactory< ValueType > > clone() const override
Creates a copy of this factory.
A class that uses gaussian elimination to implement the LinearEquationSolver interface.
virtual LinearEquationSolverProblemFormat getEquationProblemFormat(Environment const &env) const override
Retrieves the format in which this solver expects to solve equations.
virtual void setMatrix(storm::storage::SparseMatrix< ValueType > const &A) override
virtual bool internalSolveEquations(Environment const &env, std::vector< ValueType > &x, std::vector< ValueType > const &b) const override
EliminationLinearEquationSolver()
virtual void clearCache() const
void eliminateState(storm::storage::sparse::state_type state, bool removeForwardTransitions)
A bit vector that is internally represented as a vector of 64-bit values.
The flexible sparse matrix is used during state elimination.
A class that holds a possibly non-square matrix in the compressed row storage format.
storm::storage::SparseMatrix< value_type > transpose(bool joinGroups=false, bool keepZeros=false) const
Transposes the matrix.
#define STORM_LOG_INFO(message)
bool eliminationOrderNeedsReversedDistances(EliminationOrder const &order)
bool eliminationOrderNeedsForwardDistances(EliminationOrder const &order)
std::shared_ptr< StatePriorityQueue > createStatePriorityQueue(EliminationOrder const &order, boost::optional< std::vector< uint_fast64_t > > const &distanceBasedStatePriorities, storm::storage::FlexibleSparseMatrix< ValueType > const &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > const &backwardTransitions, std::vector< ValueType > const &oneStepProbabilities, storm::storage::BitVector const &states)
bool eliminationOrderNeedsDistances(EliminationOrder const &order)
EliminationOrder
An enum that contains all available state elimination orders.
std::vector< uint_fast64_t > getDistanceBasedPriorities(EliminationOrder const &order, storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &transitionMatrixTransposed, storm::storage::BitVector const &initialStates, std::vector< ValueType > const &oneStepProbabilities, bool forward, bool reverse)
LinearEquationSolverProblemFormat
storm::storage::BitVector getBsccCover(storm::storage::SparseMatrix< T > const &transitionMatrix)
Retrieves a set of states that covers als BSCCs of the system in the sense that for every BSCC exactl...