61 std::vector<StateType>
const& initialStateIndices = {},
62 std::vector<StateType>
const& deadlockStateIndices = {},
63 std::vector<StateType>
const& unexploredStateIndices = {})
override;
65 virtual std::shared_ptr<storm::storage::sparse::ChoiceOrigins>
generateChoiceOrigins(std::vector<boost::any>& dataForChoiceOrigins)
const override;
76 storm::expressions::ExpressionEvaluator<ValueType>&
evaluator)
const override;
82 uint64_t getLocation(
CompressedState const&
state, LocationVariableInformation
const& locationVariable)
const;
87 void setLocation(
CompressedState&
state, LocationVariableInformation
const& locationVariable, uint64_t locationIndex)
const;
111 storm::generator::LocationVariableInformation
const& locationVariable, int64_t assignmentlevel,
112 storm::expressions::ExpressionEvaluator<ValueType>
const& expressionEvaluator);
124 storm::expressions::ExpressionEvaluator<ValueType>
const& expressionEvaluator)
const;
133 virtual storm::storage::BitVector evaluateObservationLabels(
CompressedState const&
state)
const override;
141 TransientVariableValuation<ValueType> getTransientVariableValuationAtLocations(std::vector<uint64_t>
const& locations,
142 storm::expressions::ExpressionEvaluator<ValueType>
const&
evaluator)
const;
158 Choice<ValueType> expandNonSynchronizingEdge(storm::jani::Edge
const& edge, uint64_t outputActionIndex, uint64_t automatonIndex,
161 typedef std::vector<std::pair<uint64_t, storm::jani::Edge const*>> EdgeSetWithIndices;
162 typedef std::unordered_map<uint64_t, EdgeSetWithIndices> LocationsAndEdges;
163 typedef std::vector<std::pair<uint64_t, LocationsAndEdges>> AutomataAndEdges;
164 typedef std::pair<boost::optional<uint64_t>, AutomataAndEdges> OutputAndEdges;
166 typedef std::pair<uint64_t, EdgeSetWithIndices> AutomatonAndEdgeSet;
167 typedef std::vector<AutomatonAndEdgeSet> AutomataEdgeSets;
169 void expandSynchronizingEdgeCombination(AutomataEdgeSets
const& edgeCombination, uint64_t outputActionIndex,
CompressedState const&
state,
170 StateToIdCallback stateToIdCallback, std::vector<Choice<ValueType>>& newChoices);
171 void generateSynchronizedDistribution(storm::storage::BitVector
const&
state, AutomataEdgeSets
const& edgeCombination,
172 std::vector<EdgeSetWithIndices::const_iterator>
const& iteratorList,
173 storm::generator::Distribution<StateType, ValueType>& distribution, std::vector<ValueType>& stateActionRewards,
179 void checkGlobalVariableWritesValid(AutomataEdgeSets
const& enabledEdges)
const;
184 std::vector<ValueType> evaluateRewardExpressions()
const;
189 void addEvaluatedRewardExpressions(std::vector<ValueType>& rewards, ValueType
const& factor)
const;
194 void buildRewardModelInformation();
199 void createSynchronizationInformation();
204 void checkValid()
const;
207 storm::jani::Model model;
210 std::vector<std::reference_wrapper<storm::jani::Automaton const>> parallelAutomata;
213 std::vector<OutputAndEdges> edges;
216 std::vector<std::pair<std::string, storm::expressions::Expression>> rewardExpressions;
219 std::vector<storm::builder::RewardModelInformation> rewardModelInformation;
222 bool hasStateActionRewards;
225 bool evaluateRewardExpressionsAtEdges;
228 bool evaluateRewardExpressionsAtDestinations;
231 storm::jani::ArrayEliminatorData arrayEliminatorData;
234 TransientVariableInformation<ValueType> transientVariableInformation;