How can we order n number of mentees into groups with m number of mentors/group leaders?

Solving this problem the naive way takes factorial time. In laymans terms this means with a modest data set, the processing time could take days, months, or even years.

Additionally, this problem is made even harder when we think about adding things such as additional features (ie. Only Online?, Transfer Student?)

This is obviously bad, so this program implements a genetic algorithm to speed up the process. This approach is ...

The fitness function defines areas that we care about that we want the program to care about too. We assign a weight to each of the things that we care about in order to tell the program how much we care out it. For example, we might care more that all people are placed in a group than the total number of groups so we can give the unmatched people a higher weight than group size. The four points of the fitness function are shown below.

To run this program, all you have to do is insert a csv file with the correct file format. The program is very picky about its file format so please be sure to set up your file correctly.

The file format must contain the following three fields.

A basic sample file is shown below.


Please note how times are formated. The day of the week is followed by a colon and then a time range. Also note that the mentor has a 1 in the is mentor column while the others do not. A 1 or 0 are the only acceptible formats.

A more complicated example is shown below


This example incorporates features into the file. Features must be binary (either 1 or 0) and you can have as many features as you want.

All parameters execept for the file are optional. The parameters are broken into two main types: score and program

Score parameters allow you to adjust the weights of values in the fitness function. The sum of the values of each of the fields must be equal to 1. On the website, scores are modifiable in .05 increments.

The defaults for all of the score parameters is .25. A breakdown of each score parameter is shown below.

All Algorithm parameters are optional and will default to default values in not specified otherwise.