# 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">`
attribute | description
--- | ---
semester | name of the semester
year | year
version | data version
created | date of generation of this file
nrDays | number of days per week
halfHoursPerDay | number 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.
attribute | description
--- | ---
id | room identification
capacity | room capacity
location | room 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
attribute | description
--- | ---
count | number of classes in the problem
courses | number 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.
attribute | description
--- | ---
id | class identification
course | course identification (classes are grouped into courses)
expectedCapacity | expected number of students attending the class
department | department identification (each class belongs to a department)
instructor element
attribute | description
--- | ---
id | instructor identification
solution | true, if this instructor belongs to the solution (i.e., placement of this class that is in the solution contain this instructor)
room element
attribute | description
--- | ---
id | room identification
pref | room preference (combined from room preference, building preference and preferences on room features)
solution | true, if this room belongs to the solution (i.e., placement of this class that is in the solution contains this room)
time element
attribute | description
--- | ---
days | a bitmap of days (first Monday, second Tuesday, ...), e.g., 1010100 means Monday+Wednesday+Friday
start | stating half-hour (0 ... llrt.halfHoursPerDay-1)
length | length of class, in the number of half-hours (it's here because there can be alternatives, e.g., 2x75 or 3x50)
pref | time preference (normalized preference on the given time)
solution | true, 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.
attribute | description
--- | ---
id | constraint identification
type | constraint type (see [Group Constraint Types])
pref | constraint 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]