After years strugling at USP to form teams for the it's XP discipline with the following requirements:
- Respect student preferences
- Have a coach
- Respect some reasonable size
- And other XP principles like
- pair programing (even team sizes)
- knowledge spreading (balanced knowledge teams)
- and others...
I've decided to write this:
- Reads input data from student preferences forms from CSV
- Approximate solutions for the problem of forming teams using genetics algorithms
- Allow manual interference from the user
It may also address other minor concerns such as team formation manipulation as they are now decided by a machine.
Given a team:
- For each member of a team git it
- 3 points if the team's project was its 1st option
- 1 points if the team's project was its 2nd option
- 0 points if the team's project was its 3rd option
- Accumulate the scores
- Multiply by a bonus (defaults to 2) the team score
- if the team has a coach
- if the team if of a proper size (defaults to from 4 to 8)
The chromosome score is given by the teams score sum.
- Acceptance tests
- Travis build
- Static code analysis
- Tweak algorithm constants in order to provide better results
- Extract those constants into YAML configuration file
- Input personal abilities data
- Use this data to form equilibrate teams
- Allow the user to configure
- Ruby (recommended 2.3.1)
- bundler
bundle install --without development test
It is expected in CSV format:
- One data entry per row
- Column order
- name (string)
- email (string)
- coach (true|false)
- project1 (string)
- project2 (string)
- project3 (string)
Place your CSV file at the root path and prepare Docker:
docker image build . -t xpteamwise
docker container run -it xpteamwise
Inside the container, run:
rake xpteamwise:generate
If you have hard to process input data, it shall ask you for intervention with simple "Yes/No" questions.
Finally he result should be a txt file at the root as well.
Do a full setup:
bundle install
Run the tests with:
rake spec
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
Copyright Rafael Reggiani Manzo 2016
See the COPYING file for the full license text.