Flexible and Hierarchical Decomposition of Workflow Nets for Process Conformance
Overview
The data directory contains all the models and logs used in this paper.
The experiments directory contains the code for the new decomposition algorithm, along with scripts for running the experiments described in the paper.
The results directory contains the results of the experiments.
The sese-decomposer directory includes a wrapper around the ProM package AcceptingPetriNetDecomposer, which is used to create the SESE-decomposition in the experiments.
Experiment Results
The results for each experiment are stored in separate directories within the results directory. These directories contain several .json
files, each capturing the results for a specific model. For example, A100.json contains the results for A100.pnml.
Experiment 1
Experiment 1 runs all fitness-checking algorithms on all model-log pairs from generated and bpm2013. Each .json
file for a model-log pair contains entries for every algorithm. Inside, the runtime and results of each algorithm are provided. For the decomposed algorithms, the time taken to create the decomposition is also included.
These results are visualized in figures 5 and 8. Figure 5 presents the runtime values, while figure 8 shows the deviation in log_fitness
between the decomposed and non-decomposed algorithms.
Experiment 2
Experiment 2 evaluates the new decomposed algorithm and the SESE-based fitness-checking algorithms across multiple runs on A100
, E100
, pr-1151
, and pr-1908
, each time increasing the maximum subnet size. For example, the entry under decomposed
> 26
> time
in A100.json captures the runtime of the fitness-checking algorithm using the new decomposition with a maximum subnet size of 26. The fitness results for each run are also stored.
Figure 7 visualizes the runtime values (time
) of the new decomposition-based algorithm. Figure 9 plots the fitness values (log_fitness
) against the number of subnets, which corresponds to the number of objects under the decomposition
key.
Experiment 3
Experiment 3 compares the runtime of the new decomposed and the non-decomposed fitness-checking algorithms on the same models as Experiment 2, but using different logs to study the impact of average trace length. The names of the logs indicate the average trace length. For example, A100-m50.xes.gz has an average trace length of 50. Additionally, there is always a variant of each log with the -noise.xes.gz
suffix, which includes noise; the other variant is perfectly fitting. The .json
result files contain entries for every combination of average trace length and noise. For instance, in A100.json, the entry under 80
> noise
> non_decomposed
> time
shows the runtime of the non-decomposed fitness-checking algorithm on the model A100.pnml using the log A100-m80-noise.xes.gz.
The runtime values for these experiments are plotted in figure 6 for each of the four combinations.
Running the Experiments
We recommend using Docker to run the experiments. A docker-compose.yml file is provided to set up all the dependencies and environment needed.
The experiment scripts check if the results already exist. Therefore, you should delete the contents of the results directory if you want to re-run all the experiments from scratch.
To run the experiments, execute the following command in the root directory:
docker compose run --build --rm flexible-decomposition
This will open a terminal inside the container in the experiments directory. To run a specific experiment, execute the corresponding Python file. For example, to run the first experiment:
python experiment1.py