3

I'm planning to develop an expert system that automatically fits the school faculty's work load (time, teaching load, etc), and generate class sections, room that is at least 90% accurate with what the Director of a certain department wants to assign the schedule for a certain semester.

What algorithm to use? Heuristics? Optimization? Any suggestions or help is highly appreciated!

123 456 789 0
  • 10,565
  • 4
  • 43
  • 72

4 Answers4

1

Two friends of mine did something similar for a class project. They used the simulated annealing heuristic. They concluded that it might not be the best tool for the job.

Hey, knowing what not to do can be useful, right? :)

Thomas
  • 174,939
  • 50
  • 355
  • 478
  • So did they fail their class project? :P – 123 456 789 0 Jan 21 '11 at 17:47
  • 2
    They probably didn't implement it right. It took me 2 releases in Drools Planner to get it right. But when you get it right... it can blow genetic algorithms, tabu search, etc out of the water. See my benchmarks here: http://blog.athico.com/2010/07/simulated-annealing-new-algorithm-for.html – Geoffrey De Smet Feb 03 '11 at 15:55
  • Interinsting results you got there. Maybe their case was more complicated than your test cases. They tried this pretty ambitiously on an actual school timetable, scheduling classrooms, classes, teachers, courses... with various additional realistic constraints, such as "X can't teach on Mondays" and "pupils shouldn't have more than one hour of free time in a row". While easily implemented, these may have limited the search space too much, making good solutions harder to find. – Thomas Feb 03 '11 at 19:53
  • That's what we're planning to implement right now and only have a total of 3 months in developing it while having other school stuffs. Sigh, this is weird. school giving expert system for 3 months is really unrealistic. – 123 456 789 0 Feb 27 '11 at 20:13
1

Here are some general observations:

1) Manual scheduling is rarely attempted from scratch. Instead, somebody starts with the schedule for the previous year and alters it to take account of changes in requirements. One way of mimicing this with a computer is to use a hill-climbing algorithm, which repeatedly tries a number of small changes to improve a solution so far. This can then be started off at the current schedule.

2) Does the manual process ever terminate with the conclusion that the requirements are collectively unachievable and that some of them must be dropped? In that case your algorithm must be transparent enough that failures can be understood, or at least capable of proposing such changes (e.g. by maximising a penalty function which allows it to produce a "least bad" solution which does not satisfy all of the original constraints). I know of one case where a sophisticated constraint-based approach was replaced by a much simpler algorithm because failures of the constraint-based system did not give enough user feed back.

3) Curiously enough, the next generation system did not use sophisticated scheduling at all. It turned out - roughly speaking - that at the time the decisions had to be made not all of the consequences of sophisticated scheduling decisions could be forseen, and, in the long run, a simple predictable schedule that could be maintained indefinitely was more productive than constantly rearranging schedules to grab small momentary advantages.

mcdowella
  • 19,301
  • 2
  • 19
  • 25
1

Take a look at the curriculum course lesson scheduling example of Drools Planner (open source, java I am afraid). It uses meta-heuristics such as simulated annealing and tabu search.

Geoffrey De Smet
  • 26,223
  • 11
  • 73
  • 120
0

Here is a paper on dynamic scheduling using genetic algorithms... you might find some of the ideas here useful... even if the domain isn't the same, I think the idea is more generally applicable.

tbischel
  • 6,337
  • 11
  • 51
  • 73