Task Scheduling Optimization Using Genetic Algorithms
This project implements a genetic algorithm (GA) to optimize maintenance task scheduling, balancing interval utilization with daily workload constraints. It was developed for AAE 5103 (Aerospace Engineering course).
The system schedules maintenance tasks by:
- Maximizing efficiency: Scheduling tasks within an optimal window (80% or 90% of their required interval)
- Respecting constraints: Limiting daily man-hours (MH) to avoid resource overload
- Using genetic algorithms: Evolving solutions through selection, crossover, and mutation
├── Data Cleaning.ipynb # Raw data preprocessing and interval parsing
├── EDA.ipynb # Exploratory data analysis and visualizations
├── GA80%.ipynb # Genetic algorithm (80% interval utilization)
├── GA90%.ipynb # Genetic algorithm (90% interval utilization)
├── Clean Data.xlsx # Cleaned dataset (intermediate)
├── Clean Data 2.xlsx # Cleaned dataset v2 (used by GA)
├── Optimized_Schedule.xlsx # GA output schedule
├── requirements.txt # Python dependencies
└── README.md # This file
-
Data Cleaning (
Data Cleaning.ipynb)- Loads raw maintenance data
- Parses interval formats (days, months, hours)
- Computes
Lastdate,interval_days, andEstMH_hours - Outputs cleaned data for analysis
-
Exploratory Data Analysis (
EDA.ipynb)- Statistical summaries and distributions
- Interval and workload analysis
- Visualizations (interval categories, man-hours, timelines)
-
Genetic Algorithm (
GA80%.ipynborGA90%.ipynb)- 80% variant: Plans tasks within 80–90% of their interval
- 90% variant: Plans tasks within 90–100% of their interval
- Features: tournament selection, uniform crossover, adaptive mutation, elitism, immigration on stagnation
- Outputs: optimized schedule, daily workload summary, conflict detection, GA evolution metrics
| Parameter | Default | Description |
|---|---|---|
POP_SIZE |
500 | Population size |
N_GENERATIONS |
5000 | Number of generations |
CROSSOVER_RATE |
0.7 | Crossover probability |
MUTATION_RATE |
0.05 | Base mutation rate |
DAILY_MH_LIMIT |
20 | Max man-hours per day |
TOURNAMENT_SIZE |
3 | Tournament selection size |
# Clone the repository
git clone https://github.com/AfonsoZhang/mro-maintenance-scheduling-ga.git
cd mro-maintenance-scheduling-ga
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt- Run
Data Cleaning.ipynbto produce cleaned data (or use existingClean Data 2.xlsx) - Run
EDA.ipynbfor exploratory analysis - Run
GA80%.ipynborGA90%.ipynbto generate optimized schedules - Results are exported to
Optimized_Schedule.xlsx
- Python 3.8+
- pandas
- numpy
- matplotlib
- seaborn
- numba
- openpyxl
- python-dateutil
See requirements.txt for pinned versions.
The GA produces:
- Schedule sheet: Task IDs, Last/Planned dates, Gap_Days, Interval_Utilization
- Daily_Workload sheet: Per-day MH totals and task lists
- Conflicts sheet: Days exceeding the MH limit (if any)
- GA_Evolution sheet: Fitness and mutation rate over generations
AAE 5103 Group Project Team
This project is for educational purposes (AAE 5103 course).