XLSScheduler is an experimental school timetabling program based on coding the timetabling constraints as an integer linear programming model and using a MILP solver: Cbc or Gurobi (requiring a working Gurobi license).

A new web-based tool with lots of cool features is currently (as of 2018) under intenssive development and is being used at IUT Blagnac http://edt-info.iut-blagnac.fr/edt. It should be available soon as an open-source project (thanks to the EDT team!).

XLSScheduler's modus operandi is plain old style batch processing of Excel files - not very sexy but it should allow you to quickly get your data ready for processing.

What it does:

XLSScheduler takes into account the following data for your timetable:

  • The time slots - may be of various lengths and may overlap
  • The instructors, their availability and preference per time-slot
  • The groups. You may define multiple levels of sub-groups and have the sub-groups follow different courses
  • Rooms - you may have several types of rooms (labs, computer rooms) and in finite quantity ;-)
  • The list of courses and how they are assigned to instructors/groups/room types/slot lengths. You may also specify that some courses have chronological precedence constraints or have to be consecutive.
  • You may specify time-slot preferences for courses. This is useful when you have a partial solution for your timetable and want to use it as a starting point for the rest. It may also be useful in order to optimize the quality (length of days, fragmentation).
Based on these, XLSScheduler will generate a timetable (Excel file), if the constraints are feasible. The timetable will optimize two criteria: minimize the use of unpreferred instructor time-slots and minimize the use of unpreferred couse time-slots. (The relative weights given to these two criteria may be adjusted by the user.)

The data has to be entered in an XLSX file that follows this format : modelExample.xlsx
(any resemblance with real world data, people, courses or the like is purely coincidental, of course!).
This means that the input file must contain the same 8 sheets, with the exact same name and structure. You are encouraged to take the example file and modify it to enter your data!

Here is an example of resulting timetable: resultExample.xlsx.

Web-based version for trying it out:

A trial version is available as an online service via the form at the end of this page.

Acknowledgement: This service is based on the Cbc open-source MILP solver.

Warnings: The online version cannot use the Gurobi backend due to licencing limitations. Cbc does a pretty good job, however, the API used for creating the ILP model (PuLP) seems to be quite slow on our server (around 3 minutes to process the example above), so you will have to be patient. The (offline) Gurobi version delivers vastly improved performance (under one second for the same example). If you have a working Gurobi licence and are interesred in trying out the offline version, write me.

Due to processing power limitations, the web version only processes one job at a time.

One more thing: if you have funny timetabling constraints that are not covered by this version, or any kind of similar scheduling/planning problem, drop me a mail and I'll be glad to discuss them with you.

Upload a model file:


The submission form has been temporarily disabled. Write me if you are interested in trying out the tool.