pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo module#

class pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.Parameters(*values)[source]#

Bases: Enum

ACTIVITY_KEY = 'pm4py:param:activity_key'#
TIMESTAMP_KEY = 'pm4py:param:timestamp_key'#
TOKEN_REPLAY_VARIANT = 'token_replay_variant'#
PARAM_NUM_SIMULATIONS = 'num_simulations'#
PARAM_FORCE_DISTRIBUTION = 'force_distribution'#
PARAM_ENABLE_DIAGNOSTICS = 'enable_diagnostics'#
PARAM_DIAGN_INTERVAL = 'diagn_interval'#
PARAM_CASE_ARRIVAL_RATIO = 'case_arrival_ratio'#
PARAM_PROVIDED_SMAP = 'provided_stochastic_map'#
PARAM_MAP_RESOURCES_PER_PLACE = 'map_resources_per_place'#
PARAM_DEFAULT_NUM_RESOURCES_PER_PLACE = 'default_num_resources_per_place'#
PARAM_SMALL_SCALE_FACTOR = 'small_scale_factor'#
PARAM_MAX_THREAD_EXECUTION_TIME = 'max_thread_exec_time'#
pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.simulate_case(case_id, net, im, fm, smap, start_time, places_interval_trees, transitions_interval_trees, cases_ex_time, list_cases, small_scale_factor)[source]#

Generator that simulates a single case. Instead of sleeping, it yields its current virtual (simulation) time.

pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.run_simulation_generators(sim_gens)[source]#

Runs the simulation generators concurrently (in virtual time) using a priority queue.

pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.apply(log, net, im, fm, parameters=None)[source]#

Performs a Monte Carlo simulation of an accepting Petri net using a generator-based scheduler.

Parameters:
  • log (EventLog) – Event log.

  • net (PetriNet) – Petri net.

  • im (Marking) – Initial marking.

  • fm (Marking) – Final marking.

  • parameters (dict, optional) – Dictionary of simulation parameters.

Returns:

A tuple (simulated_log, simulation_result) where simulation_result is a dictionary:

simulation_result = {
    "output_places_interval_trees": places_interval_trees,
    "output_transitions_interval_trees": transitions_interval_trees_named,
    "cases_ex_time": cases_ex_time,
    "median_cases_ex_time": median(cases_ex_time),
    "case_arrival_ratio": case_arrival_ratio,
    "total_cases_time": max_timestamp - min_timestamp,
}

Return type:

tuple