| I'm interested in writing a utility to assist with scheduling un-conferences. Lets take the following situation for an example: * 4 conference rooms across 4 time slots, for a total of 16 talks. * 30 proposed talks * 60 total participants Each user would be given 4(?)votes, un-ranked. (collection of the votes is a separate topic) Voting is not secret, and we don't need mathematically precise results. The goal is just to minimize conflicts. The algorithm would have the following data to work with: * List of talks with the following properties: * presenter participant ID
* the participant ID for each user that voted for the talk
I'd like to come up with an algorithm that does the following:* fills all time slots with the highest voted topics * attempts to avoid overlapping votes for any particular given user in a given time slot * attempt to not schedule a presenter's talk during a talk they are interested in. * Sugar on top: implement ranked preferences My question: where do I start to research the algorithms that will be helpful? I know this is a huge project, but I have a year to work on it. I'm also not overly concerned with performance, but would like to keep it from being exponential. Thank you for any references you can provide! |
Basically, you formulate your problem as a integer programming model [3] and use a solver [4] to solve it. You should check PuLP [5].
You can also ask your question at OR Exchange [6].
[1] https://en.wikipedia.org/wiki/Operations_research
[2] https://en.wikipedia.org/wiki/Mathematical_optimization
[3] https://en.wikipedia.org/wiki/Integer_programming
[4] https://en.wikipedia.org/wiki/List_of_optimization_software
[5] https://pythonhosted.org/PuLP/
[6] https://www.or-exchange.org/