Skip to content

Repository files navigation

Smart University Scheduler — Genetic Algorithms

Two-stage timetabling: conflict-free master schedule → personalized student schedules

Python PyGAD Pandas License: MIT

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.


Two-Stage Optimization

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"]
Loading

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.

Notebooks

Notebook Stage
1_Master_Schedule_Generation.ipynb generates optimized master_schedule.csv
2_Student_Schedule_Generation.ipynb builds a personal timetable from the master

Setup

git clone https://github.com/YazanAi-Dev3/Smart-University-Scheduler.git
cd Smart-University-Scheduler
pip install -r requirements.txt

Run the two notebooks in order.

Tech Stack

Python · PyGAD (genetic algorithms) · Pandas

License

MIT — see LICENSE.

About

Two-stage genetic-algorithm timetabling — one GA builds a conflict-free master schedule under hard and soft constraints, a second GA derives each student's personal timetable from it.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages