Any algorithm to dedicate a set of known resources to a set of known requirements (scheduling)
- by Saeed Neamati
I'm developing an application to help school principals in dedicating teachers to classes and courses over the hours of a week (scheduling). The scenario is roughly something like this:
User enters the list of teachers and their free times into the system
User enters the list of courses for this semester
User enters the list of available classes into the system
Well, up to here, there is no big deal. Just simple CRUD operations and nothing extraordinary. However, now what makes this system useful is that the application should automatically and based on an algorithm create the semester scheduling.
I think you've got the main idea here. For example application should suggest that teacher A should go to class 1 for mathematics, and at the same time teacher B should go to class 2 for physics. This way all of the classes would be dedicated to lessons and teacher times won't overlap each other. Piece a cake for school principal.
However, I can't find a good algorithm for this resource dedication. I mean it seems hard to me.
Searching Google resulted in articles from different websites, but they are of no help and use to me. For example:
http://en.wikipedia.org/wiki/Resource_allocation or
http://en.wikipedia.org/wiki/Scheduling_(production_processes)
Is there any algorithm out there, or any application or engine which can help me here? Does this requirements have a known name, like for example time scheduling engine?
Any help would be appreciated.