Solver / Automatic generation algorithm
The Omniscol solver automatically computes the placement of the lessons of a weekly, cyclic or calendar timetable. It places the created lessons that are not yet positioned, can move already positioned lessons if that improves the timetable, and keeps locked lessons in place.
How it works
When you start a generation, Omniscol spins up a dedicated, parallelized computing environment. There is no queue to manage on the school side; initialization often takes around ten seconds before the first visible computations. The result depends on the quality of the data entered: sites, rooms, teachers, groups, hour volumes, availability and incompatibilities. The more numerous or contradictory the constraints, the longer the generation can take or the more partial the result can be.
The engine is a neuro-symbolic Monte-Carlo metaheuristic optimization AI: it combines stochastic search, symbolic business rules and constraint scoring. The important point is operational: the solver is designed for highly constrained cases, while reporting impossible situations rather than hiding conflicts.
Hard constraints
The solver strictly respects the constraints that would otherwise make the timetable invalid:
- a teacher cannot be in two places at the same time;
- a class cannot attend two lessons at the same time, except in cases covered by groups in a division;
- availability and constraints at the unavailable level block placement;
- a standard room cannot host two lessons at the same moment;
- a large room can host several lessons only within its configured capacity and class-count limits;
- specialised rooms, capacities, material resources and inter-site travel must remain compatible;
- a locked lesson keeps its position.
Optimization constraints
Soft constraints are used to score and improve the solutions found. They are not ignored: they become penalties that the solver tries to reduce.
Frequent examples:
- undesirable availability or constraints for a teacher, a room, a subject, a group or a class;
- pedagogical incompatibilities between subjects, for example avoiding a practical before the corresponding lecture, avoiding sport right after a very dense lesson, or enforcing the order of a progression;
- avoiding the same subject twice in the same day for a class;
- minimum or maximum teaching hours per day or per week;
- day balance;
- reducing gaps in the timetables of classes and teachers;
- number of attendance days for teachers, depending on the practices of the school or the country.
Finding a valid solution is the first step. Optimizing the penalties can then become the longest part of the computation.
Availability
- Weekly timetables — available.
- Cyclic timetables — available.
- Calendar timetables — available with dated lessons and a date range.
What to do if the generation fails
If no complete solution is found, Omniscol keeps the best computed timetable and leaves the impossible-to-place lessons in the list of unplaced sticky notes. You can then inspect the partial timetable, read the diagnostic and fix the constraints.
Frequent causes:
- overly restrictive availability (a teacher has no compatible free time slot),
- not enough rooms, or no specialised room available,
- inconsistent alignment (different hour volumes between the aligned groups),
- too many or too strict incompatibilities,
- theoretical class headcount > capacity of all candidate rooms.
See Diagnosing a failed generation.
Forcing the placement of a lesson
You can lock the position of a lesson before running the generation again: the solver then keeps it in place, but adjusts the others around it. Handy for anchoring "immovable" lessons (external interventions fixed by contract, dated exams, etc.).