Alex Rivera | Logout

Is there a scheduling algorithm that optimizes for "maker's schedules"?

Asked 2010-04-20T17:23:01.413
23

You may be familiar with Paul Graham's essay, "Maker's Schedule, Manager's Schedule". The crux of the essay is that for creative and technical professionals, meetings are anathema to productivity, because they tend to lead to "schedule fragmentation", breaking up free time into chunks that are too small to acquire the focus needed to solve difficult problems.

In my firm we've seen significant benefits by minimizing the amount of disruption caused, but the brute-force algorithm we use to decide schedules is not sophisticated enough to handle scheduling large groups of people well. (*)

What I'm looking for is if there's are any well-known algorithms which minimize this productivity disruption, among a group of N makers and managers.

In our model,

  • There are N people.
  • Each person pi is either a maker (Mk) or a manager (Mg).
  • Each person has a schedule si.
  • Everyone's schedule is H hours long.
  • A schedule consists of a series of non-overlapping intervals si = [h1, ..., hj].
  • An interval is either free or busy. Two adjacent free intervals are equivalent to a single free interval that spans both.
  • The productivity P for each person is a value between 0 and 1.
    • A maker's productivity is maximized when the number of free intervals is minimized.
    • A maker's productivity is equal to 1 / (max[1, the number of free intervals]).
    • A manager's productivity is maximized when the total length of free time is maximized, but they like long stretches between meetings more than short breaks.
    • A manager's productivity is equal to the sum of the squares of the lengths of each free i
Edit
Report

1 Answer

-1

I remember implementing something very similar to your problem with A* search algorithm. You will easily find several implementation of the algorithm available but in order to apply it to the scheduling problem you will have to construct distance and heuristic functions based on your model and split continuous time into chunks.

answered 2010-04-21T13:40:19.493

Your Answer