Timed Genetic Process Mining for Robust Tracking of Processes under Incomplete Event Log Conditions
Abstract
:1. Introduction
2. Research Background
2.1. Process Mining
2.2. Event Log Completeness
2.3. Dual-Timestamp Event Log
2.4. Behavioral and Structural Appropriateness
2.4.1. Behavioral Appropriateness
2.4.2. Structural Appropriateness
2.5. Process Discovery
3. Experimental Setup
- True Positives (TP/Correct Relations): relations correctly identified in both the base and discovered models;
- False Positives (FP): relations identified in the discovered model but not in the base model;
- False Negatives (FN): relations present in the base model but not identified in the discovered model.
4. Comparison of Algorithms for the Recovery of Missing Events
4.1. Original Genetic Process Mining Algorithm
4.2. Timed Genetic Process Mining Algorithm
- Initialize population: generate an initial population of random process models based on the event log structure, with events containing starting and ending timestamps.
- Fitness evaluation: include time-aware fitness measures that consider both starting and ending timestamps. This involves calculating the sequence, temporal, and concurrency fitness for each model in the population.
- Selection, crossover, and mutation: apply genetic operations, with an emphasis on maintaining temporal consistency.
- Iterate, evolve, terminate, and select best model: continue evolving the population until convergence or a stopping criterion is met. Select the best model from the population based on the highest fitness score.
5. In-Depth Comparison of Experiments and Analysis
6. Advanced Metrics for Conformance Checking
7. Conclusions
Author Contributions
Funding
Data Availability Statement
Conflicts of Interest
Appendix A
Algorithm A1. Pseudocode of genetic process mining used to discover a process model. |
Initialize population P of process models Evaluate fitness of each model in P based on event log data while termination criteria not met do: Select parents from P based on fitness Apply crossover and mutation operators to create offspring Evaluate fitness of offspring based on event log data Replace least-fit models in P with offspring end while Select best model from P as the discovered process model |
Algorithm A2. Genetic process mining algorithm used to recover missing events. |
# Function to initialize population of event logs def initialize_population(event_log, population_size = 50): population = [] unique_activities = event_log[‘Activity’].unique() for _ in range(population_size): individual_log = event_log.copy() for case_group in individual_log grouped by ‘CaseID’: sort case_group by ‘Timestamp’ case_activities = list of ‘Activity’ from case_group case_timestamps = list of ‘Timestamp’ from case_group existing_activities = set of case_activities missing_activities = unique_activities − existing_activities # Function to insert missing activities for missing_activity in missing_activities: insertion_position = random position in case_activities insert missing_activity at insertion_position insert corresponding timestamp at insertion_position updated_rows = DataFrame with updated case_activities and case_timestamps append updated_rows to individual_log append sorted individual_log to population return population # Function to evaluate fitness score of an individual event log def evaluate_fitness_score(individual_log, reference_event_log): unique_activities_set = set of unique activities in reference_event_log fitness_score = 0 for case_group in individual_log grouped by ‘CaseID’: reference_activities = set of activities in reference case_group recovered_activities = set of activities in current case_group fitness_score += number of recovered_activities in unique_activities_set − reference_activities return fitness_score # Function to select the fittest individuals from the population def select_fittest(population, fitness_scores, selection_count): sorted_indices = indices of fitness_scores sorted in descending order fittest_individuals = top selection_count individuals from population using sorted_indices return fittest_individuals # Function to perform crossover between two parents to produce offspring def perform_crossover(parent1, parent2): offspring1, offspring2 = copies of parent1 and parent2 for case_id in parent1: if random value > 0.5: temp_case1 = parent2’s case with case_id temp_case2 = parent1’s case with case_id replace offspring1’s case with temp_case1 replace offspring2’s case with temp_case2 return offspring1, offspring2 # Function to perform mutation on an individual event log def perform_mutation(individual_log, mutation_rate = 0.1): unique_activities = unique activities in individual_log for case_group in individual_log grouped by ‘CaseID’: if random value < mutation_rate: sort case_group by ‘Timestamp’ case_activities = list of activities in case_group case_timestamps = list of timestamps in case_group mutation_position = random position in case_activities new_activity = random choice from unique_activities replace activity at mutation_position with new_activity updated_rows = DataFrame with updated case_activities and case_timestamps update individual_log with updated_rows return sorted individual_log # Genetic algorithm to recover missing activities def genetic_process_recovery(event_log, generations = 50, population_size = 50, mutation_rate = 0.1): population = initialize_population(event_log, population_size) for _ in range(generations): fitness_scores = list of fitness scores for each individual_log in population selected_population = select_fittest(population, fitness_scores, selection_count = population_size // 2) next_generation = [] while len(next_generation) < population_size: parent1, parent2 = random sample of 2 from selected_population offspring1, offspring2 = perform_crossover(parent1, parent2) perform_mutation(offspring1, mutation_rate) perform_mutation(offspring2, mutation_rate) next_generation.append(offspring1) next_generation.append(offspring2) population = next_generation best_individual_log = individual_log with highest fitness score in population return best_individual_log |
Algorithm A3. Timed genetic process mining algorithm used to recover missing events. |
# Function to read data from input file def read_data(file_path): event_log[‘Start Timestamp’] = pd.to_datetime(event_log[‘Start Timestamp’]) event_log[‘End Timestamp’] = pd.to_datetime(event_log[‘End Timestamp’]) event_log.columns = [‘CaseID’, ‘Activity’, ‘Start Timestamp’, ‘End Timestamp’] # Calculate average duration of each activity average_durations = {} grouped_event_log = event_log.groupby(‘Activity’) for activity, group in grouped_event_log: durations = group[‘End Timestamp’] − group[‘Start Timestamp’] average_duration = durations.mean() average_durations[activity] = average_duration # Fitness function to evaluate a sequence based on temporal gaps def evaluate_fitness(sequence, start_times, end_times): fitness_score = 0 for i in range(len(sequence) − 1): if i < len(start_times) − 1: expected_gap = average_durations[sequence[i + 1]] if start_times[i + 1] − end_times[i] >= expected_gap: fitness_score += 1 return fitness_score # Function to perform crossover between two parents def perform_crossover(parent1, parent2): if len(parent1) > 2 and len(parent2) > 2: crossover_point = random.randint(1, len(parent1) − 2) offspring1 = parent1[:crossover_point] + parent2[crossover_point:] offspring2 = parent2[:crossover_point] + parent1[crossover_point:] return offspring1, offspring2 else: return parent1, parent2 # Function to perform mutation on a sequence def perform_mutation(sequence, activity_pool): if len(sequence) > 1: mutation_index = random.randint(0, len(sequence) − 1) sequence[mutation_index] = random.choice(activity_pool) return sequence # Function to create an initial population of sequences def initialize_population(size, missing_activities): population = [] for _ in range(size): sequence = random.sample(missing_activities, len(missing_activities)) population.append(sequence) return population # Genetic algorithm to recover missing activities in an event log def genetic_process_recovery(event_log, generations = 50, population_size = 50): all_activities = event_log[‘Activity’].unique().tolist() recovered_log = [] for case_id, case_group in event_log.groupby(‘CaseID’): case_group = case_group.sort_values(by = ‘Start Timestamp’) case_activities = case_group[‘Activity’].tolist() start_times = case_group[‘Start Timestamp’].tolist() end_times = case_group[‘End Timestamp’].tolist() if case_activities[0] != all_activities[0]: initial_activity = all_activities[0] case_activities.insert(0, initial_activity) avg_duration = average_durations[initial_activity] start_times.insert(0, start_times[0] − avg_duration) end_times.insert(0, start_times[0] + avg_duration) if case_activities[−1] != all_activities[−1]: final_activity = all_activities[−1] case_activities.append(final_activity) avg_duration = average_durations[final_activity] start_times.append(end_times[−1]) end_times.append(start_times[−1] + avg_duration) existing_activities = set(case_activities) missing_activities = [activity for activity in all_activities if activity not in existing_activities] # Initialize population population = initialize_population(population_size, missing_activities) for _ in range(generations): # Evaluate fitness of each individual in the population fitness_scores = [evaluate_fitness(individual, start_times, end_times) for individual in population] # Select the best individuals max_fitness = max(fitness_scores) selected_population = [population[i] for i in range(len(population)) if fitness_scores[i] == max_fitness] # Generate new population through crossover and mutation new_population = [] while len(new_population) < population_size: parent1, parent2 = random.sample(selected_population, 2) offspring1, offspring2 = perform_crossover(parent1, parent2) new_population.extend([ perform_mutation(offspring1, missing_activities), perform_mutation(offspring2, missing_activities) ]) population = new_population # Initialize variable to keep track of the best individual and its fitness score best_individual = None max_fitness_score = -float(‘inf’) # Iterate through each individual in the population for individual in population: # Calculate the fitness score for the current individual fitness_score = evaluate_fitness(individual, start_times, end_times) # Update the best individual if the current fitness score is higher than the max fitness score if fitness_score > max_fitness_score: max_fitness_score = fitness_score best_individual = individual |
References
- Van der Aalst, W.M.P. Process mining: Data science in action. In Process Mining: Data Science in Action, 2nd ed.; Springer: Berlin/Heidelberg, Germany, 2016; pp. 140–178. [Google Scholar] [CrossRef]
- Process Mining Book. Available online: https://fluxicon.com/book/read/dataext/ (accessed on 1 September 2024).
- Van Midden, Y. Using process mining and event log analysis for better business strategy decision-making. In Proceedings of the 35th Twente Student Conference on IT, Enschede, The Netherlands, 2 July 2021. [Google Scholar]
- Yang, H.; van Dongen, B.F.; ter Hofstede, A.H.M.; Wynn, M.T.; Wang, J. Estimating completeness of event logs. BPM Rep. 2012, 1204, 12. [Google Scholar]
- Wang, L.; Fang, X.; Shao, C. Discovery of Business Process Models from Incomplete Logs. Electronics 2022, 11, 3179. [Google Scholar] [CrossRef]
- Butt, N.A.; Mahmood, Z.; Sana, M.U.; Díez, I.d.l.T.; Galán, J.C.; Brie, S.; Ashraf, I. Behavioral and Performance Analysis of a Real-Time Case Study Event Log: A Process Mining Approach. Appl. Sci. 2023, 13, 4145. [Google Scholar] [CrossRef]
- Li, C.; Ge, J.; Wen, L.; Kong, L.; Chang, V.; Huang, L.; Luo, B. A novel completeness definition of event logs and corresponding generation algorithm. Expert Syst. 2020, 37, e12529. [Google Scholar] [CrossRef]
- Bowman, S. Impact of electronic health record systems on information integrity: Quality and safety implications. Perspect. Health Inf. Manag. 2013, 10, 1c. [Google Scholar]
- Laplante, P.A.; Ovaska, S.J. Real-Time Systems Design and Analysis; IEEE: Piscataway, NJ, USA, 2012; Volume 3, pp. 154–196. [Google Scholar]
- Potter, S.; Nieh, J. Reducing downtime due to system maintenance and upgrades. In Proceedings of the 19th Large Installation System Administration Conference, San Diego, CA, USA, 4–9 December 2005; Volume 19, pp. 1–15. [Google Scholar]
- Berman, B.A.; Dismukes, R.K.; Jobe, K.K. Performance Data Errors in Air Carrier Operations: Causes and Countermeasures; National Aeronautics and Space Administration, Ames Research Center: Moffett Field, CA, USA, 2012; pp. 7–11.
- Cascio, W.F.; Montealegre, R. How Technology Is Changing Work and Organizations. Annu. Rev. Organ. Psychol. Organ. Behav. 2016, 3, 349–375. [Google Scholar] [CrossRef]
- Kock, N. Asynchronous and distributed process improvement: The role of collaborative technologies. Inf. Syst. J. 2001, 11, 87–110. [Google Scholar] [CrossRef]
- Effendi, Y.A.; Minsoo, K. Refining Process Mining in Port Container Terminals Through Clarification of Activity Boundaries With Double-Point Timestamps. ICIC Express Lett. Part B Appl. 2024, 15, 61–70. [Google Scholar] [CrossRef]
- Nguyen, O.T.; Alishahi Tabriz, A.; Huo, J.; Hanna, K.; Shea, C.M.; Turner, K. Impact of Asynchronous Electronic Communication-Based Visits on Clinical Outcomes and Health Care Delivery: Systematic Review. J. Med. Internet Res. 2021, 23, e27531. [Google Scholar] [CrossRef]
- De Medeiros, A.; Weijters, A.; Van der Aalst, W.M.P. Using Genetic Algorithms to Mine Process Models: Representation, Operators and Results; Beta Working Paper Series, WP 124; Eindhoven University of Technology: Eindhoven, The Netherlands, 2004. [Google Scholar]
- Huser, V. Process Mining: Discovery, Conformance and Enhancement of Business Processes. J. Biomed. Inform. 2012, 45, 1018–1019. [Google Scholar] [CrossRef]
- Jans, M.; De Weerdt, J.; Depaire, B.; Dumas, M.; Janssenswillen, G. Conformance Checking in Process Mining. Inf. Syst. 2021, 102, 101851. [Google Scholar] [CrossRef]
- Buijs, J.C.A.M.; van Dongen, B.F.; van der Aalst, W.M.P. On the role of fitness, precision, generalization and simplicity in process discovery. In On the Move to Meaningful Internet Systems: OTM 2012, 2nd ed.; Meersman, R., Panetto, H., Dillon, T., Rinderle-Ma, S., Dadam, P., Zhou, X., Pearson, S., Ferscha, A., Bergamaschi, S., Cruz, I.F., Eds.; Springer: Berlin/Heidelberg, Germany, 2012; Volume 7565, pp. 305–322. [Google Scholar]
- De Leoni, M. Foundations of Process Enhancement. In Process Mining Handbook. Lecture Notes in Business Information Processing; Van der Aalst, W.M.P., Carmona, J., Eds.; Springer: Cham, Switzerland, 2022; Volume 448. [Google Scholar] [CrossRef]
- Ayo, F.E.; Folorunso, O.; Ibharalu, F.T. A probabilistic approach to event log completeness. Expert Syst. Appl. 2017, 80, 263–272. [Google Scholar] [CrossRef]
- Yang, H.; Wen, L.; Wang, J. An approach to evaluate the local completeness of an event log. IEEE Int. Conf. Data Min. 2012, 12, 1164–1169. [Google Scholar] [CrossRef]
- Kang, H. The prevention and handling of missing data. Korean J. Anesthesiol. 2013, 64, 402–406. [Google Scholar] [CrossRef]
- Marin-Castro, H.M.; Tello-Leal, E. Event Log Preprocessing for Process Mining: A Review. Appl. Sci. 2021, 11, 10556. [Google Scholar] [CrossRef]
- Palaniswamy, S.R.; Jain, V.; Chakrabarti, D.; Bharadwaj, S.; Sriganesh, K. Completeness of manual data recording in the anaesthesia information management system: A retrospective audit of 1000 neurosurgical cases. Indian J. Anaesth. 2019, 63, 797–804. [Google Scholar] [CrossRef]
- Kent, K.; Souppaya, M. Guide to computer security log management. NIST Spec. Publ. 2006, 800–892, 1–72. [Google Scholar]
- Basin, D.; Klaedtke, F.; Marinovic, S.; Zalinescu, E. Monitoring compliance policies over incomplete and disagreeing logs. In Runtime Verification; Qadeer, S., Tasiran, S., Eds.; Springer: Berlin/Heidelberg, Germany, 2013. [Google Scholar] [CrossRef]
- Event Logging and Auditing. Available online: https://www.nzism.gcsb.govt.nz/ism-document/pdf/Section/15629 (accessed on 21 July 2024).
- Arain, M.A.; Tarraf, R.; Ahmad, A. Assessing staff awareness and effectiveness of educational training on IT security and privacy in a large healthcare organization. J. Multidiscip. Healthc. 2019, 12, 73–81. [Google Scholar] [CrossRef]
- Pan, Y.; Zhang, L. Automated process discovery from event logs in BIM construction projects. Autom. Constr. 2021, 127, 103713. [Google Scholar] [CrossRef]
- Sutrisnowati, R.A.; Bae, H.; Dongha, L.; Minsoo, K. Process model discovery based on activity lifespan. Int. Conf. Technol. Innov. Ind. Manag. 2014, 137–156. Available online: https://scholar.google.com/citations?view_op=view_citation&hl=en&user=zbYb2_4AAAAJ&citation_for_view=zbYb2_4AAAAJ:WF5omc3nYNoC (accessed on 6 August 2024).
- Sarno, R.; Kartini; Wibowo, W.A.; Solichah, A. Time Based Discovery of Parallel Business Processes. In Proceedings of the International Conference on Computer, Control, Informatics and Its Applications (IC3INA), Bandung, Indonesia, 5–7 October 2015; pp. 28–33. [Google Scholar] [CrossRef]
- Sarno, R.; Haryadita, F.; Sunaryono, D.; Munif, A. Model discovery of parallel business processes using modified Heuristic Miner. In Proceedings of the 2015 International Conference on Science in Information Technology (ICSITech), Yogyakarta, Indonesia, 27–28 October 2015; pp. 30–35. [Google Scholar] [CrossRef]
- Sarno, R.; Wibowo, W.A.; Kartini; Amelia, Y.; Rossa, K. Determining process model using Time-based Process Mining and control-flow pattern. Telkomnika (Telecommun. Comput. Electron. Control) 2016, 14, 349–3591. [Google Scholar] [CrossRef]
- Sungbum, P.; Young Sik, K. A Study of Process Mining-based Business Process Innovation. Procedia Comput. Sci. 2016, 91, 734–743. [Google Scholar] [CrossRef]
- Liu, D.; Guo, Y.; Huang, S.; Wang, S.; Wu, T. Dynamic production bottleneck prediction using a data-driven method in discrete manufacturing system. Adv. Eng. Inform. 2023, 58, 102162. [Google Scholar] [CrossRef]
- Elkhuizen, S.G.; Burger, M.P.M.; Jonkers, R.E.; Limburg, M.; Klazinga, N.; Bakker, P.J.M. Using Business Process Redesign to Reduce Wait Times at a University Hospital in the Netherlands. Jt. Comm. J. Qual. Patient Saf. 2007, 33, 332–341. [Google Scholar] [CrossRef]
- Dumas, M.; Van der Aalst, W.M.P.; Ter Hofstede, A.H.M. Process-Aware Information Systems: Bridging People and Software through Process Technology; John Wiley & Sons, Inc.: Hoboken, NJ, USA, 2005. [Google Scholar]
- Rozinat, A.; van der Aalst, W.M.P. Conformance checking of processes based on monitoring real behavior. Inf. Syst. 2008, 33, 64–95. [Google Scholar] [CrossRef]
- De Medeiros, A. Process Mining: Extending the α-Algorithm to Mine Short Loops; BETA Working Paper Series, WP 113; Eindhoven University of Technology: Eindhoven, The netherlands, 2004. [Google Scholar]
- Effendi, Y.A.; Sarno, R. Modeling parallel business process using modified time-based alpha miner. Int. J. Innov. Comput. Inf. Control 2018, 14, 1565–1579. [Google Scholar] [CrossRef]
- Mikolajczak, B.; Chen, J.L. Workflow Mining Alpha Algorithm—A Complexity Study. In Intelligent Information Processing and Web Mining. Advances in Soft Computing; Kłopotek, M.A., Wierzchoń, S.T., Trojanowski, K., Eds.; Springer: Berlin/Heidelberg, Germany, 2005; Volume 31. [Google Scholar] [CrossRef]
- Sarno, R.; Effendi, Y.A.; Haryadita, F. Modified time-based heuristics miner for parallel business processes. Int. Rev. Comput. Softw. (IRECOS) 2016, 11, 249–260. [Google Scholar] [CrossRef]
- Porouhan, P.; Jongsawat, N.; Premchaiswadi, W. Process and deviation exploration through Alpha-algorithm and Heuristic miner techniques. In Proceedings of the 2014 Twelfth International Conference on ICT and Knowledge Engineering, Bangkok, Thailand, 18–21 November 2014; pp. 83–89. [Google Scholar] [CrossRef]
- Effendi, Y.A.; Sarno, R.; Marsha, D.V. Improved fuzzy miner algorithm for business process discovery. Telecommun. Comput. Electron. Control 2023, 19, 1830–1839. [Google Scholar] [CrossRef]
- Siek, M. Investigating inductive miner and fuzzy miner in automated business model generation. In Proceedings of the 3rd International Conference on Computer, Science, Engineering and Technology, Changchun, China, 22–24 September 2023; Volume 2510. [Google Scholar] [CrossRef]
- Pohl, T.; Pegoraro, M. An Inductive Miner Implementation for the PM4PY Framework; i9 Process and Data Science (PADS); RWTH Aachen University: Aachen, Germany, 2019. [Google Scholar]
- Difflib—Helpers for Computing Deltas. Available online: https://docs.python.org/3/library/difflib.html (accessed on 2 September 2024).
- SequenceMatcher in Python. Available online: https://towardsdatascience.com/sequencematcher-in-python-6b1e6f3915fc (accessed on 2 September 2024).
- van Dongen, B.F.; Carmona, J.; Chatain, T. A unified approach for measuring precision and generalization based on anti-alignments. In Business Process Management, 14th International Conference, BPM 2016, Rio de Janeiro, Brazil, 18–22 September 2016; Proceedings; Springer: Berlin/Heidelberg, Germany, 2016; pp. 39–56. [Google Scholar]
- Adriansyah, A.; van Dongen, B.F.; van der Aalst, W.M.P. Conformance Checking Using Cost-Based Fitness Analysis. In Proceedings of the 2011 IEEE 15th International Enterprise Distributed Object Computing Conference, Helsinki, Finland, 29 August–2 September 2011; pp. 55–64. [Google Scholar] [CrossRef]
- Bergami, G.; Maggi, F.M.; Montali, M.; Peñaloza, R. Probabilistic Trace Alignment. In Proceedings of the 2021 3rd International Conference on Process Mining (ICPM), Eindhoven, The Netherlands, 31 October—4 November 2021; pp. 9–16. [Google Scholar] [CrossRef]
Algorithms | Maximum Generation Limit | Size of Population |
---|---|---|
The original genetic process mining | 50 | 50 |
The timed genetic process mining | 50 | 50 |
Metric | Relations Discovered by Original Genetic Process Mining |
---|---|
Correct/True Positives (TP) | 11 |
False Positives (FP) | 13 |
False Negatives (FN) | 15 |
Fitness | 0.423 |
Precision | 0.458 |
Metric | Relations Discovered by Timed Genetic Process Mining |
---|---|
Correct/True Positives (TP) | 22 |
False Positives (FP) | 0 |
False Negatives (FN) | 4 |
Fitness | 0.846 |
Precision | 1.000 |
Relations Discovered by Timed Genetic Process Mining | Relations Discovered by Original Genetic Process Mining |
---|---|
Coverage Score: 84.60% | Coverage Score: 42.30% |
Error Score: 0.00% | Error Score: 54.20% |
Process Model Discovered by Timed Genetic Process Mining | Process Model Discovered by Original Genetic Process Mining | |
---|---|---|
Node correspondence | Both discovery models include all nodes from the base model. (13 events) | |
Edge correspondence |
|
|
Flow sequence and frequency |
|
|
Visual structure | Has a structure closer to the base model with fewer missing flows, making it visually more similar to the base model, including both sequence and parallel processes. | Has a structure with additional incorrect flows, making it visually less similar to the base model. |
Conformance Metrics | Timed Genetic Process Mining | Original Genetic Process Mining |
---|---|---|
Trace similarity scores using sequence matcher | 0.9320 | 0.9070 |
Trace similarity scores using Levenshtein distance | 0.6804 | 0.6728 |
Cost-based fitness analysis | 0.7572 | 0.7464 |
Probabilistic trace alignment | 100% | 80% |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2024 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Effendi, Y.A.; Kim, M. Timed Genetic Process Mining for Robust Tracking of Processes under Incomplete Event Log Conditions. Electronics 2024, 13, 3752. https://doi.org/10.3390/electronics13183752
Effendi YA, Kim M. Timed Genetic Process Mining for Robust Tracking of Processes under Incomplete Event Log Conditions. Electronics. 2024; 13(18):3752. https://doi.org/10.3390/electronics13183752
Chicago/Turabian StyleEffendi, Yutika Amelia, and Minsoo Kim. 2024. "Timed Genetic Process Mining for Robust Tracking of Processes under Incomplete Event Log Conditions" Electronics 13, no. 18: 3752. https://doi.org/10.3390/electronics13183752
APA StyleEffendi, Y. A., & Kim, M. (2024). Timed Genetic Process Mining for Robust Tracking of Processes under Incomplete Event Log Conditions. Electronics, 13(18), 3752. https://doi.org/10.3390/electronics13183752