← All articles
Engineering

Why timetables become impossible — and how to know before you solve

Most failed generations are not hard problems. They are impossible ones, and the difference is something software can prove in seconds.

InfeasibilityDiagnosticsData quality

There is a particular kind of afternoon that every timetabler knows. The generator has been running for twenty minutes. Cards are still unplaced. You have tried three times with slightly different settings, and each run leaves a different handful stranded. Somewhere in the data is a reason, and you are going to find it by hand.

Here is the thing worth knowing before you start looking: in our experience the majority of these afternoons are not caused by a difficult problem. They are caused by an impossible one — requirements that no arrangement of lessons could ever satisfy, no matter how long anything searches.

Difficult and impossible look identical from the outside

This is the trap. A heuristic engine responds to both the same way: it keeps trying, and eventually stops with lessons unplaced. The screen shows you the same thing whether the solver needed another minute or whether it needed a teacher who does not exist.

So the planner does the only thing available — starts loosening constraints. Remove a room requirement, relax a teacher's availability, allow a double where you wanted singles. Eventually something places, and the timetable ships with three compromises nobody made deliberately.

The cost is not the lost hours. It is that the compromises are invisible afterwards. Next August, nobody remembers which constraint was loosened in a moment of desperation, so it never gets fixed — it just becomes how the school runs.

The five ways a timetable becomes impossible

Almost every genuine infeasibility we have seen falls into one of five families. All five are detectable by arithmetic, before any search begins.

1. Not enough grid

The simplest one. A class needs 34 lessons a week; the timetable has 5 days × 6 periods = 30 slots. No arrangement fits, and no amount of clever placement will change that. The same failure appears in subtler form when lunch breaks or blocked afternoons reduce the usable grid below what the curriculum demands.

2. Teacher capacity

Add up everything a teacher is assigned to teach. Compare it with the number of periods they are actually available. When the first number exceeds the second, the plan is dead regardless of arrangement. This is extremely common in schools where a part-time teacher has picked up "just one more" class.

3. Room-type scarcity

Eleven lessons need a science lab. There is one lab and 30 periods, so up to 30 lab lessons fit — unless eight of those eleven are also constrained to Tuesday morning, when there are only four periods. Room conflicts rarely show up as a total shortage; they show up as a shortage within a window, which is why they are hard to spot by eye.

4. Distribution rules that fight the arithmetic

A subject with 6 weekly hours in a 5-day week, with a rule that says at most one lesson per day, cannot be placed. The rule and the hours contradict each other. This is our most common single finding, because both halves were configured months apart by people who each made a reasonable decision.

5. Coupled lessons with no common slot

Two classes must have their elective band simultaneously. Class A is free Monday and Wednesday; Class B is free Tuesday and Thursday. There is no shared slot. The requirement is coherent for each class separately and impossible for the pair.

What we do about it

Bildena runs these checks before the solve, in the Advisor. It is not a search — it is arithmetic over your data, and it takes about as long as loading the page.

The report separates two categories deliberately:

  • Critical. These make the problem provably infeasible. Generation is blocked, because starting a run that cannot succeed only wastes your afternoon and teaches you nothing.
  • Suggestions. These do not prevent a solution but make one harder or worse — a teacher at 95% capacity, a subject whose distribution rule leaves exactly one legal pattern. Runs proceed; you are just told where the pressure is.

Each finding names the entities involved and links directly to the screen where you would fix it. "Weekly hours exceed availability for M. Weber (28 assigned, 24 available)" is a sentence you can act on in ninety seconds. "Some cards could not be placed" is not.

And when the search itself proves it

Arithmetic catches the five families above, but not every impossibility is arithmetic. Some emerge only from the interaction of many constraints at once — the kind of thing no pre-flight check can see, because seeing it is the search.

This is where a constraint solver differs from a heuristic in a way that matters practically. It can return INFEASIBLE — a proof, not a timeout. It means: these requirements cannot all be satisfied together, and that conclusion is final. No amount of restarting, reordering or waiting will produce a timetable, because none exists.

This is a strange thing to advertise. "Our software can tell you it failed" is not an obvious marketing line. But every planner who has spent three days looking for a fault that was never fixable understands immediately why it is worth more than another optimisation trick.

What to do with an impossibility

An infeasible result is not a defeat; it is a decision moved forward in time. The options are always the same small set, and now you can choose deliberately:

  • Add capacity — another teacher, another room, another period in the day.
  • Reduce demand — fewer hours for a subject, one fewer section.
  • Relax a rule you now know is the binding one — and record that you did.

The third option is the same compromise a heuristic would have forced on you silently. The difference is that you make it in May with your options open, rather than at midnight in August, and you know exactly what it cost.


The Advisor runs on every Bildena workspace, including the free trial. Import your data and see what it says before you generate anything — most schools find at least one finding they did not know about.

See it solve your own timetable

Import from aSc, Untis or Excel and run a full generation free — first timetable in 3 minutes.

Start free

Keep reading