Program to distribute a given number of people into groups multiple times, so that the number of people that meet each other gets maximized.
This code uses simulated annealing to maximize the number of contacts. It was thrown together in a night to solve a concrete problem I had and isn't intented to be usable / readable / expandable or anything (yet). In the state objects initializing routine there are some parts that are hard coded to only work for certain init parameters because I had no time to finish that properly.