Roberto Heinemann
Roberto Heinemann

Reputation: 41

A scheduling algorithm

I am looking for help in designing a scheduling algorithm for a medical review board: Everyday hundreds of customers are scheduled starting 14 days later to specialized doctors. Each patient may need to visit more than one doctor, in extreme cases could be up to 5 visits.

There are a fixed number of rooms, some of them with specialized equipment. For some of the meetings only specific rooms can be used.

Each doctor has a specific schedule, but usually between 14:00 and 19:00. The main requirement is to try to have each patient come only once.

Many contraints including second visit with same doctor, avoid conflicts of interest (patient and doctor know each other) among others. Hospital/residents problem not suitable, mainly because of constraints. We are trying a solution using a prioritizing scheme and then trying to reschedule exceptions.

At this moment we are trying to define the algorithm, this is part of a whole system to manage the medical review board. The sytem is based on Java with dojo for FE and EJB for BE.

Upvotes: 4

Views: 2096

Answers (1)

Gray
Gray

Reputation: 116888

This is a question that may be closed because it is too localized. It won't be much help to someone else. But it's a fun problem so I thought I'd throw out some ideas.

  • You are going to need to find matches for the most complex cases first.
  • Look for "best-fit" solutions. Don't take time on an empty day if you can fill up another day.
  • You're going to have to figure out a way to iterate through the matching so you try a wide range of possibilities. Some way to pull back, make a different choice, and then continue without getting into an infinite loop.
  • You might do the fitting up to (let's say) 80% and then swap around people. Swap a 3 hour appointment with a 2 and a 1 or something. The goal is to leave the schedule with the most "flexibility".
  • You're going to need to determine your swapping rules. What makes a schedule better?

Here's a bunch of SO questions for you to read:

Hope some of this helps.

Upvotes: 3

Related Questions