43 struct PowerIterationResult {
44 PowerIterationResult(uint64_t iterations,
SolverStatus status) : iterations(iterations), status(status) {
52 template<
typename ValueTypePrime>
55 PowerIterationResult performPowerIteration(
Environment const& env, std::vector<ValueType>*& currentX, std::vector<ValueType>*& newX,
56 std::vector<ValueType>
const& b, ValueType
const& precision,
bool relative,
SolverGuarantee const& guarantee,
57 uint64_t currentIterations, uint64_t maxIterations,
60 void logIterations(
bool converged,
bool terminate, uint64_t iterations)
const;
62 virtual uint64_t getMatrixRowCount()
const override;
63 virtual uint64_t getMatrixColumnCount()
const override;
65 NativeLinearEquationSolverMethod getMethod(
Environment const& env,
bool isExactMode)
const;
67 virtual bool solveEquationsSOR(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b, ValueType
const& omega)
const;
68 virtual bool solveEquationsJacobi(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b)
const;
69 virtual bool solveEquationsWalkerChae(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b)
const;
70 virtual bool solveEquationsPower(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b)
const;
71 virtual bool solveEquationsSoundValueIteration(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b)
const;
72 virtual bool solveEquationsOptimisticValueIteration(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b)
const;
73 virtual bool solveEquationsGuessingValueIteration(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b)
const;
74 virtual bool solveEquationsIntervalIteration(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b)
const;
75 virtual bool solveEquationsRationalSearch(
storm::Environment const& env, std::vector<ValueType>& x, std::vector<ValueType>
const& b)
const;
77 void setUpViOperator()
const;
81 std::unique_ptr<storm::storage::SparseMatrix<ValueType>> localA;
87 mutable std::shared_ptr<storm::solver::helper::ValueIterationOperator<ValueType, true>> viOperator;
90 mutable std::unique_ptr<Multiplier<ValueType>> multiplier;
92 struct JacobiDecomposition {
96 std::vector<ValueType> DVector;
97 std::unique_ptr<storm::solver::Multiplier<ValueType>> multiplier;
99 mutable std::unique_ptr<JacobiDecomposition> jacobiDecomposition;
101 struct WalkerChaeData {
105 void computeNewB(std::vector<ValueType>
const& originalB);
106 void precomputeAuxiliaryData();
109 std::vector<ValueType> b;
111 std::unique_ptr<storm::solver::Multiplier<ValueType>> multiplier;
114 std::vector<ValueType> columnSums;
115 std::vector<ValueType> newX;
117 mutable std::unique_ptr<WalkerChaeData> walkerChaeData;