A genetic algorithm that creates an optimal team arrangement based on links between nodes (members)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Algorithm.py
LICENSE.md
Node.py
README.md

README.md

A genetic team optimizer algorithm.

Algorithm.py is the main class, and currently runs the genetic algorithm, which groups nodes into "teams" of predetermined sizes based on their preference for each other and their exclusions.

Features:


  1. Automatically detects stagnation of a run, and starts a new run with the same data set untill a maximum numer of generations have passed.
  2. Generates a new team layout each run, offerring a range of possible layouts.
  3. Allows for elitist selection.
  4. Paramters can easily be tweaked to customize the algorithm.
  5. Compatible with Python3, Python2, and pypy (for more speed).

Example Results (Diversity disabled):


80 Nodes, each with 5 preferences and 3 exclusions, operating on a completely random set:

Constraints:

  • Exclusions must be guaranteed

Paramters:

  • Pop size: 80
  • Mutattion rate: 3%
  • Elitism: Off
  • Preference fitness bonus: 3
  • Exclusion fitness cost: 10

Best Outcome:

  • 100 preferences granted, 0 exclusions violated
  • Time: 40 secs (pypy)

Example Results (Diversity Enabled):


80 Nodes, each with 5 preferences and 3 exclusions, and 4 personality traits operating on a completely random set:

Constraints:

  • Exclusions must be guaranteed

Paramters:

  • Pop size: 80
  • Mutattion rate: 3%
  • Elitism: Off
  • Preference fitness bonus: 25
  • Exclusion fitness cost: 100
  • Personality Traits: 4

Best Outcome:

  • 120 preferences granted, 0 exclusions violated, 10.19% diversity acheived
  • Time: 65.91 secs (pypy)