Although position in line, hence lottery number, has little to do with making good matches, we accommodate this traditional practice by allowing Housing to adjust the lottery number coefficient. We ask Housing to consider how important this chance order is compared to residence seniority, such that the first person in line gains some fixed percentage of a semester's seniority benefit, the last person has no benefit, and all the others are scaled in between.
A non-weighted constraint has the value specified by the user, such that the more important the effect, the greater its value. A weighted constraint has a base value specified by the user, which is multiplied by the student's calculated seniority-lottery-weight () to determine its overall value. To provide greater granularity in lottery we use a seniority weight close to the number of students.
The greater the seniority weight, the greater the non-weighted constraints must be to have the desired effect. To accommodate these inflationary costs, we converted the in DAO versions v0.6x to an unsigned integer for a global score maximum of approximately 4.2 billion. Weighted contraint values must still be relatively small. Negative values do not exist in the unsigned world, and limit us in two ways: We are unable to support negative constraint values (or credits), and the hardware cannot help us detect overflows. An example of the former is given below. To compensate for the latter, we systematically use software overflow checking whenever we adjust the global grade. If an overflow occurs, the run is aborted, and constraint values must be reduced by the user.
|A `Good' Constraint|
|Ranville asked if we could assign the larger rooms in the apartment-style dorm to the more senior students. Since we do not support negative constraint values, we cannot give `bonuses' when senior students are in these `better beds', so instead we give an error to all other cases, including students in all the other dorms. In effect, we are raising the sea-level of our landscape. This error destroys the majority of perfect zero grades because it is not really an error -- it's a credit!|
|Applying the error just to the apartment-style dorm that actually has the better beds, though initially plausible, results in the DAO choosing to move students out of the apartment-style dorm. Applying the constraint globally avoids that faulty behavior.|
To further conserve error bandwidth, in DAO version v0.93, we converted gender into a `hard constraint', guaranteeing the randomly-chosen bed will always be the appropriate gender, without requiring a large constraint weight to ensure it.