pm4py.algo.simulation.montecarlo.variants package#
PM4Py – A Process Mining Library for Python
Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.
Website: https://processintelligence.solutions Contact: info@processintelligence.solutions
Submodules#
pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo module#
PM4Py – A Process Mining Library for Python
Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.
Website: https://processintelligence.solutions Contact: info@processintelligence.solutions
- class pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.Parameters(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[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'#
- class pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.Outputs(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
Bases:
Enum
- OUTPUT_PLACES_INTERVAL_TREES = 'places_interval_trees'#
- OUTPUT_TRANSITIONS_INTERVAL_TREES = 'transitions_interval_trees'#
- OUTPUT_CASES_EX_TIME = 'cases_ex_time'#
- OUTPUT_MEDIAN_CASES_EX_TIME = 'median_cases_ex_time'#
- OUTPUT_CASE_ARRIVAL_RATIO = 'input_case_arrival_ratio'#
- OUTPUT_TOTAL_CASES_TIME = 'total_cases_time'#
- class pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.SimulationDiagnostics(sim_thread)[source]#
Bases:
Thread
- class pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.SimulationThread(id, net, im, fm, map, start_time, places_interval_trees, transitions_interval_trees, cases_ex_time, list_cases, enable_diagnostics, diagn_interval, small_scale_factor, max_thread_exec_time)[source]#
Bases:
Thread
- pm4py.algo.simulation.montecarlo.variants.petri_semaph_fifo.apply(log: EventLog, net: PetriNet, im: Marking, fm: Marking, parameters: Dict[str | Parameters, Any] | None = None) Tuple[EventLog, Dict[str, Any]] [source]#
Performs a Monte Carlo simulation of an accepting Petri net without duplicate transitions and where the preset is always distinct from the postset (FIFO variant; the semaphores pile up if waiting is needed, and the first in is the first to win the semaphore)
Parameters#
- log
Event log
- net
Accepting Petri net without duplicate transitions and where the preset is always distinct from the postset
- im
Initial marking
- fm
Final marking
- parameters
- Parameters of the algorithm:
PARAM_NUM_SIMULATIONS => (default: 100) PARAM_FORCE_DISTRIBUTION => Force a particular stochastic distribution (e.g. normal) when the stochastic map is discovered from the log (default: None; no distribution is forced) PARAM_ENABLE_DIAGNOSTICS => Enable the printing of diagnostics (default: True) PARAM_DIAGN_INTERVAL => Interval of time in which diagnostics of the simulation are printed (default: 32) PARAM_CASE_ARRIVAL_RATIO => Case arrival of new cases (default: None; inferred from the log) PARAM_PROVIDED_SMAP => Stochastic map that is used in the simulation (default: None; inferred from the log) PARAM_MAP_RESOURCES_PER_PLACE => Specification of the number of resources available per place (default: None; each place gets the default number of resources) PARAM_DEFAULT_NUM_RESOURCES_PER_PLACE => Default number of resources per place when not specified (default: 1; each place gets 1 resource and has to wait for the resource to finish) PARAM_SMALL_SCALE_FACTOR => Scale factor for the sleeping time of the actual simulation (default: 864000.0, 10gg) PARAM_MAX_THREAD_EXECUTION_TIME => Maximum execution time per thread (default: 60.0, 1 minute)
Returns#
- simulated_log
Simulated event log
- simulation_result
- Result of the simulation:
Outputs.OUTPUT_PLACES_INTERVAL_TREES => inteval trees that associate to each place the times in which it was occupied. Outputs.OUTPUT_TRANSITIONS_INTERVAL_TREES => interval trees that associate to each transition the intervals of time in which it could not fire because some token was in the output. Outputs.OUTPUT_CASES_EX_TIME => Throughput time of the cases included in the simulated log Outputs.OUTPUT_MEDIAN_CASES_EX_TIME => Median of the throughput times Outputs.OUTPUT_CASE_ARRIVAL_RATIO => Case arrival ratio that was specified in the simulation Outputs.OUTPUT_TOTAL_CASES_TIME => Total time occupied by cases of the simulated log