nitij11's comments

nitij11 | 8 years ago | on: Ask HN: What algorithms should I research to code a conference scheduling app

I don't know of the formal way of solving such problems, but I have worked with them in the past.

Since the numbers are not large, I would suggest just brute force every possible combination and give each one a score based on your needs. You can then just select the higher ranked ones.

An example of assigning scores for this problem could be: Select any 16 talks and assign them randomly to the 4x4 time slots, and assign the 60 viewers to these as well. Now calculate the score as: +1 per vote these talks received per viewer that gets to attend them -10 for every overlapping vote -20 for a presenter not being able to attend a talk they are interested in

Sum up these numbers to get a score for this combination.

The actual numbers would depend on how important each criteria is to you. Calculate the scores for all combinations and pick the highest ranked ones. You can then be certain that the solutions you pick are mathematically the best ones. Implementing ranked preferences is also very easy this way.

If the numbers could get large and performance is an issue, then a genetic algorithm would be a good bet. It's like a better/more optimised way of moving through the solution space than plain brute forcing. You essentially select 50 good combinations, calculate scores for each and then eliminate the weakest ones while keeping the best ones and merge their good parts to create a new generation of solutions. And you do this till the solution converges. There are libraries in most programming languages that do much of this work for you.

Unless I am completely misunderstanding the problem statement, this is not a big project - the algorithm itself could be done in less than a weekend - maybe a few hours even. But yes, brute forcing or using genetic algorithms may not be the best way of solving this problem because of performance concerns.

page 1