Key takeaways
- Static analysis checks data alone; dynamic analysis checks data and constraints together.
- Critical issues from either stage block optimisation until fixed.
- Block build, combing charts, and clash tables carry planning's feasibility checks into validation.
- A clean validation raises the odds of a feasible timetable; it cannot promise one.
Stage one: static analysis
Static analysis asks whether the raw data is usable: are values missing, are records duplicated, is every lesson staffed. These are data problems, and they have data owners. No placement logic is involved yet.
Fix them at this stage because they are cheapest here. A missing room type found by static analysis is a field to fill; the same gap found mid-generation is a failed run to diagnose.
Stage two: dynamic analysis
Dynamic analysis combines the data with the active constraints. It can reveal that a required placement is impossible, that constraints contradict each other, or that a structure cannot fit its own commitments. None of that is visible to static checks, because each record looks fine on its own.
The planning-side feasibility routines (block build, combing chart, clash table) belong to this stage in spirit: they test whether the planned structure can fit before lessons are placed. If planning already shows a clash, fix the structure rather than asking the solver to rediscover it.
Validate as a gate, in order
Each pass earns the next; optimisation comes last.
- Run static analysis on the timetable data.
- Fix missing values, duplicates, and unstaffed lessons at the source.
- Run dynamic analysis against the active constraints.
- Resolve every critical issue; park the rest with a note.
- Re-check structural outputs (block build, clash table) if constraints changed.
- Start optimisation only when the remaining issues are understood and accepted.
How to do this in Smootables: typed errors before and after the solve
Fall 2026
Recurring weeks18.8.2026 - 20.12.2026 / 18 weeks
Validation errors
Teacher hours exceeded (1)
Teacher "J. Rivera" has 28 hours/week assigned; maximum is 24 hours/week.
Reduce this teacher's workload or increase their weekly maximum hours.
View teacher
Insufficient rooms (1)
This period needs at least 3 room(s) for your student groups, but only 2 are available.
Add more rooms in Resources or reduce the number of student groups with lessons in this period.
Go to rooms
The same split shows up in Smootables at two points. Before generation, the period plan is checked for data problems: the View errors button opens the Validation errors sheet, where findings are typed (Missing teacher, Missing room, Teacher hours exceeded, Not enough rooms) and each links to its fix with View placement, View teacher, or Go to rooms.
The constraint side is explained when a solve fails: the report names the conflict cause, such as a teacher with too many lessons for the available slots or a room pool that is too small, and pairs each cause with a suggested action, such as reducing a teacher's load, changing rooms, or adding time slots. Read it as dynamic analysis output: it tells you which structure to change.
What a useful validation result names
A finding you can act on names four things: whether it is a data error or a constraint conflict, which teacher, class, room, or lesson is involved, whether it blocks generation or can wait, and what to re-check after the fix.
Findings that fail this test go to a parking list, not into the model. Findings that pass it route themselves: data errors to data preparation owners, constraint conflicts to the taxonomy in hard constraints.
Questions planners ask about validation
Why did generation fail after validation passed?
Validation makes feasibility more likely, never certain. Some conflicts only appear when placement combines constraints in ways no pre-check enumerates. Treat the failure report as the next validation pass.
What are block builds, combing charts, and clash tables?
Pre-scheduling feasibility routines carried over from planning. They test whether the planned structure can fit before any individual lesson is placed, which is the structural form of validation.
Who fixes what validation finds?
It splits by stage. Static findings are data fixes for whoever owns the records. Dynamic findings are planning decisions: a constraint conflict usually means a structure or commitment has to change.