We have implemented a fairly complex rule-based expert system for solving the timetabling problem, for three reasons. Firstly, it gives us a benchmark as to how well other methods do in comparison to this standard technique. Secondly, a number of these rules are used to provide sensible choices for moves in the simulated annealing algorithm, rather than choosing swaps completely at random. Thirdly, we have used this system as a preprocessor for simulated annealing, in order to provide a good initial solution.
It is a good practice, when using methods such as simulated annealing, to start at a good point in the search space or with a partial solution, regardless of the difficulty or complexity of the problem at hand. A good starting point generally provides faster convergence and a better final solution. Our results clearly support this rationale in this case. Simulated annealing is a very time-consuming, computationally intensive procedure. Using an expert system as a preprocessor is a way of quickly providing a good starting point for the annealing algorithm, which reduces the time taken in the annealing phase, and improves the quality of the result.
The rule-based expert system consists of a number of rules (or heuristics) and conventional recursion to assist in carrying out class assignments. We have developed this system specifically for the problem of academic scheduling. The basic data structures or components of the system are:
The basic function of the system is as follows: given data files of classes, rooms and buildings, department-to-building distance matrix, students data, and the inclusion data, using the abovementioned data structures, the system builds an internal database which in turn is used in carrying out the scheduling process. This process involves a number of essential sub-processes such as checking the distances between buildings, checking building, room type and hours occupied, checking and comparing time slots for any conflicts, checking rooms for any space conflict, and keeping track of and updating the hours already scheduled.
There are many rules dealing with space and hours, type of room, and priority of room. Most of the rules implemented in the system are quite straightforward, for example, the following rule deals with time and space conflicts for a room:
IF [room(capacity) ;SPMgt; class(space-requested)] and [no time conflict in this room] THEN assign the room to the class.
When the rule-based system is used as a preprocessor, it produces a partial schedule as an output, since it is usually unable to assign all of the given classes to rooms and times slots. The output is divided into two parts: the first consists of classes, with their associated professors and students, assigned to various rooms; and the second is a list of classes that could not be assigned due to constraint conflicts.