1#ifndef BPMNOS_Model_StochasticDataProvider_H
2#define BPMNOS_Model_StochasticDataProvider_H
29 unsigned int seed = 0);
31 const std::string& instanceFileOrString,
unsigned int seed = 0);
34 std::unique_ptr<Scenario>
createScenario(
unsigned int scenarioId = 0)
override;
57 std::unordered_map<const Attribute*, BPMNOS::number>
data;
60 std::unordered_map<long unsigned int, StochasticInstanceData>
instances;
67 std::unordered_map<size_t, std::unordered_map<const BPMN::Node*, std::vector<ArrivalExpression>>>
arrivalExpressions;
70 std::unordered_map<size_t, std::unordered_map<const BPMN::Node*, std::vector<CompletionExpression>>>
completionExpressions;
73 std::unordered_map<size_t, std::unordered_map<const BPMN::Node*, BPMNOS::number>>
disclosure;
79 std::optional<BPMNOS::number> value = std::nullopt);
80 std::pair<std::string, std::string>
parseInitialization(
const std::string& initialization)
const;
Abstract base class representing a data provider for BPMN instance data.
Data provider supporting stochastic behavior.
void ensureDefaultValue(StochasticInstanceData &instance, const std::string attributeId, std::optional< BPMNOS::number > value=std::nullopt)
std::unordered_map< size_t, std::unordered_map< const BPMN::Node *, BPMNOS::number > > disclosure
Node disclosure times.
StochasticDataProvider(const std::string &modelFile, const std::string &instanceFileOrString, unsigned int seed=0)
const LIMEX::Handle< double > & getStochasticHandle() const
Get the stochastic LIMEX handle (for expression compilation)
BPMNOS::number evaluateExpression(const std::string &expression) const
std::unordered_map< size_t, std::unordered_map< const BPMN::Node *, std::vector< CompletionExpression > > > completionExpressions
Completion expressions per (instance, node)
BPMNOS::number latestInstantiation
std::unordered_map< long unsigned int, StochasticInstanceData > instances
std::unordered_map< size_t, std::unordered_map< const BPMN::Node *, std::vector< ArrivalExpression > > > arrivalExpressions
Arrival expressions per (instance, node)
std::pair< std::string, std::string > parseInitialization(const std::string &initialization) const
BPMNOS::number getEffectiveDisclosure(size_t instanceId, const BPMN::Node *node, BPMNOS::number ownDisclosure)
LIMEX::Handle< double > stochasticHandle
Dedicated LIMEX handle with lookup tables + random functions.
RandomDistributionFactory randomFactory
Random distribution factory.
BPMNOS::number earliestInstantiation
std::unordered_map< const Attribute *, BPMNOS::number > globalValueMap
std::unique_ptr< Scenario > createScenario(unsigned int scenarioId=0) override
std::unordered_map< size_t, std::vector< StochasticPendingDisclosure > > pendingDisclosures
Pending disclosures with expressions to evaluate at disclosure time.
~StochasticDataProvider() override=default
void initializeStochasticHandle()
Factory for random distribution functions in LIMEX expressions.
Base class for all nodes in a BPMN model.
BPMNOS_NUMBER_TYPE number
std::unordered_map< const Attribute *, BPMNOS::number > data
BPMNOS::number instantiation
const BPMN::Process * process