I'm a relative newcomer to the world of combinatorics, and would like a suggestion for how to tackle this problem.
We have an event that 750 students will be attending. The event is split into 4 sessions. (A,B,C,D) They can pick 4 subjects out of a list of 48, and each choice will take up a session slot. Each choice has a preference weighting from 1-4, their first choice being priority.
If a subject is particularly popular, we run multiple instances of it. For example, Psychology will run 2 instances of a class in each session. Each class can hold 25 people. So we can have 50 people attending Psychology in any given session.
Roughly 20 subjects will only have enough interest to have 1 instance of a class.
How would you start to do this analysis and allocation? I'm an experienced programmer in C#, so would use that.
My first idea was to identify "problem students" those who have the least number of available options, and to distribute the least popular courses evenly throughout the day, so that they can be catered for.
Once these times for the least popular courses are settled, I'd then balance the non-problem student into these courses. (i.e They have chosen a low interest course, but have a larger number of options.)
If this is not a computer science question, if you could point me in the right direction i'd be very grateful!