76 std::vector<uint64_t>* choices =
nullptr);
86 void initializeNewValues(
ValueGetter const& stateValueGetter,
ValueGetter const& actionValueGetter, std::vector<ValueType>
const* exitRates =
nullptr);
100 struct ConvergenceCheckResult {
101 bool isPrecisionAchieved;
102 ValueType currentValue;
108 ConvergenceCheckResult checkConvergence(
bool relative, ValueType precision)
const;
118 void setInputModelChoices(std::vector<uint64_t>& choices, std::vector<uint64_t>
const& localMecChoices,
bool setChoiceZeroToMarkovianStates =
false,
119 bool setChoiceZeroToProbabilisticStates =
false)
const;
122 bool isTimedState(uint64_t
const& inputModelStateIndex)
const;
125 std::vector<ValueType>& xNew();
126 std::vector<ValueType>
const& xNew()
const;
129 std::vector<ValueType>& xOld();
130 std::vector<ValueType>
const& xOld()
const;
133 bool nondetTs()
const;
136 bool nondetIs()
const;
138 void setComponent(ComponentType component);
141 typedef std::map<uint64_t, std::set<uint64_t>> InternalComponentType;
143 InternalComponentType _component;
146 bool _hasInstantStates;
147 ValueType _uniformizationRate;
149 std::vector<ValueType> _Tsx1, _Tsx2, _TsChoiceValues;
151 std::vector<ValueType> _Isx, _Isb, _IsChoiceValues;
152 std::unique_ptr<storm::solver::Multiplier<ValueType>> _TsMultiplier, _TsToIsMultiplier, _IsToTsMultiplier;
153 std::unique_ptr<storm::solver::MinMaxLinearEquationSolver<ValueType>> _NondetIsSolver;
154 std::unique_ptr<storm::solver::LinearEquationSolver<ValueType>> _DetIsSolver;
155 std::unique_ptr<storm::Environment> _IsSolverEnv;
ValueType performValueIteration(Environment const &env, ValueGetter const &stateValueGetter, ValueGetter const &actionValueGetter, std::vector< ValueType > const *exitRates=nullptr, storm::solver::OptimizationDirection const *dir=nullptr, std::vector< uint64_t > *choices=nullptr)
Performs value iteration with the given state- and action values.