Have you ever had to organize a world café but you struggled how to best split people across the tables while avoiding that always the same people talk to each other? This tool solves these kind of problems where you need to split people to groups with exchanges across tables or days. For example, you can use it to design a multi-day course programme where users are split into several groups and then one group is assigned to a lecturer per day. However, instead of using fixed groups, this tool finds a better allocation with the goal to increase the number of meetings between the users. More details can be found on the webpage for the tool.
Below you find more information on how to host the tool yourself and some information for developers.
- You have two options to run the webserver:
- Run the webserver in debug mode: clone this repository, build and run the dockerfile via
docker compose up --build
- Run the webserver in production mode: use the pre-built image from DockerHub:
docker run -it -p 5000:5000 milania/group_allocation
- Run the webserver in debug mode: clone this repository, build and run the dockerfile via
- Navigate to http://127.0.0.1:5000
The core algorithm is written in C++ (and Python). In both cases, it is a standalone program which finds a good allocation given the number of users and groups. It can be called from the command line (C++ version inside docker)
/group_app/group_allocation_c++/x64/Release# ./group_allocation_c++.exe --n_groups 3 --n_users 6
# ...
[[0,2,2,0,1,1],[1,0,1,2,0,2],[2,1,0,1,2,0]]
In this case, it returns an allocation for 6 users who participate in a three-day course programme with three groups. For more details on the usage, see /group_app/group_allocation_c++/x64/Release# ./group_allocation_c++.exe --help
.
To make changes to the program, just open the corresponding Visual Studio 2019 solution file (there are no further dependencies).
A small UI is built around the command line program in the form of a simple web app. It provides a visualization of the program output (e.g. distribution of user meetings) and allows to export the result as a CSV table.
The server is written in Flask and can be started by running the run_server.py
file. The dependencies can be installed via pip install -r requirements.txt
. Set the environment variable HOSTING_INFORMATION
to add custom hosting information to the end of the webpage (HTML markup is supported).