Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SymbolicEliminationLinearEquationSolver.h
Go to the documentation of this file.
1#pragma once
2
4
5namespace storm {
6namespace solver {
7
8template<storm::dd::DdType DdType, typename ValueType = double>
10 public:
16
18 storm::dd::Add<DdType, ValueType> const& A, storm::dd::Bdd<DdType> const& allRows, std::set<storm::expressions::Variable> const& rowMetaVariables,
19 std::set<storm::expressions::Variable> const& columnMetaVariables,
20 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs);
21
23 storm::dd::Bdd<DdType> const& allRows, std::set<storm::expressions::Variable> const& rowMetaVariables,
24 std::set<storm::expressions::Variable> const& columnMetaVariables,
25 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs);
26
28 storm::dd::Add<DdType, ValueType> const& b) const override;
29
30 virtual void setData(storm::dd::Bdd<DdType> const& allRows, std::set<storm::expressions::Variable> const& rowMetaVariables,
31 std::set<storm::expressions::Variable> const& columnMetaVariables,
32 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs) override;
33
35
36 private:
37 void createInternalData(storm::dd::Bdd<DdType> const& allRows, std::set<storm::expressions::Variable> const& rowMetaVariables,
38 std::set<storm::expressions::Variable> const& columnMetaVariables,
39 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs);
40
41 std::vector<std::vector<storm::expressions::Variable>> oldToNewMapping;
42 std::set<storm::expressions::Variable> newRowVariables;
43 std::set<storm::expressions::Variable> newColumnVariables;
44 std::set<storm::expressions::Variable> helperVariables;
45 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> newRowColumnMetaVariablePairs;
46 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> columnHelperMetaVariablePairs;
47 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> rowRowMetaVariablePairs;
48 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> columnColumnMetaVariablePairs;
49 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> oldNewMetaVariablePairs = rowRowMetaVariablePairs;
50 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> shiftMetaVariablePairs = newRowColumnMetaVariablePairs;
51};
52
53template<storm::dd::DdType DdType, typename ValueType>
55 public:
56 using SymbolicLinearEquationSolverFactory<DdType, ValueType>::create;
57
58 virtual std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>> create(Environment const& env) const override;
59};
60
61} // namespace solver
62} // namespace storm
virtual std::unique_ptr< storm::solver::SymbolicLinearEquationSolver< DdType, ValueType > > create(Environment const &env) const override
virtual void setData(storm::dd::Bdd< DdType > const &allRows, std::set< storm::expressions::Variable > const &rowMetaVariables, std::set< storm::expressions::Variable > const &columnMetaVariables, std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > const &rowColumnMetaVariablePairs) override
virtual LinearEquationSolverProblemFormat getEquationProblemFormat(Environment const &env) const override
Retrieves the format in which this solver expects to solve equations.
SymbolicEliminationLinearEquationSolver()
Constructs a symbolic linear equation solver.
virtual storm::dd::Add< DdType, ValueType > solveEquations(Environment const &env, storm::dd::Add< DdType, ValueType > const &x, storm::dd::Add< DdType, ValueType > const &b) const override
Solves the equation system A*x = b.
An interface that represents an abstract symbolic linear equation solver.
std::set< storm::expressions::Variable > columnMetaVariables
std::set< storm::expressions::Variable > rowMetaVariables
std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > rowColumnMetaVariablePairs
LabParser.cpp.
Definition cli.cpp:18