The Preprocessor

In the first phase, the preprocessing phase, we used a rule-based expert system giving a partial feasible schedule as an output. A partial schedule in the sense that due to constraint conflicts not all of the given classes were assigned to rooms and times slots. The preprocessor output was divided into two parts. The first part consisted of classes, with their associated professors and students, assigned to various rooms; and the second part was a list of classes which could not be assigned due to time conflict. As mentioned above, the preprocessor consists of 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: first, distance matrix of values between each academic department and every other building under use for scheduling. Second, class data structure of each class scheduled anywhere in campus. Also, these structures are capable of linking with each other. Third, room data structure of each room (regardless of type) involved in the scheduling process. Like classes, room structures are also linked with each other. Fourth, data structures for time periods to keep track of which hour or time slot was occupied and which was not. Fifth, department inclusion data structure giving department inclusion within other larger departments or colleges. Sixth, students structures indicating classes of various degree of requirements and preferences for each student. 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 distance given in the distance matrix, 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.