Purdue University Timetabling

Data Format
Input/output data format is XML, with the following structure:

<?xml version="1.0" encoding="UTF-8"?>
<!--Large Lecture Room Timetabling-->
<llrt semester="Fall" year="2005" version="5" created="Sat Jun 18 10:57:08 CEST 2005" nrDays="7" halfHoursPerDay="31">
    attributedescription
    semestername of the semester
    yearyear
    versiondata version
    createddate of generation of this file
    nrDaysnumber of days per week
    halfHoursPerDaynumber of half-hours (time slots) per day

  <instructors count="466"/>
    Number of instructors.

  <departments count="64"/>
    Number of departments.
  <rooms count="51">
    <room id="1" capacity="40" location="460,438"/>
    <room id="2" capacity="44" location="465,485"/>
    <room id="3" capacity="49" location="451,435"/>
    ...
    <room id="51" capacity="474" location="476,445"/>
  </rooms>
    Room definitions.
    attributedescription
    idroom identification
    capacityroom capacity
    locationroom location coordinates [x,y]
  <classes count="822" courses="638">
    <class id="1" course="1" expectedCapacity="127" department="1">
      <instructor id="1" solution="true"/>
      <room id="51" pref="0"/>
      <room id="50" pref="0"/>
      <room id="37" pref="0" solution="true"/>
      <room id="36" pref="0"/>
      <time days="1010100" start="0" length="2" pref="13"/>
      <time days="1010100" start="2" length="2" pref="0"/>
      <time days="1010100" start="4" length="2" pref="0"/>
      <time days="1010100" start="6" length="2" pref="0"/>
      <time days="1010100" start="8" length="2" pref="0"/>
      <time days="1010100" start="10" length="2" pref="0"/>
      <time days="1010100" start="12" length="2" pref="0"/>
      <time days="1010100" start="14" length="2" pref="0" solution="true"/>
      <time days="1010100" start="16" length="2" pref="0"/>
      <time days="1010100" start="18" length="2" pref="7"/>
    </class>
    <class id="2" course="2" expectedCapacity="58" department="1">
      <instructor id="2" solution="true"/>
      <room id="29" pref="0"/>
      ...
      <time days="1010100" start="0" length="2" pref="13"/>
      ...
    </class>
    ...
    <class id="822" course="638" expectedCapacity="52" department="64">
      <instructor id="466" solution="true"/>
      <room id="20" pref="-2" solution="true"/>
      ...
      <time days="0100000" start="6" length="2" pref="0" solution="true"/>
      ...
    </class>
  </classes>
    Class definitions.

    classes element
    attributedescription
    countnumber of classes in the problem
    coursesnumber of courses in the problem (classes are grouped into courses)

    class element
    A class contains a list of zero or one instructor, one or more rooms and one or more times where it can take place. Only the valid instructors, rooms and times are listed (e.g., there is no need to check class.expectedCapacity with room.capacity). If there is a solution (class is placed somewhere), it consists from a selection of one instructor (if there is one), one room and one time.
    attributedescription
    idclass identification
    coursecourse identification (classes are grouped into courses)
    expectedCapacityexpected number of students attending the class
    departmentdepartment identification (each class belongs to a department)

    instructor element
    attributedescription
    idinstructor identification
    solutiontrue, if this instructor belongs to the solution (i.e., placement of this class that is in the solution contain this instructor)

    room element
    attributedescription
    idroom identification
    prefroom preference (combined from room preference, building preference and preferences on room features)
    solutiontrue, if this room belongs to the solution (i.e., placement of this class that is in the solution contains this room)

    time element
    attributedescription
    daysa bitmap of days (first Monday, second Tuesday, ...), e.g., 1010100 means Monday+Wednesday+Friday
    startstating half-hour (0 ... llrt.halfHoursPerDay-1)
    lengthlength of class, in the number of half-hours (it's here because there can be alternatives, e.g., 2x75 or 3x50)
    preftime preference (normalized preference on the given time)
    solutiontrue, if this time belongs to the solution (i.e., placement of this class that is in the solution contain this time)

  <groupConstraints count="177">
    <constraint id="1" type="BTB" pref="R">
      <class id="390"/>
      <class id="391"/>
    </constraint>
    ...
    <constraint id="25" type="BTB_TIME" pref="2">
      <class id="509"/>
      <class id="510"/>
      <class id="511"/>
      <class id="512"/>
    </constraint>
    ...
    <constraint id="177" type="DIFF_TIME" pref="R">
      <class id="115"/>
      <class id="114"/>
      <class id="113"/>
      <class id="112"/>
    </constraint>
  </groupConstraints>
    Group constraint definitions
    Each group constraint has defined its type, its preference or requirement and a list of classes.
    attributedescription
    idconstraint identification
    typeconstraint type (see [Group Constraint Types])
    prefconstraint is either required or prohibited (hard constraint):
       R .. constraint is required,
       P .. constraint is prohibited
    or it is preferred or discouraged (soft constraint):
       -2 .. strongly preferred,
       -1 .. preferred,
       1 .. discouraged,
       2 .. strongly discouraged

  <students count="29035">
    <student id="1">
      <class id="786"/>
      <class id="791"/>
    </student>
    <student id="2">
      <class id="583"/>
    </student>
    ...
    <student id="29035">
      <class id="630"/>
    </student>
  </students>
    Student definitions.
    Each student contains a list of classes s/he is enrolled in.
    In order to keep number of student conflicts as low as possible, enrollments of two students which are enrolled in different classes of the same course can be swapt. This is called final student sectioning.
</llrt>

[back]