62 std::vector<StateType>
const& initialStateIndices = {},
63 std::vector<StateType>
const& deadlockStateIndices = {},
64 std::vector<StateType>
const& unexploredStateIndices = {})
override;
66 virtual std::shared_ptr<storm::storage::sparse::ChoiceOrigins>
generateChoiceOrigins(std::vector<boost::any>& dataForChoiceOrigins)
const override;
77 storm::expressions::ExpressionEvaluator<ValueType>&
evaluator)
const override;
83 uint64_t getLocation(
CompressedState const&
state, LocationVariableInformation
const& locationVariable)
const;
88 void setLocation(
CompressedState&
state, LocationVariableInformation
const& locationVariable, uint64_t locationIndex)
const;
112 storm::generator::LocationVariableInformation
const& locationVariable, int64_t assignmentlevel,
113 storm::expressions::ExpressionEvaluator<ValueType>
const& expressionEvaluator);
125 storm::expressions::ExpressionEvaluator<ValueType>
const& expressionEvaluator)
const;
134 virtual storm::storage::BitVector evaluateObservationLabels(
CompressedState const&
state)
const override;
142 TransientVariableValuation<ValueType> getTransientVariableValuationAtLocations(std::vector<uint64_t>
const& locations,
143 storm::expressions::ExpressionEvaluator<ValueType>
const&
evaluator)
const;
159 Choice<ValueType> expandNonSynchronizingEdge(storm::jani::Edge
const& edge, uint64_t outputActionIndex, uint64_t automatonIndex,
162 typedef std::vector<std::pair<uint64_t, storm::jani::Edge const*>> EdgeSetWithIndices;
163 typedef std::unordered_map<uint64_t, EdgeSetWithIndices> LocationsAndEdges;
164 typedef std::vector<std::pair<uint64_t, LocationsAndEdges>> AutomataAndEdges;
165 typedef std::pair<boost::optional<uint64_t>, AutomataAndEdges> OutputAndEdges;
167 typedef std::pair<uint64_t, EdgeSetWithIndices> AutomatonAndEdgeSet;
168 typedef std::vector<AutomatonAndEdgeSet> AutomataEdgeSets;
170 void expandSynchronizingEdgeCombination(AutomataEdgeSets
const& edgeCombination, uint64_t outputActionIndex,
CompressedState const&
state,
171 StateToIdCallback stateToIdCallback, std::vector<Choice<ValueType>>& newChoices);
172 void generateSynchronizedDistribution(storm::storage::BitVector
const&
state, AutomataEdgeSets
const& edgeCombination,
173 std::vector<EdgeSetWithIndices::const_iterator>
const& iteratorList,
174 storm::generator::Distribution<StateType, ValueType>& distribution, std::vector<ValueType>& stateActionRewards,
180 void checkGlobalVariableWritesValid(AutomataEdgeSets
const& enabledEdges)
const;
185 std::vector<ValueType> evaluateRewardExpressions()
const;
190 void addEvaluatedRewardExpressions(std::vector<ValueType>& rewards, ValueType
const& factor)
const;
195 void buildRewardModelInformation();
200 void createSynchronizationInformation();
205 void checkValid()
const;
208 storm::jani::Model model;
211 std::vector<std::reference_wrapper<storm::jani::Automaton const>> parallelAutomata;
214 std::vector<OutputAndEdges> edges;
217 std::vector<std::pair<std::string, storm::expressions::Expression>> rewardExpressions;
220 std::vector<storm::builder::RewardModelInformation> rewardModelInformation;
223 bool hasStateActionRewards;
226 bool evaluateRewardExpressionsAtEdges;
229 bool evaluateRewardExpressionsAtDestinations;
232 storm::jani::ArrayEliminatorData arrayEliminatorData;
235 TransientVariableInformation<ValueType> transientVariableInformation;