The data model

Explains how the data is organized.

The data model specifies basically:

  • The set of educational requirements named RequirementSet, modeled by a set of tuples:

    tuple Requirement {
       string Class;            // a set of pupils
       string discipline;       // what will be taught
       int    Duration;         // course duration
       int    repetition;       // how many time the course is repeated
    };
    
  • A set of teacher skills TeacherDisciplineSet, modeled as a set of <teacher, discipline> pairs.

  • A set of dedicated rooms DedicatedRoomSet, modeled as a set of <room, discipline> pairs.

  • A set of available rooms Room, modeled as a set of strings.

For each educational requirement, the model specifies a course repetition parameter. The actual entities to be scheduled are instances of courses that fulfill the requirements. They are described with the following tuple:

tuple Instance {
  string Class;
  string discipline;
  int    Duration;
  int    repetition;
  int    id;
  int    requirementId;
};

where the id and requirement parameters indicate the sequential number of the course specified by the requirement of index requirementId. All these instances are generated by means of the following OPL construct:

{Instance} InstanceSet = { 
  <c,d,t,r,i,z> | <c,d,t,r> in RequirementSet
                , z in ord(RequirementSet,<c,d,t,r>) .. ord(RequirementSet,<c,d,t,r>)
                , i in 1..r
};