Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ValueIterationHelper.h
Go to the documentation of this file.
1#pragma once
2
3#include <functional>
4#include <memory>
5#include <optional>
6#include <vector>
7
12
13namespace storm::solver::helper {
14
15template<typename ValueType, bool TrivialRowGrouping, typename SolutionType = ValueType>
17 public:
19
20 template<storm::OptimizationDirection Dir, bool Relative, storm::OptimizationDirection RobustDir>
21 SolverStatus VI(std::vector<SolutionType>& operand, std::vector<ValueType> const& offsets, uint64_t& numIterations, SolutionType const& precision,
22 std::function<SolverStatus(SolverStatus const&)> const& iterationCallback = {},
24
25 template<storm::OptimizationDirection Dir, bool Relative>
26 SolverStatus VI(std::vector<SolutionType>& operand, std::vector<ValueType> const& offsets, uint64_t& numIterations, SolutionType const& precision,
27 std::function<SolverStatus(SolverStatus const&)> const& iterationCallback = {}, MultiplicationStyle mult = MultiplicationStyle::GaussSeidel,
28 bool robust = true) const;
29
30 SolverStatus VI(std::vector<SolutionType>& operand, std::vector<ValueType> const& offsets, uint64_t& numIterations, bool relative,
31 SolutionType const& precision, std::optional<storm::OptimizationDirection> const& dir = {},
32 std::function<SolverStatus(SolverStatus const&)> const& iterationCallback = {}, MultiplicationStyle mult = MultiplicationStyle::GaussSeidel,
33 bool robust = true) const;
34
35 SolverStatus VI(std::vector<SolutionType>& operand, std::vector<ValueType> const& offsets, bool relative, SolutionType const& precision,
36 std::optional<storm::OptimizationDirection> const& dir = {}, std::function<SolverStatus(SolverStatus const&)> const& iterationCallback = {},
37 MultiplicationStyle mult = MultiplicationStyle::GaussSeidel, bool robust = true) const;
38
39 private:
40 std::shared_ptr<ValueIterationOperator<ValueType, TrivialRowGrouping, SolutionType>> viOperator;
41};
42
43} // namespace storm::solver::helper
SolverStatus VI(std::vector< SolutionType > &operand, std::vector< ValueType > const &offsets, uint64_t &numIterations, SolutionType const &precision, std::function< SolverStatus(SolverStatus const &)> const &iterationCallback={}, MultiplicationStyle mult=MultiplicationStyle::GaussSeidel) const
This class represents the Value Iteration Operator (also known as Bellman operator).