Key takeaways
- Generation consumes a staffed, feasibility-checked structure and turns it into placed lessons.
- Most-constrained items go first: singletons, then core subjects, then electives.
- Manual, automatic, and mixed scheduling are all legitimate; the choice is the planner's.
- Solver feedback is reviewed before a change lands, never after.
What generation consumes
The inputs are the agreed classes, staff assignments, rooms, and constraints from planning. Generation places them; it does not question them. A structure that has not passed feasibility checks can fail placement for reasons no solver can repair, because the failure was designed in upstream.
That boundary is useful. When a run fails, the first question is which side of it the problem sits on: the data and structure, or the placement.
Run generation in constraint order
Place the hardest items while the grid still has room for them.
- Confirm the structure is staffed and feasibility-checked before anything is placed.
- Lock the fixed points the school has already committed to.
- Place singletons and other lessons with very few valid periods.
- Place core subjects that large numbers of students must attend.
- Place electives and options into the remaining space.
- Review solver feedback, then send unresolved conflicts to validation or conflict resolution rather than forcing the grid.
How to do this in Smootables: generate a timetable
Fall 2026
Recurring weeks18.8.2026 - 20.12.2026 / 18 weeks
Planned hours 142 h
Generation in Smootables runs from the period plan and validates before it solves.
- On Planning, open the period and click Generate timetable (or Generate new timetable when one exists).
- Pick the scope in the Generation scope dialog: Changed groups only, or All student groups.
- The solver runs in two phases: hard constraints first to find a feasible grid, then soft preferences to improve it.
- Tune the soft side under Solver Settings: six weights from 0 to 200 (Student Gaps, Teacher Gaps, Student Daily Balance, Teacher Daily Balance, Subject Spread, Morning Preference). A weight of 0 disables a constraint, and only Morning Preference is enabled by default.
- Restrict a single placement with Schedule preferences: specific weekdays, morning or afternoon, or all lessons on the same day.
Manual, automatic, or mixed
Some schools place everything by hand, some generate everything, and many mix: the solver places lessons, the planner reviews exceptions and locks what must not move. All three are legitimate. The deciding question is where judgment adds value, and the answer differs by school.
What does not differ: feedback is reviewed before changes are applied. A solver that shows a clash before the move is an assistant. Applied silently, the same suggestion is a liability.
Some planners ask whether a general-purpose chatbot could do this instead of a solver. See can ChatGPT create a school timetable? for what the evidence shows.
Ready-to-generate checklist
A gap in this list is what later shows up wearing a solver error.
- Staffed classes from the year-planning structure
- Blocks, bands, sets, and option patterns checked where the school uses them
- Fixed points identified and locked
- Teacher availability and room requirements entered for validation
- A deliberate choice of manual, automatic, or mixed scheduling
- A review step between solver feedback and applied changes
After the run
A finished run is a draft, not a decision. Check the grid against the commitments that were locked, then work the leftovers: validation findings go back to data, stuck lessons go to conflict resolution.
For how the checks themselves split into static and dynamic stages, see constraint validation.
Questions planners ask about generation
Can generation fix an unfinished curriculum plan?
No. If staffing, blocks, or class structures are not feasible, the solver rediscovers that infeasibility as failed placements. Fix the structure in planning, where the fix is cheap.
What is a singleton and why does it go first?
A lesson with very few valid slots, often a single class with one qualified teacher. Easy lessons can fill almost any slot, so they can wait. Leave a singleton to the end and its few valid slots are already taken.
Does a failed run mean the data is wrong?
Often. Data gaps surface as placement failures, and the solver can only report where it got stuck. Run validation before blaming the constraints.