People can chose up to 5 of 25 lectures in advance. All these lectures are given on one day in five rooms at five time slots. Each (preferred) lecture a listener can attend to makes her a bit happier, each lecture he chose but can't attend to (because another preferred lecture is in the same time slot) makes him a bit unhappier. The list of preferred lectures is not weighted (at least the registrants have not been told to order their preferences, but if it makes things easier I could assume that the first choice has the highest priority and so on, that information is available).
Is there a way to maximize the overall happiness or an approximation without trying every single possible schedule? I've found an empty stub for the hospitals/residents problem on wikipedia which pretty much sounds like a similar problem(?)
views:
300answers:
2I don't think you've provided all of the information. If you have 25 total lectures (assuming no duplicates, as that wasn't described) with 5 time slots and 5 rooms then there are always going to be 4 lectures missed at every slot by any given attendee. Given that you haven't provided any capacity restrictions on the lectures and you explicitly said they aren't weighted, there is no difference in aggregate (or even personal) happiness between everyone attending the same lecture ordistributing the attendees (evenly or unevenly) over all 5 concurrent lectures.
It may be overkill for your requirements, but you may want to consider a genetic algorithm, as described in Mike Swanson's PDC 2008 Conference Scheduling Using a Genetic Algorithm.
He discusses the technique in a 32-minute interview on Channel 9 entitled Algorithms and Data Structures: Mike Swanson - Genetic Session Scheduler.