Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ValueIterationHelper.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <functional>
5#include <memory>
6#include <optional>
7#include <vector>
8
17
18namespace storm::solver::helper {
19
20template<typename ValueType, bool TrivialRowGrouping, typename SolutionType = ValueType>
22 public:
24
25 template<storm::OptimizationDirection Dir, bool Relative, storm::OptimizationDirection RobustDir, bool TrackDirection>
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,
29 SolverGuarantee const& guarantee = SolverGuarantee::None) const;
30
31 template<storm::OptimizationDirection Dir, bool Relative>
32 SolverStatus VI(std::vector<SolutionType>& operand, std::vector<ValueType> const& offsets, uint64_t& numIterations, SolutionType const& precision,
33 const std::function<SolverStatus(const SolverStatus&)>& iterationCallback = {}, MultiplicationStyle mult = MultiplicationStyle::GaussSeidel,
34 UncertaintyResolutionMode const& uncertaintyResolutionMode = UncertaintyResolutionMode::Unset,
36 SolverGuarantee const& guarantee = SolverGuarantee::None) const;
37
38 SolverStatus VI(std::vector<SolutionType>& operand, std::vector<ValueType> const& offsets, uint64_t& numIterations, bool relative,
39 SolutionType const& precision, std::optional<storm::OptimizationDirection> const& dir = {},
40 std::function<SolverStatus(SolverStatus const&)> const& iterationCallback = {}, MultiplicationStyle mult = MultiplicationStyle::GaussSeidel,
41 UncertaintyResolutionMode const& uncertaintyResolutionMode = UncertaintyResolutionMode::Unset,
43 SolverGuarantee const& guarantee = SolverGuarantee::None) const;
44
45 SolverStatus VI(std::vector<SolutionType>& operand, std::vector<ValueType> const& offsets, bool relative, SolutionType const& precision,
46 std::optional<storm::OptimizationDirection> const& dir = {}, std::function<SolverStatus(SolverStatus const&)> const& iterationCallback = {},
48 UncertaintyResolutionMode const& uncertaintyResolutionMode = UncertaintyResolutionMode::Unset,
50 SolverGuarantee const& guarantee = SolverGuarantee::None) const;
51
52 private:
53 std::shared_ptr<ValueIterationOperator<ValueType, TrivialRowGrouping, SolutionType>> viOperator;
54};
55
56} // namespace storm::solver::helper
Helper class that optionally holds a reference to an object of type T.
Definition OptionalRef.h:48
ValueIterationHelper(std::shared_ptr< ValueIterationOperator< ValueType, TrivialRowGrouping, SolutionType > > viOperator)
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, storm::OptionalRef< SolutionBounds< SolutionType > > solutionBounds=storm::NullRef, SolverGuarantee const &guarantee=SolverGuarantee::None) const
This class represents the Value Iteration Operator (also known as Bellman operator).
constexpr NullRefType NullRef
Definition OptionalRef.h:31