The basic structure of the DAO's objective function iterates over all the students and sums up their `unhappinesses'.
There are two main types of constraints in the DAO's objective function: Room-student and student-consensus related errors (Table 2.1). Room-student constraints take student and room attributes into account. For example, a room-student mismatch occurs when a student's first choice hall does not match the hall of their room. Student-consensus constraints are concerned only with the students in the room (or suite). Student-consensus errors occur when the occupants of the room do not agree, for example, a student who prefers classical music is in the same room as someone who objects to the classics. Student-consensus constraints can also be used to determine the attribute of the room, such as non-smoking and gender.
Additionally, a compiled-in table determines whether constraints are weighted by students' seniority and reservation order. Priority increases the constraint penalty if there is a problem, thereby encouraging the system to find a better solution for the individual and the whole. `Dorm Preferences' and `Roommate Requests' are the weighted constraints in the DAO. A closer look into weighted and unweighted constraints follows in Section 2.2.1.
The Objective Function is the sum of all per-student constraint violations, weighted and unweighted, as they apply to each student in a bed, given all the other students in their beds. Housing sets the penalties to indicate the relative importance of the errors (e.g. no bed at all is much worse than a older roommate). The grades and the error breakdowns are kept on both individual and overall bases for reporting purposes.
The Objective Function (details in Appendix B), , is computed as:
where is the state, is the number of students, is the number of rooms, is the number of students in a room, is the student's calculated seniority-lottery-weight, is the user-specified value of the constraint coefficient, is the set of weighted room-student constraints, is the set of unweighted room-student constraints, is a room-student error, is the set of weighted student-consensus constraints, is the set of unweighted student-consensus constraints, and is a student-consensus error.
The overall cost (the global grade or score) for all the students, computed initially and as sanity checks, is linear in the number of students. Most of the time, however, we can update it incrementally in constant time by adding the change in cost resulting from a single move to the global grade. Our goal is to minimize the global grade.
|Sometimes the Whole Must Suffer|
|A first time student for Fall 2000, seventh in line by lottery number, had three different hall choices, the second of which was the less popular all-female hall. The DAO placed her in her second choice for the overall benefit of those students who would not be happy with anything less than this student's first choice. Regardless, she was manually upgraded to her first choice because she was at the head of the line.|
Seniority weights, constraint error values, and other configurable parameters assigned by Housing, are read from an options file as the program begins, and are used to compute the overall cost of the objective function. As management policy changes, these choices can be amended without recompiling the DAO. However, choosing values accurately to reflect these policies becomes the real challenge, as shown in Section 4.1.1 (page ).