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"/>
<departments count="64"/>
<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>
|