4

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.

  • 1
    Hi and welcome to SO! This question needs formating since it's very annoying to read large chunks of unformated text. Also it's normally a good idea to show what work you have started to do and ask a specific question to a specific problem. Also always add atleast one programming codetag, java in your case example (i'll help you with that this time) Good luck! :) – John Snow Apr 05 '12 at 08:33
  • 2
    I don't think your going to get a simple answer to this question, it's just to complex. Where I'd start is with a search on Constraint Based Scheduling, this is really the area that your problem falls into and there is lots on this on the web. – Jackson Apr 05 '12 at 09:09
  • Jimmy, I wrote formatted but when posted it appeared as only one paragraph. I will try harder next time. – Roberto Heinemann Apr 05 '12 at 09:56
  • @Roberto: Yes, StackOverflow uses Markdown, which splits text into paragraphs only when it sees an empty line. It's a mistake most new users make on their first question, don't worry about it too much. – cha0site Apr 05 '12 at 10:03

1 Answers1

3

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.

Community
  • 1
  • 1
Gray
  • 115,027
  • 24
  • 293
  • 354