The Allocation problem, assigning students to sessions
Submitted by brad on Thu, 2011-07-28 22:05This is a challenge to blog readers to come up with (or find examples in practice) of good systems to allocate students to parallel sessions based on their preferences. I've just concluded one round of this, and the bidding system I built worked OK, but is not perfect.
The problem: Around 80 students. On 10 days over 4 weeks they will be split into 3-5 different parallel sessions on those days. Many sessions have a cap on the number of students, and more students will have them as a 1st choice than can fit. Some sessions can take many students and won't fill up. The students can express their preference as ranking, or with numeric values.
This is known in the literature as the Allocation problem, and there are various approaches, though none I found seemed to fit just right, either being easy to code or having existing running code. But I am keen on pointers.
The goals:
- Maximize student satisfaction/minimize disappointment. Giving a student their 1st choice is good. Giving 3rd or 4th choices is bad.
- The system must be easy for the students to understand and use.
- Fairness. This has many meanings, but ideally mismatches that can't be avoided should be distributed. If somebody gets a 4th choice one day, they perhaps should have a better shot at a 1st choice on another day.
- It's nice if there's a means of applying penalties to students who violate rules, sneak into sessions etc. Academic violations can result in less chance at getting your 1st choice.
- It should be flexible. Sessions may have to be changed or many not fully finalize until a week before the session.
- It is nice to handle quirks, like duplicated sessions a student takes only once, but where the student might have preferences for one of the instances over another. There may also be pre-requisites, so only students who take one session can have the sequel.
- Things change and manual tweaking can be advised.
Rank sessions in order, 1st come, 1st served
This was used in the prior year. Much like a traditional sign-up sheet in some ways, students could indicate their choices in order. If more students had a session as 1st choice than would fit, the ones who filled out their form first got in. This gave priority over all 10 days and so it was changed to rotate each week to distribute who was first in line.