I am redesigning a system by which conference participants can choose which track they want to attend. Participants express their track preferences arranging them in order and submitting them at a certain recorded time (which is useful for prioritizing earlier submissions). Each track also has a different quota and some participants have a restricted set of choices because they do not meet the requirements for attending that track (in this case, they do not speak the language required). Assuming there are enough quotas so that these restrictions can be met, how would you go about finding an efficient allocation of participants?
My first approach at a solution involves filling each track quota with participants who selected it as first choice, in the order of their submission. Once I complete that quota, I remove the track from the choice set (so some participants who could not get into their first choice now have a second chance at getting into their second) and go over those choices too, in order of submission.
I am afraid that this algorithm is not going to reach an efficient result (I am thinking in terms of Pareto optimality here, but other criteria can be considered) and, arguably worse, it can lead to some participants unable to get into any track due to language restrictions.
Can you suggest improvements to this approach to guarantee that these two key objectives are met (that a solution is found where every participant is assigned a track, and that this solution is efficient) or point towards literature where similar problems are discussed?