25 typedef typename SparseMaModelType::ValueType
ValueType;
46 typedef std::map<uint_fast64_t, storm::storage::BitVector, std::greater<uint_fast64_t>> TimeBoundMap;
58 std::vector<ValueType> weightedRewardVector;
59 std::vector<std::vector<ValueType>> objectiveRewardVectors;
61 std::vector<ValueType> weightedSolutionVector;
62 std::vector<std::vector<ValueType>> objectiveSolutionVectors;
64 std::vector<ValueType> auxChoiceValues;
66 uint_fast64_t getNumberOfStates()
const {
69 uint_fast64_t getNumberOfChoices()
const {
77 struct MinMaxSolverData {
78 std::unique_ptr<Environment> env;
79 std::unique_ptr<storm::solver::MinMaxLinearEquationSolver<ValueType>> solver;
80 std::vector<ValueType> b;
83 struct LinEqSolverData {
84 std::unique_ptr<Environment> env;
86 std::unique_ptr<storm::solver::LinearEquationSolverFactory<ValueType>> factory;
87 std::unique_ptr<storm::solver::LinearEquationSolver<ValueType>> solver;
88 std::vector<ValueType> b;
96 virtual void boundedPhase(Environment
const& env, std::vector<ValueType>
const& weightVector, std::vector<ValueType>& weightedRewardVector)
override;
103 SubModel createSubModel(
bool createMS, std::vector<ValueType>
const& weightedRewardVector)
const;
108 template<typename VT = ValueType, typename std::enable_if<storm::NumberTraits<VT>::SupportsExponential,
int>::type = 0>
109 VT getDigitizationConstant(std::vector<ValueType>
const& weightVector)
const;
110 template<typename VT = ValueType, typename std::enable_if<!storm::NumberTraits<VT>::SupportsExponential,
int>::type = 0>
111 VT getDigitizationConstant(std::vector<ValueType>
const& weightVector)
const;
116 template<typename VT = ValueType, typename std::enable_if<storm::NumberTraits<VT>::SupportsExponential,
int>::type = 0>
117 void digitize(SubModel& subModel, VT
const& digitizationConstant)
const;
118 template<typename VT = ValueType, typename std::enable_if<!storm::NumberTraits<VT>::SupportsExponential,
int>::type = 0>
119 void digitize(SubModel& subModel, VT
const& digitizationConstant)
const;
125 void digitizeTimeBounds(TimeBoundMap& upperTimeBounds,
ValueType const& digitizationConstant, std::vector<ValueType>
const& weightVector);
130 std::unique_ptr<MinMaxSolverData> initMinMaxSolver(Environment
const& env, SubModel
const& PS,
bool acyclic,
131 std::vector<ValueType>
const& weightVector)
const;
136 template<typename VT = ValueType, typename std::enable_if<storm::NumberTraits<VT>::SupportsExponential,
int>::type = 0>
137 std::unique_ptr<LinEqSolverData> initLinEqSolver(Environment
const& env, SubModel
const& PS,
bool acyclic)
const;
138 template<typename VT = ValueType, typename std::enable_if<!storm::NumberTraits<VT>::SupportsExponential,
int>::type = 0>
139 std::unique_ptr<LinEqSolverData> initLinEqSolver(Environment
const& env, SubModel
const& PS,
bool acyclic)
const;
146 void updateDataToCurrentEpoch(SubModel& MS, SubModel& PS, MinMaxSolverData& minMax,
storm::storage::BitVector& consideredObjectives,
147 uint_fast64_t
const& currentEpoch, std::vector<ValueType>
const& weightVector, TimeBoundMap::iterator& upperTimeBoundIt,
148 TimeBoundMap
const& upperTimeBounds);
157 void performPSStep(Environment
const& env, SubModel& PS, SubModel
const& MS, MinMaxSolverData& minMax, LinEqSolverData& linEq,
159 std::vector<ValueType>
const& weightVector)
const;
167 void performMSStep(Environment
const& env, SubModel& MS, SubModel
const& PS,
storm::storage::BitVector const& consideredObjectives,
168 std::vector<ValueType>
const& weightVector)
const;
172 std::vector<ValueType> exitRates;