Skip to content

Silhouetting the Cost-Time Front: Multi-Objective Resource Optimization in Business Processes

Notifications You must be signed in to change notification settings

orlenyslp/bpm-r-opt

Repository files navigation

bpm-r-opt

Silhouetting the Cost-Time Front: Multi-Objective Resource Optimization in Business Processes

This repository contains the implementation and experimental results of a multi-objective optimization approach to compute a set of Pareto-optimal resource allocations for a given business process minimizing the resource cost and cycle time.

The source code includes two variants of the hill-climbing algorithm, named HC-STRICT and HC-FLEX, one implementation of the tabu-search algorithm named TS-STRICT and one implementation of the genetic algorithm NSGA-II.

Download or clone the source code. Then, to execute the four algorithms and display the experimental results, i.e., which compare the algorithms regarding different metrics, perform the following steps.

Input and Output

The algorithms take as input simulation models discovered from event logs. The folder ./input_files/bpmn_simod_models/ contains the simulation models corresponding to the eight business processes used in the experiments. These models were discovered from event logs (7 of them from real-life business processes) using the tool named Simod (https://github.com/AdaptiveBProcess/Simod). Because several of the event logs used in the experiments are proprietary, we are not sharing them publicly in the repository. Instead, we share the simulation models discovered after anonymizing the event logs. To execute the algorithms on other business processes, add the corresponding simulation models into this folder.

The folder output_files contains the results obtained by each algorithm on each of the business processes used in the experiments. This folder contains four sub-folders. The folder ./output_files/simulation_results/ includes the results of each simulation performed with the tool BIMP (https://bimp.cs.ut.ee/) used to assess each resource allocation. The folder ./output_files/explored_allocations/ contains the complete information regarding all the resource allocations obtained on each of the iterations performed by each algorithm. The folder ./output_files/experiment_stats/ includes all the graphical plots and statistics retrieved by each metric used to assess the algorithms' performance. Finally, the folder ./output_files/bimp_temp_files/ contains some temporal files produced by the engine BIMP with the simulation results. Note that these folders contain all the data obtained from the experiments. New runs of the algorithms on other models or modifying the existing models' parameters would add new files or modify the existing ones.

Note that the files in ./output_files/simulation_results/ were compressed due to their size. For the algorithms to use those files, they must be unzipped. In other words, when running the algorithms, they check in the corresponding unzipped (.csv) file if the simulation results of each generated resource allocation exist. Otherwise, the model is simulated using the engine BIMP. Thus, if the corresponding simulation files do not exist after the first simulation, a new file will be created to memorize (and re-use) the incoming simulation results.

Execution Steps

Prerequisites

All the algorithms can be executed by running the Python script ./bpropt.py in the root directory. By default, it will print in the terminal the experimental results corresponding to the business process named production, which corresponds to the default configuration in the script ./bpropt.py.

The following mapping in ./bpropt.py restricts which algorithms to execute:

to_execute = {'HC-STRICT': False,
              'HC-FLEX': False,
              'TS-STRICT': False,
              'NSGA-II': False,
              'METRICS': True}

Acccordingly, to selectively execute one or multiple algorithms, set the corresponding values to True before executing the script. Similarly, setting the value of 'METRICS' to True will calculate the performance metrics generating the corresponding graphics and statistics once all the algorithms' execution finishes.

The mapping experiment_logs in ./bpropt.py indexes the names of the business processes used in the experimentation. The corresponding file paths to the inputs/outputs of each process are stored in the mapping xes_simodbpmn_file_paths in the file ./support_modules/file_manager.py. Thus, adding a new process or changing the input/output paths of the existing ones only requires updating those two mappings accordingly.

Finally, from the function main, it is possible to execute the selected algorithms on all the processes (remove comments in lines 50-51) indexed in the mapping experiment_logs. Also, the selected algorithms can be executed on only one process by specifying its index in experiment_logs as the first input parameter of the function execute_algorithm_variants (line 57). The remaining input parameters of the function execute_algorithm_variants corresponds to the maximum number of resource allocations to generate, the maximum ratio of consecutive non-optimal allocations to generate regarding the maximum amount of allocations, and the last parameter is the number of simulations to run to assess each resource allocation.

About

Silhouetting the Cost-Time Front: Multi-Objective Resource Optimization in Business Processes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages