Step 1a: Specify day start and end times (optional).
You need to create some times. Either fill out the following fields and press the button, or enter in every start time manually.
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Each slot is minutes long.
Start the day at: .
End the day at: . (You may also use AM or PM notation in this and other fields (however they will be converted to 24 hour time).
Step 1b: Specify all session start times.
Step 1c: Specify your availability.
Write 1 if the instructor or pupil is available at that time. Leave empty (or use a value of 0 if not).
Numbers 1 through 5 signal that the instructor or pupil is available (1 is best choices, 2 is less good, 3 is even less good, etc). You may use as many of each number as you want. Each increasing number is twice as undesirable as the last. I recommend using only the number 1 for the instructor (later options will allow the instructor to schedule things like lunch in a much more convenient manner). I recommend keeping a close eye on the number of 2's and 3's that pupil's can enter.
An empty field (or a number 0) means that the instructor or pupil is not available.
An X is similar to an empty field and means the instructor in unavailable. However, it also means that the instructor is stuck at the same place lessons will occur at, and hence the program should try to schedule sessions around this time if possible. This is different from an empty value, where the program will try to leave the sessions around it free so that you have a nice chunk of time you can actually do something with.
Each session goes until the next session start time. The instructor cannot be available for the last "start time" of each day (since this is actually the day end time). You only need to worry about this if you edit the CSV data manually.
You may specify that a pupil has a longer session by adding "[60min]" after the name (don't include the quotes). The session length must be specified in minutes. Example: "Jane Doe [120min]"
If you have a pupil that takes lessons that are longer than a single slot, placing a 1 in a slot means that they are able to start (their longer lesson) at that time, even if it goes into a slot that they have not marked with a 1. For the instructor, however, a longer lesson will only be scheduled on slots where every slot is marked as available.
A pupil who takes multiple lessons per week can be specified with "[x2]" after their name. These lessons will be scheduled on different days. Example: "Roger [x3]"
A pupil can have both longer lessons and multiple lessons per week. "Jessica [60min] [x2]"
Default pupil value:
Step 1d: Save or export the data.
If you want to save your data, now is a good time to do so. You can either copy the contents of the text area or press the "Download CSV Data" button.
You can modify this data in a spreadsheet (such as google docs) and re-enter it here before moving on. When you go on to the next step your data will be saved on the server and become publicly accessible.
The first row (The time slots)
The first cell must be exactly "Schedule".
Every other cell must be a one character code for the weekday (M, T, W, R, F, S, U) optionally followed by a space followed by a time in 24 hour format with a colon between the hour and the minute (e.g. "17:30").
Each time slot must be after the last time slot.
Each time slot extends until the next time slot. This means that you MUST create at least one time slot at the end of each day which you set yourself as unavailable for.
The second row (Instructor preferences)
The first cell must be exactly "Instructor1".
Every other cell must be empty or filled with exactly "1", "2", "3", "4", "5", "X".
Empty means that the instructor is not available at that time.
"1" means that the instructor would like to teach at that time.
"2" means that the instructor could teach at that time but would rather be watching monday night football or some other low priority but desirable thing that occurs AT THAT TIME (don't use this to ineffectually try to schedule a lunch or tell the system that you don't like coming in in the morning, there are better mechanisms available for specifying those preferences).
Numbers above 2 are like "2" but progressively more so. Each preference step is twice as undesirable as the last. I recommend you only use the numbers 1, 2, and 3.
"X" means not to schedule anything, but that the space should be considered busy. Meaning, it won't accumulate any "arrive late bonus" and that it will count in "no break penalty" terms.
If you have pupils with longer lessons (1 hour session when the slots are 30 min long) then the program will only schedule the pupil at 10:00 if you are available at both 10:00 and 10:30.
Additional rows (Pupil preferences)
The first cell must be the pupil's name such as "Jane Doe". Any utf-8 encoded string is valid (Chinese, Arabic, and Cherokee, characters are all valid).
All additional cells specify preference with "1" being ideal, "2" being a second choice slot, and "3" being a third choice slot. Penalties for scheduling on a less ideal slot can be specified (and are generally much less important than instructor preferences)
For pupils with longer lessons (1 hour session when slots are 30 min). Be aware that the preference is for STARTING a session at the specified time. If you specify "1" at 11:00 and "" (meaning don't schedule) at 11:30 then the program may schedule a lesson from 11:00-12:00 but not 11:30-12:30. This is slightly different than how instructor preferences are specified (instructor preferences are always about exactly only the specified slot).
Each pupil may specify as many "" (empty), "1", "2", and "3" cells as they want. When setting schedules, you may or may not expose the full range of preferences to the pupils and you may or may not restrict the number of "2" and "3" you allow them to specify. It's entirely your choice, the program doesn't care at all. However, note that a pupil who specifies "3" for each slot might as well have specified "1" for each slot.
Lets say that you have a deal with your spouse that on Tuesdays you EITHER bring the little rugrat to pre-school OR you cook lasagna in the evening. Clearly, you can't schedule pupils both in the morning and in the evening. However, which is better for your other scheduling needs? You can let the program know about your marital constraints by making Tuesday morning and Tuesday evening mutually exclusive. Create a "Complex Constraint" for Tuesday morning: "T 7:30-10:00" and then push the "Or..." button to get another field. Fill in that field with "T 16:00-20:00". The profram will now make sure that you either have Tuesday 7:30 to 10:00 free or 4:00PM to 8:00PM free.
Lets say you want lunch off but you don't care if you eat 12:00-12:30 or 12:30-13:00. You can create a complex Constraint "30min R 12:00-13:00" and the program will make sure you have a 30min break between 12:00 and 13:00 on Thursday.
Generic Preferences
There are a number of generic preferences. If you're like most people, then you'd rather go home 2 hours early have 2 hours worth of breaks randomly interspersed throughout the day. There are several of these kinds of penalties and bonuses which get assigned for various aspects of the schedule. You can set the penalty/bonus weights for each term, allowing you to customize what kind of schedule you'd like the program to find for you.
If you like to go home early, you can assign a bonus for every minute you leave earlier in the day.
If you would like to come in late, you can assign a bonus for every minute you start later in the day.
If you don't like working long shifts, you can specify a penalty for long sequences of sessions without a break. The format for specifying this is complicated. It consists of comma separated pairs of numbers TIME_LENGTH:PENALTY. The penalty is normalized to be on the same scale as other penalty and bonus values. For each run of sessions with no breaks, it determines the length. Lets say the sessions run for 4 consecutive hours (that's 240min). The penalty term that is applied is the largest TIME_LENGTH that is less than or equal to the length of the run.
You can assign how much of a penalty (per minute) scheduling a session on a slot you have marked with a number higher than 1 costs.
You can assign how much of a penalty (per minute) scheduling a session on a slot a pupil has marked with a number higher than 1 costs.
Each of these bonuses and penalties has a default value in one of 3 profiles ("I like sleeping in", "I like leaving early", "I like lots of breaks"). Feel free to use a profile or to set each value yourself.
There is a bonus for skipping an entire day. The value specified is in addition to the coming in late or the leaving early bonus (whichever is greater). This bonus is normalized to be on the same scale as the other bonuses and penalties.