Overview
I have a set of duties I must schedule employees for. The duties recur weekly over a two-month period. There are a number of constraints that define a good schedule. (See below for examples.) In the past, I've made the schedule by hand, but doing it by hand is time-consuming and virtually guarantees a buggy schedule.
I'm looking for software that will make the schedule for me. I've tried TaskJuggler, but I'm not sure whether it's even capable of doing what I want (the documentation is unhelpful and the folks on the mailing list merely tell me to read the documentation--which I've done without conclusive results).
Can anybody recommend something?
Details
Example schedule
Here's an example schedule. Note that since this one was handmade, it contains an error or two.
Example constraints
Here are some of my constraints:
- All scheduled duties must be able to be manually-specified.
- Each teacher must have exactly two weekends off. Some weekends are defined as mandatory working weekends; no teacher may have those weekends off. Other weekends may be mandatory off weekends; such weekends have no scheduled duties and count toward each teacher's two weekends off. Finally, there may be other weekends which have no assigned duties but nevertheless don't count toward teachers' two weekends off.
- Duties should be assigned as evenly as possible. This means that so far as possible, each teacher must have a given duty the same number of times, have each different duty an equal number of times, and have an equal weight of duties on a given weekend (see below for weighting duties). Where this is not possible, the surplus duties should be balanced between teachers. Ideally, surplus duties should be scheduled taking into account each teacher's preferred duties; thus, a teacher who prefers the children's story might get it an extra time instead of one who really doesn't like it.
- No teacher should have the same duty on consecutive weeks.
- No teacher may be scheduled on their weekend off.
- No teacher may have simultaneous duties.
- The major duties are TGIF and the sermon.
- No teacher should have another duty on the same day as they are scheduled for a major duty.
- No teacher should have more than one major duty per week.
- If possible, no teacher should have a major duty on consecutive weeks. This, however, is not a particularly high-priority constraint.
I've managed to work around this issue, finally. Apparently, software like I'm looking for doesn't exist, and I don't have the time or know-how to write it myself.
Here's what I've ended up doing:
This approach isn't really what I wanted, but it works well enough.
I would use a calendar application, like Lightning in Thunderbird, and have the rotations set up as repeating events on the calendar. That way, if you start at 9:00 and have to switch every half hour, set alarms for 9:30, 10:00 etc, with the description of the shifts on each event.
Finding an application that performs this task exclusively would be pretty difficult since it would have to be specifically written for this type of work. There might be something out there that would get this job done, but I haven't heard of it. I believe the calendar should be useful until you manage to find something more specific though.