in reply to Interesting scheduling application problem.

Forgetting SQL at the moment, you have workers, dogs, participation events and ringside events. It sounds like participation events are fixed and dogs have already been assigned to participation events by some algorithm. That means that workers have been assigned to participation events along with the dogs. And we'll assume that if a worker has more than one dog, then they have resolved which participatory events they will attend with each dog.

So what we are left with are workers, with some free spots available, and 5-10 ringside spots available for each event. There are many ways to go about solving this. If you want to minimize the number of different people working ringside, for instance, this problem becomes the vertex set covering problem. A greedy algorithm to solve it is provided by Algorithm::SetCovering. For other optimization criteria, other schemes need to be used.

If one can formulate the optimization criteria as an numerical optimization function, then a genetic algorithm can be useful. see the thread Looking for help with AI::Genetic and classroom scheduling for good ideas.

Update: fixed typos and improved wording.

-Mark

  • Comment on Re: Interesting scheduling application problem.