title: Worker Scheduling Algorithm
body: <h2>The Problem</h2>
  
  <p>Here's the essence of the problem I want to solve. We have workers taking care of children in a nursery for set times during the weekend. There's 16 different slots to fill in one weekend. So for a 4-week month there's 64 slots to fill. We have at max 30 nursery workers (though we need much more. anybody like kids?).</p>
  
  <p>EDIT: Each time slot is discrete - they don't overlap.</p>
  
  <p>Currently there's a person who comes up with the nursery schedule each month. It's a complex and time consuming task to make this schedule every month with everybody's preferences. After considering the problem I thought to myself, <strong>"There must be a better way!"</strong></p>
  
  <h2>Algorithms</h2>
  
  <p>I notice that the problem is essentially a <a href="http://en.wikipedia.org/wiki/Bipartite_graph" rel="noreferrer">bipartite graph</a>. The <a href="http://www.mcs.csueastbay.edu/~simon/handouts/4245/hall.html" rel="noreferrer">marriage problem</a> is also a bipartite graph which you can solve by using a matching algorithm like <a href="http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm" rel="noreferrer">Edmonds's matching algorithm</a>. </p>
  
  <p>But this assumes that each node in one node set matches just one node in the other node set. In my case, each nursery worker would work only one time slot. As we're seriously understaffed, that won't work! A bunch of people are going to have to work twice a month to fill up all the time slots.</p>
  
  <p>Which seems to mean that this is more like the classic "hospitals/residents problem". It differs from the marriage problem in that the "women" can accept "proposals" from more than one "man" (e.g., a hospital can take multiple residents). In my case, a nursery worker can take more than one time slot.</p>
  
  <h2>What now?</h2>
  
  <p>Whew!</p>
  
  <p>Now that I have the set up out of the way....does any one know of any good links that explain or show such an algorithm? Are there better ways to go about solving this? Am I over thinking it? I did a google search for "hospital residents algorithms" and found grad student papers. Gah! I graduated with a CS degree and took an AI class...but that was 6 years ago. <em>Help!</em></p>
  
  <p>Aaaaany advice is appreciated!!</p>