We have successfully applied simulated annealing to the difficult problem of academic scheduling for a large university. Feasible schedules were obtained for real data sets, including student preferences, without requiring enormous computational effort.
We found that using a preprocessor to provide a good starting point for simulated annealing greatly improved the quality of the results. We used a fairly complex rule-based expert system for the preprocessor, however the type of preprocessor may not be crucial. Other fast heuristics could possibly be used, for example a graph coloring approach [37], and just utilizing the schedule from the same semester for the previous year should provide good results.
Another critical part of the annealing program was the choice of moves. We used techniques that drew from our work on the rule-based system in order to carefully select good moves that have a relatively high probability of acceptance, rather than wasting computational effort on randomly chosen moves, most of which would be rejected. The rule-based system ensured that all the moves satisfied the hard constraints, while the annealing process took care of minimizing the cost of the medium and soft constraints.
As expected, for the simulated annealing, adaptive cooling performed better than geometric cooling, and using reheating improved the results even further. The best results were obtained using simulated annealing with adaptive cooling and reheating as a function of cost, and with a rule-based preprocessor to provide a good initial solution. Using this method, and with careful selection of parameters and update steps, we were able to generate feasible solutions to the class scheduling problem using real data for a large university. None of the other methods were able to provide a complete feasible solution.
Our main conclusion from this work is that simulated annealing, in combination with a rule-based system, can be used to solve the complex class scheduling problem at a large university, including student preferences. A similar approach should prove fruitful for other hard scheduling problems. However, finding a valid schedule requires a good cooling schedule, optimized parameters, carefully selected update moves, and a good initial solution provided by a preprocessor. A poor implementation in any one of these areas could be the difference between the success and failure of this method.