Join 3,574 readers in helping fund MetaFilter (Hide)


Help me, Mr. Computer!
June 20, 2006 6:37 AM   Subscribe

Scheduling meetings: I need software (or a good human-based procedure) to help me juggle complicated schedules for a group of people.



I direct off-off Broadway plays, which means that there's no budget to pay the actors. So I have to schedule rehearsals around their conflicts. Yesterday, I spent SIX HOURS trying to come up with a workable schedule. I'd get it almost done, and then one of the actors would call me with new conflicts, and that would mess the whole thing up and I'd have to start over from scratch.

Every time I do this, I feel like it's something a computer should be doing for me, but I've never found the right piece of software. My current system involves a whiteboard and dozens of index cards, and it gives me a headache.

Here's the info I'm juggling:

-- eight actors with available times, conflict times, and times that they'd like to have off if possible.

-- some actors have flexible schedules, but I can only use them for a total of X hours. If I use them for X+1 hours, they can't square that with their day job.

-- a list of scenes, each of which uses some of the actors.

-- every scene MUST be rehearsed for X number of hours (I go by pagecount).

-- it's nice to be able to rehearse scenes at least roughly in chronological order. It's okay to fudge a little, but it sucks to rehearse scenes from act five before we've even started act one.

So the ideal piece of software needs to allow "weighted" data. So-and-so MUST have 7/11 off. So-and-so would LIKE to have 7/11 off. This scene MUST have at least four hours of rehearsal. It would be great if it could have 8 hours of rehearsal.

I would enter all this data and out would pop a schedule. If a piece of data changed (e.g. a new conflict), I could enter the change and the app would generate a new schedule.
posted by grumblebee to Computers & Internet (17 answers total) 2 users marked this as a favorite
 
You could try setting up a calendar over at 30 boxes and get everyone to sign up and put their scheduling conflicts in and you then can see visually where the gaps are.

You could then have colour coding according to what scene / act to rehearse.

However this doesn't really allow for "weighting" things, but does look quite similar to your current system.
posted by philsi at 6:42 AM on June 20, 2006


1. Using pen, ruler, and paper, or the software of your choice, create a weekly calendar layout, showing days of the week running across and hours of the day running down.

2. Make a bunch of copies of these onto transparent acetate, one per person per week.

3. At the end of each week, hand out one copy to each person and have them write their name at the top, and block out their unavailable times for next week using sharpies. This should take, what, 15 minutes?

4. Lay all the copies one on top of the other. Any time block you can see through is open. To schedule for a subset of actors, just overlay their schedule sheets.
posted by adamrice at 6:49 AM on June 20, 2006


For weighting, you could use colored sharpies. eg, black=can't make it, red=would prefer not to make it.
posted by adamrice at 6:50 AM on June 20, 2006


