## 26 November 2005

I can learn new algorithms for developing schedules, I'm sure, but I was always a little concerned about how I would evaluate the "goodness" of a particular schedule. If I show you two different sets of classes, which set would you say is better?

Today I figured it out. Given a particular section of a course, it
either satisfies a `Preference`

or it doesn't. If I have a
preference for Tuesday/Thursday classes, for example, and I'm
considering a class on Tuesdays and Thursdays, that satisfies my
preference. In that case, I'll award points equal to the "severity"
of the preference (see my earlier updates about that). If it doesn't
satisfy the preference, I neither add nor subtract points.

Thus each section *statically* gets a score. That is, I can
consider all sections of all courses that are relevant to the student
and give each one a score based on her preferences, and I can do it
all before ever considering any possible schedules.

Now, when it comes time to evaluate any particular schedule my algorithm produces, I can just add up all the points earned by all sections in that schedule (and divide by the number of sections so heavier course loads aren't automatically preferable). Presto, a schedule with a higher score is better.