Skip to content
This repository has been archived by the owner on Jan 3, 2023. It is now read-only.

Allocate

Henry edited this page Nov 18, 2019 · 14 revisions

Allocate is a staff allocation tool designed to assist course coordinators in producing a reasonable allocation of course staff (such as tutors) to the available course hours. This allocation needs to be based on a number of factors, including staff availability, preferences about contiguous hours and max hours in a week, and whether the given staff are junior (often requiring supervision of some sort) or senior.

Allocate takes this information about staff availability and other requirements, and uses Google OR-Tools, a software suite which tackles optimisation problems. Within this suite, the tool makes use of the CP-SAT solver specifically. This allows constraint programming (finding a model that meets a set of constraints) and also basic optimisation of that model.

A frontend exists for this, however the backend allocation software can be used independently, and is fully functional.

Once Allocate has been deployed (as described here), it is ready to be used for staff allocation.

The Path to Allocation Enlightenment

The path to allocation enlightenment is a simple, four step process.

  1. Add classes
  2. Add tutors
  3. Add availabilities
  4. Generate an allocation!

When the Allocation frontend is first opened, you will be met with a four-tab layout, as follows: TODO: insert image

These tabs work as follows:

  • Main: Provides instructions about utilising the allocation system (these are essentially an abridged version of this wiki page)
  • Classes: Performs the Add classes functionality
  • Tutors: Performs the Add tutors and Add availabilities functionality
  • Generate: Generates and displays the allocation

Add classes

Adding classes can be done in two different ways:

  • Manual entry of details
  • CSV upload

Manual entry

TODO: insert image

Manual entry of data can be easily performed by filling in the text boxes on screen. The following details can be provided:

  • A unique identifier for each class (eg. "T01")
  • The day of the business week each class runs on
  • The starting time of each class, in 24-hour time (i.e. 1:00pm is written as 13:00)
  • The minimum and maximum tutors allocated to each class - usually the minimum and maximum will be equal, however in the case that not all classes can be filled, these bounds can be provided and the system will try to maximise the number of tutors on any session

New classes can be added using the "+" button, and classes can be removed using the "-" button. New classes are pre-filled with information defaults - remember to always update this information with a unique class identifier and other relevant info.

CSV Upload

The manual entry technique does not persistently store data - that is, the inputted data will be cleared when the page is closed or refreshed. The CSV upload method is more appropriate method if persistent data storage is required, as it is possible to locally store a CSV file of the class data and then upload to the system when an allocation is required.

The following is an example of an accepted CSV. Any CSVs uploaded must contain the 6 columns as below, in the given order.

ID MIN_TUTORS MAX_TUTORS DAY START_TIME DURATION
T01 2 2 Mon 9 1
P02 2 2 Tue 10 2

Uploading a CSV takes two steps:

  1. Click on "Upload Info CSV"
  2. Once the filename has appeared in the upload box, click the "Upload" button, and wait until the file is fully uploaded

It is also possible to download CSVs using the "Download Info CSV" format. This allows a combination of the manual and CSV upload techniques to be used. For example, you may want to enter data manually for the first time, then download it as a CSV file to re-use later on.

Add tutors & availability

Generate allocations

Clone this wiki locally