timetable-sa
A TypeScript library for solving timetabling, scheduling, and other constraint-driven optimization problems with Simulated Annealing.
Technologies
- TypeScript
- Simulated Annealing
- Tabu Search
- Node.js
- Jest
- npm
On this page
About the library
timetable-sa is a TypeScript library for solving constraint-driven
optimization problems with Simulated Annealing. It was created for timetabling
and scheduling, but its generic API also supports assignment, allocation, and
other problems with custom states and rules.
Users define their own hard constraints, soft preferences, and move generators, while the library manages the optimization process. It can combine Simulated Annealing with tabu search, reheating, intensification, and adaptive move selection to explore possible solutions and improve their fitness.
The library also provides progress callbacks, structured logging, diagnostics, and cancellation for long-running searches. It is available as an MIT-licensed npm package with TypeScript declarations, tests, practical timetabling examples, and a dedicated documentation site.