28 std::pair<std::vector<ValueType>, std::vector<ValueType>>
const&
xy;
29 std::optional<ValueType>
const a,
b;
32 bool trySetLowerUpper(std::vector<ValueType>& lowerOut, std::vector<ValueType>& upperOut)
const;
35 bool checkConvergence(uint64_t& convergenceCheckState, std::function<
void()>
const& getNextConvergenceCheckState,
bool relative,
36 ValueType
const& precision)
const;
39 template<
typename BackendType>
40 SVIData SVI(std::pair<std::vector<ValueType>, std::vector<ValueType>>& xy, std::pair<std::vector<ValueType>
const*, ValueType>
const& offsets,
41 uint64_t& numIterations,
bool relative, ValueType
const& precision, BackendType&& backend,
42 std::function<
SolverStatus(
SVIData const&)>
const& iterationCallback, std::optional<storm::storage::BitVector>
const& relevantValues,
43 uint64_t convergenceCheckState = 0)
const;
45 template<storm::OptimizationDirection Dir>
46 SVIData SVI(std::pair<std::vector<ValueType>, std::vector<ValueType>>& xy, std::pair<std::vector<ValueType>
const*, ValueType>
const& offsets,
47 uint64_t& numIterations,
bool relative, ValueType
const& precision, std::optional<ValueType>
const& a, std::optional<ValueType>
const& b,
49 std::optional<storm::storage::BitVector>
const& relevantValues = {})
const;
51 SVIData
SVI(std::pair<std::vector<ValueType>, std::vector<ValueType>>& xy, std::vector<ValueType>
const& offsets, uint64_t& numIterations,
bool relative,
52 ValueType
const& precision, std::optional<storm::OptimizationDirection>
const& dir, std::optional<ValueType>
const& lowerBound,
53 std::optional<ValueType>
const& upperBound, std::function<
SolverStatus(SVIData
const&)>
const& iterationCallback,
54 std::optional<storm::storage::BitVector>
const& relevantValues = {})
const;
56 SolverStatus SVI(std::vector<ValueType>& operand, std::vector<ValueType>
const& offsets, uint64_t& numIterations,
bool relative, ValueType
const& precision,
57 std::optional<storm::OptimizationDirection>
const& dir = {}, std::optional<ValueType>
const& lowerBound = {},
58 std::optional<ValueType>
const& upperBound = {}, std::function<
SolverStatus(
SVIData const&)>
const& iterationCallback = {},
59 std::optional<storm::storage::BitVector>
const& relevantValues = {},
62 SolverStatus SVI(std::vector<ValueType>& operand, std::vector<ValueType>
const& offsets,
bool relative, ValueType
const& precision,
63 std::optional<storm::OptimizationDirection>
const& dir = {}, std::optional<ValueType>
const& lowerBound = {},
64 std::optional<ValueType>
const& upperBound = {}, std::function<
SolverStatus(
SVIData const&)>
const& iterationCallback = {},
65 std::optional<storm::storage::BitVector>
const& relevantValues = {},
69 std::shared_ptr<ValueIterationOperator<ValueType, TrivialRowGrouping>> viOperator;
70 uint64_t sizeOfLargestRowGroup;
SVIData SVI(std::pair< std::vector< ValueType >, std::vector< ValueType > > &xy, std::pair< std::vector< ValueType > const *, ValueType > const &offsets, uint64_t &numIterations, bool relative, ValueType const &precision, BackendType &&backend, std::function< SolverStatus(SVIData const &)> const &iterationCallback, std::optional< storm::storage::BitVector > const &relevantValues, uint64_t convergenceCheckState=0) const