Recent Progress

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.