System map
Four inputs, one solver, one published term.
The whole system, on one page. Configuration and rules feed a constraint solver that produces a conflict-free semester schedule. Daily changes branch off to a separate engine and never touch it.
1Configure + constraint
- Departments
- Rooms
- Faculty
- Subjects
- Calendar
- Scheduling rules
2Solve
CP-SAT solver
Google OR-Tools searches for a feasible, conflict-free assignment. Departments run in parallel; progress streams over SSE.
3Publish
Published timetable
ImmutableAfter publishing · runs daily
4Operate
Greedy daily engine
Append-only. Resolves changes against the published schedule without re-running the solver.
- Substitutes
- Room swaps
- Makeup classes
Legend
- CONFIGURE
- Model the institution — departments, rooms, faculty availability, subjects, and the academic calendar. Entered once at the start of the year.
- CONSTRAINT
- Write scheduling rules in plain language. A parser turns “no labs after 4pm” into hard constraints the solver must honour.
- SOLVE
- A CP-SAT engine (Google OR-Tools) searches for a feasible, conflict-free assignment. Progress streams live over SSE while it runs.
- OPERATE
- Published timetables are immutable. A lightweight greedy engine resolves absences and room blocks — the heavy solver never runs twice.
1.0
2.0
3.0
4.0