An intelligent timetabling system that uses Genetic Algorithms to first generate a conflict-free master schedule for all courses, then build an optimal personal timetable for each student.
flowchart TD
IN["Courses · classrooms · teachers · constraints"] --> GA1["Stage 1 · Master Schedule GA<br/>(genetic_algorithm_schedulerPYGAD.py)"]
GA1 --> HARD["Hard constraints:<br/>no room/teacher double-booking"]
GA1 --> SOFT["Soft constraints:<br/>teacher time preferences"]
HARD --> MS["master_schedule.csv"]
SOFT --> MS
MS --> GA2["Stage 2 · Student Schedule GA<br/>(student_scheduler_ga.py)"]
GA2 --> OUT["Per-student conflict-free timetable"]
The system separates the master scheduling problem (all courses) from the student scheduling problem (one student's registered courses), solving each with a dedicated GA via the pygad library. Fitness convergence is visualized in master_schedule_fitness.png and student_103_fitness.png.
| Notebook | Stage |
|---|---|
1_Master_Schedule_Generation.ipynb |
generates optimized master_schedule.csv |
2_Student_Schedule_Generation.ipynb |
builds a personal timetable from the master |
git clone https://github.com/YazanAi-Dev3/Smart-University-Scheduler.git
cd Smart-University-Scheduler
pip install -r requirements.txtRun the two notebooks in order.
Python · PyGAD (genetic algorithms) · Pandas
MIT — see LICENSE.