Assign people to projects by preference

This page contains two algorithm for assigning people to projects based on their preference. The idea is that there are more persons than projects and that you want to assign an (almost) equal number of persons to each project. Each persons is asked to order the project from highest to lowest preference. These preference are taking into account. The algorithm starts with calculated the weighted popularity of project and then start to find the persons who are most interested in the least popular project and assigns these to this project. The process is repeated with next least popular project that is left over. I make no claims with respect to whether these algoritm finds the best solution possible. It is possible that for a certain project there are exactly the correct number of persons who have give it the highest preference, yet that these persons are not assigned to the project. The reason for this is that one of them might be selected for a project with less popularity. I have added the checkbox 'Match exact project first', that when checked causes projects for which there are an exact number of persons with the first preference for that project, will cause these to be matched first for the first algoritm. In some cases this might lead to an uncorrect matching when the number of persons is not a multiple of the number of projects.

Each line of the input should contain a name followed by the order in which the projects (numbered from 1 up) are prefered by the student (from higest to lowest). The name and the numbers should be seperated with a tab character. The name may contain spaces.

Input:

Number projects:
Minimum number of people per project:
Maximum number of people per project:
Match exact projects first


Home | November 6, 2014