Timetabling system uses XML configuration file format. It consists of several parts, with detailed (and formal) description in XML Schema school.xsd. This description allows validation of input data, before they are passed to the Timetabling System.
The configuration file contains information about teacher and their preferences, rooms buildings and their distances, subjects, students and subject-teacher-students triples. More configurational parameters are also present. There are example data available as well.
This tag contains information about a single teacher. Teacher attributes contain unique ID, and name. Teacher's ID should begin with } t_ (not required). The tag can contain multiple preference constrains, of two types. For time preference, timePref element is used, and for room preference, roomPref is used. More obvious situation is described in example 1.
The timePref tag has two optional versions: in the first one, a single hour is specified (by hour attribute); the second one has two attributes instead - hourFrom and hourTo, describing interval of hours with same preference. In both, day attribute is requied to describe day, when the timePref tag should apply.
The roomPref tag has only one attribute, room attribute, with id of a room or room category (see below) identifier.
Example 1 - teacher tag usage:
<teacher id="t_ciglerova" name="Ludmila Ciglerová">
<timePref day="1" hour="3">12</timePref>
<timePref day="1" hour="4">12</timePref>
<roomPref room="rc_physics">10</roomPref>
</teacher>
To describe buildings and rooms, a hierarchy of tags is used, buildings, building, room, and roomCategory (which is just a reference to a different part, where room categories are described).
Buildings tag is just a wrapper for the whole part with building description. Building tag has (among usual id attribute) name and address attributes, with obvious meaning. Its content is made up of rooms located in that building. Each room, apart from its id, name and capacity attributes, has content with information about categories, which apply to this room; for example, a room for physics would be of following categories: classroom (for usual classroom, unspecified), physics room, room with video recorder etc. This allows users to specify their room preferences more generally and easily, than just by describing each room's preference again.
Another part, which has much in common with buildings, is the buildingDistances tag. It contains multiple buildingDistance tags, whose from and to attributes describe time (in minutes) to travel between specified pair of buildings.
Example 2 - room description
<building id="b_voderadska" name="Gymnázium VodÄ›radská" address="VodÄ›radská 2, 100 00, Praha 10">
<room id="r_phy_1" name="Physics 1" capacity="32">
<roomCategory class="rc_physics" />
<roomCategory class="rc_classroom" />
<roomCategory class="rc_video" />
<roomCategory class="rc_darkening" />
</room>
</building>
Room categories list has its own part, roomCategories tag, a child of root school tag. It gives full description of different room categories. Child roomCategory tags have following attributes: id (it is suggested, that its id should start with rc_, though not required), name, and short description.
Subject information is contained under subjects tag. Information about each separate subject is wrapped in subject tag. It has two required attributes: id (obviously), and name; lessonLength attribute, with default value „1“, describes number of hours each lesson should last.
Example 3 - subject description
<subjects>
<subject id="su_matematika" name="Matematika"/>
</subjects>
To describe groups of students, following hierarchy is used: On the top of it there is a general group of students (such as whole school). Then, each group of students can contain multiple layouts - a set of student groups, which are disjoint. The layouts represent different divisions of a group of students. For example, for English lesson, students of one class are divided into two groups, according to theirs english skills; however, for Sports or German lesson, this division may be different - this is reflected by assigning specific layout to different divisions of this group. Groups of students from a single layout may have different classes at the same time; if there are groups from different layouts at one timeslot (they have classes at the same time), it causes collision - you cannot have German and English with students from same class at the same time. Example 4 illustrates similar situation - students in 4th year of high school may choose from several subjects, according to their future plans. These subjects are visited by students from all 4th year classes, 4.A and 4.B. This means, students from 4.A shall not have any lessons while there is a lesson of Philosophy - it causes collision.
Example 4 - sample situation in students hierarchy

Students (students tag) can have multiple attributes - id, name, desc (optional description) and size. Size attribute is optional, it might be used to count preference in timetabling algorithm.
Stundent layouts (studentsLayout tag) has following attributes: id, optional name, and together (optional), which indicates whether groups contained in this layout preffer to have classes together.
Timetable items are thiples (teacher, students, subject), which are to be spread over rooms and timeslots. There is an additional information about number of lessons per week, which should this triple be used. For instance, class 4.A has Math with Mr. Cooper, 4 lessons per week.
Two tags are used to describe timetable items: timetableItems tag (a wrapper), and timetableItem containing information about single timetable item. TimetableItem tag has following attributes: teacher
Example 5 - timetable item description
<timetableItems>
<timetableItem teacher="t_ciglerova" subject="su_matematika" students="s_1-A" lessons="4"/>
</timetableItems>
For adjusting, several configuration parameters are set. These are still subjects of future specification (according to algorithms needs). Parameters (specified by param tag) are wrapped by config tag.
©2005 LudÄ›k Cigler, licensed under GPL