Yes a computer *might* be able to do this. But it's something that you would have to hack up (or have someone build). There are a few meeting schedulers, but, since many of the heuristics that you're using as you decide on a good schedule re not rules, but just guidelies ("fudge a little", "wants free versus must-have free", etc.), it will require some human input. Off-topic, surely, but I think that solving this problem is as hard as solving all of natural language (it's "AI complete" in the language of CS researchers).

So I recommend using a simple visualization that makes the decisions easier to *see*. It's from 43 folders and it uses 100% regular text: text-based meeting scheduler.

Basically, you send out a blank month (or 3 months) all on one line to each actor (and the director and stuff). And they send back their time: free, request-free, and busy. They need to pick their off-time and on-time, no: free any 20 hours this week stuff. They just need to commit to something. And then when everybody's sent back their single line of "- - - - + + + X X X - -" you can visually scan down the columns to see what matches up. This is less than ideal for your application since you need hour resolution and lots and lots of days. But it might work for a "typical" week and then you could adjust it as necessary.
posted by zpousman at 6:54 AM on June 20, 2006 [1 favorite]


That's a great (non-software) solution, adamrice (which is why I marked it), but it's missing one key component:

Once I know which actors are available on a given day, I need to match them up with a scene.

Let's say the actors are Bill, Mary, George and Mike.

I now have a list of scenes, some of which need all four, some need a specific two of the four, etc. If I have just Bill and Mary, there might be five scenes I COULD rehearse. Once I pick one of those scenes, I need to be sure that I don't accidently pick it again the next time I have Bill and Mary.

Doesn't sound two hard, right? Just make a list of all scenes and which actors they contain and cross-reference it with who is available on a given night. And cross off scenes once they've been assigned.

But remember, this is a ever-changing schedule. At any time, Mary could hit me with a new conflict. It's the constant adjustments that muddle my head. A program should be able to deal with this easily.
posted by grumblebee at 6:57 AM on June 20, 2006


Get in touch with a computer science/programming student that needs to create an application as a project for the course. See if they are willing to make something that meets your requirements. Bonus points if they can make it web accessible for your actors to input the stuff themselves.

You'd be surprised how well this type of thing will work. when I was promoting music events, my partner had 2 attendees offer to do this for us. They needed a project, we needed a way to organize things better.
posted by ChazB at 7:07 AM on June 20, 2006


I think that solving this problem is as hard as solving all of natural language (it's "AI complete" in the language of CS researchers).

Is it really THAT hard? It should be trivial for a computer to do this without the weighting. If people are either available or unavailable on a given night, then the app just needs to match the available people with possible scenes, pick one of the possible scenes randomly, and then mark that scene as "chosen."

Forget weighting: let's say that actors can mark days as busy, free and free-if-possible. On its first pass, the app would treat free-if-possible as busy, which would give the actors their best shot at getting those days off. But if it couldn't make the schedule work (if it couldn't schedule all the scenes), it would mark those days as free and try again.

If we add weighting back in, let's say Mary marks a day as free-if-possible(1) and Bob marks a day as free-if-possible(2). When the program can't make the schedule work, it will try again with just Bob's day freed up. Then, if it still couldn't make the schedule work, it would try once more with Mary's day freed up.
posted by grumblebee at 7:17 AM on June 20, 2006


Modelling all these constraints in software would be possible, but doing a good job (ie, doing it in a way that doesn't drive you crazy) would take a fair amount of work.

To extend the paper (acetate) model I mentioned above, you will need to write up a game plan in advance showing scenes, people, and time requirements. Just make it a list, scene by scene, in order. For example:

SceneActorsTimeScheduled forI:1A, B, C, D90 minWed 6:00–7:30 PMI:2A, C, D60 min[pending]
You're trying to schedule start to end, so in Week 1, start picking scenes from the top of the list. and work your way down. You'll probably want to schedule scenes with many actors before scheduling those with few.

Keeping track of each actor's weekly maximum commitment is up to each actor.
posted by adamrice at 8:04 AM on June 20, 2006


Damn, I made this nice table that looked OK in preview.
posted by adamrice at 8:04 AM on June 20, 2006


Yeah, pretty sure he's joking. It would indeed be trivial for a program to come up with the "best" possible blocks of time, in pretty much the way you describe. Coming up with an approximation of "best" that humans will approve of is the real problem.

Getting a CS student to do this wouldn't be inconceivable, I think. If you look at NYU undergraduates, make sure you get someone who's taken "Basic Algorithms" and "Numerical Computing". (For graduates, "Fundamental Algorithms.")

I think I've got a way to make the acetate thing even easier with scenes, though. I'm struggling to describe it in words, so I'll make a picture...
posted by equalpants at 8:41 AM on June 20, 2006


Lay the actors' schedules out in rows, instead of on top of each other, and lay the scenes on top of that...

(using black and red as described above)


posted by equalpants at 8:59 AM on June 20, 2006


I presume you've already seen the following:

Planner
Microsoft Project
GanttProject
PHPGroupware

But your task seems more complex. Maybe you can use the API of one of these programs. This sounds like a linear programming & graph theory problem; I'd be really surprised if there wasn't software that did this already. (Well, I'm also surprised I haven't found it before.)
posted by lunchbox at 10:58 AM on June 20, 2006


I'd be really surprised if there wasn't software that did this already.

Me too. My needs aren't all that unique. My "day job" is teaching computer classes, and my boss has to schedule me (and a team of other teachers), and his scheduling problems are similar to mine. He has to juggle a lot of balls: each teacher's availability, the topics each teacher can teach, client requests, teacher requests (I need a day off, I would like a day off...), etc.

Sometimes I don't get the schedule I want, because it doesn't seem possible. But it turns out that it IS possible -- or could have been possible -- with some juggling. But there's only so much info a human scheduler can hold in his head at one time. And even if everything is on neatly-drawn charts, there's only so much info one's brain can take in at a glance.

A smart program should be able to cut through all this data, look for connections, and suggestion solutions.

I have a little programming skill, and I've thought about trying to built an app. But I don't want to re-invent a wheel. And I keep feeling like this wheel MUST exist somewhere.
posted by grumblebee at 12:19 PM on June 20, 2006


In other words, it kills me to think that some actor is not going to get his day off, simply because I overlooked a possibility.
posted by grumblebee at 12:20 PM on June 20, 2006


I think there are some people at CMU doing a long-term project on constraint-based scheduling. Maybe you'll find a software application there. Scheduling is also used extensively for computational resource allocation, so there are many motives to make software for it.

If you know someone in management at a big company like McDonald's, you could try asking them.
posted by lunchbox at 7:55 PM on June 20, 2006


Oh, and if you find something good let me know.
posted by lunchbox at 7:57 PM on June 20, 2006


I finally found it:

SAS/OR

Key term is "operations research software"
posted by lunchbox at 12:33 PM on July 11, 2006


« Older How can I tell if my microwave...   |  When I make a PDF from any app... Newer »
This thread is closed to new comments.