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?


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 don't think that this question has an answer. All the software I've reviewed has been unsatisfactory, and it appears that satisfactory software doesn't currently exist. So, I think that this question should be closed. – Scott Severance Oct 19 '11 at 2:22

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:

  • First, I reordered the columns in my schedule so that it's easier to see my constraints at a glance, at the cost of a slightly less-logical order.
  • More recently, I switched my schedule from LibreOffice Calc to a Google Docs spreadsheet. I lost a lot of formatting capability, but I gained some scriptability. (I never could figure out how to write a macro for LO or OOo; their documentation is absolutely horrible.)
  • Then, I wrote a script in Google Apps that gives me some buttons that, when I click them, highlight all cells with the same contents. This makes it feasible for me to manually verify that my schedule is correct. Here is an example of my schedule.

This approach isn't really what I wanted, but it works well enough.

| improve this answer | |

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.

| improve this answer | |
  • Thanks for your answer. I asked a similar question on Super User, but it included a much more complete problem description. I've edited my question here accordingly. As you can see from my edited post, a calendar with repeating events won't solve my problem. I need a program where arbitrary constraints can be specified. It should be possible to write something like this; I just haven't found anything workable. Thanks again for trying. – Scott Severance May 2 '11 at 11:58
  • No problem, I hope you find what you're looking for! – zookalicious May 2 '11 at 18:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.