# Efficient Task Scheduling Using Constraints Programming for Enhanced Planning and Reliability
## 3 Methodology
### Data Preparation  
The data used in this study were collected from Korean Air's MRO (Seoul, Republic of Korea) maintenance logs. The dataset includes historical records of various engine maintenance tasks and subtasks, such as disassembly, inspection, repair, and reassembly. Each record contains information about the task type, duration, start time, and completion time. To estimate the duration of each task and subtask, we calculated the average duration based on historical data. This approach provides a reliable estimate for scheduling purposes. The average duration values were derived from past maintenance records, ensuring they reflect realistic time frames for task completion. We focused on scheduling MRO tasks for a one-year period. This timeframe allowed for the inclusion of regular inspections, planned maintenance, and unexpected repairs, providing a comprehensive view of the scheduling requirements and challenges. Table 1 shows an example of a simplified table describing subtasks and their working days for an PW1100G-type engine depending on the level of the work. Each subtask has maintenance levels from 0 to 3 depending on the difficulty of the subtask, which results in working days for the maintenance. There is a set of whole tables like Table 1 for all the engine types. \begin{table}
\begin{tabular}{c c c c c c c c c} \hline
**Subtask\textbackslash{}Level** & **L0** & **L1.3** & **L1.9** & **L2.3** & **L2.3** & **L2.3** & **L2.9** & **L3** \\ \hline FRG & 1 & 1 & 7 & 2 & 6 & 6 & 7 & 6 \\ \hline FDBG & 1 & 2 & 5 & 8 & & & 8 & 8 \\ \hline FDGG & 1 & 1 & 3 & 2 & & & & 4 \\ \hline FICG & 1 & 4 & 5 & 5 & & & 6 & 5 \\ \hline
2 BG & 1 & 1 & 2 & 3 & & & & 4 \\ \hline FCG & 1 & 1 & 3 & 7 & & 9 & 8 \\ \hline LCSG & 1 & 2 & 5 & 6 & & 9 & 8 \\ \hline LCRG & 1 & 1 & 4 & 3 & & & 4 \\ \hline
25 BLG & 1 & 1 & 2 & 3 & & 4 & 4 \\ \hline CICG & 1 & 1 & 3 & 5 & & 6 & 6 \\ \hline
3 BG & 1 & 1 & 3 & 4 & & & 5 \\ \hline HCRSG & 1 & 2 & 7 & 24 & & 25 & 22 \\ \hline HCFCG & 1 & 1 & 7 & 11 & & 22 & 20 \\ \hline HCRG & 1 & 2 & 7 & 21 & & & 22 & 19 \\ \hline DCG & 1 & 1 & 3 & 6 & & & & 8 \\ \hline CTNG & 1 & 1 & 2 & 3 & 4 & 6 & 10 & & 11 \\ \hline HTSG & 1 & 2 & 4 & 10 & & & 13 & 12 \\ \hline HTRG & 1 & 1 & 2 & 3 & & & & 5 & 5 \\ \hline TICG & 1 & 2 & 9 & 8 & & & & 10 & 9 \\ \hline LTSG & 1 & 2 & 6 & 37 & & & & 23 & 20 \\ \hline LTRG & 1 & 2 & 4 & & 5 & 6 & 7 & 8 & 7 \\ \hline TECG & 1 & 3 & 9 & 10 & & & & 11 & 10 \\ \hline MGBG & 1 & & 5 & 11 & & & & 16 \\ \hline AGBG & 1 & & 2 & 5 & & & & 5 \\ \hline Other & & & & 10 & & & & & \\ \hline \end{tabular}
\end{table} 
Table 1: An example table of subtasks and working days of an PW1100G-type engine (unit: day). Table 2 shows an example task table describing a set of subtasks to be conducted for the checkup of an engine. Working days were extracted from Table 1 based on subtask and level. Most of the regular checkups have similar tables depending on the checkup level or fault type and engine type. So, the table has a name like type_level_version.csv, for example, PW1100G_A_1.0.csv. These tables are maintained as a library for the MRO system. To plan MRO tasks for the year, we needed a list of expected tasks as shown in Table 3, where the start day is the expected start day of the task from the beginning of the year. Each csv file has a task table like Table 2. \begin{table}
\begin{tabular}{c c c c} \hline
**No.** & **Subtask** & **Level** & **Days** \\ \hline
1 & HCRSG & L0 & 1 \\ \hline
2 & HCFCG & L0 & 1 \\ \hline
3 & HCRG & L0 & 1 \\ \hline
4 & DCG & L0 & 1 \\ \hline
5 & CTNG & L0 & 1 \\ \hline
6 & HTSG & L0 & 1 \\ \hline
7 & HTRG & L0 & 1 \\ \hline
8 & TICG & L1.3 & 2 \\ \hline
9 & LTRG & L1.3 & 2 \\ \hline
10 & TECG & L1.3 & 3 \\ \hline
11 & FDGG & L1.9 & 3 \\ \hline
12 & FICG & L1.9 & 5 \\ \hline
13 & FCG & L1.9 & 3 \\ \hline
14 & LCSG & L1.9 & 5 \\ \hline
15 & 25 BLG & L1.9 & 2 \\ \hline
16 & CICG & L1.9 & 3 \\ \hline
17 & LTSG & L1.9 & 6 \\ \hline
18 & MGBG & L1.9 & 5 \\ \hline
19 & AGBG & L1.9 & 2 \\ \hline
20 & Other & L2.3 & 10 \\ \hline \end{tabular}
\end{table}