I had initially thought this would need to be estimated via a logit model, but this seems like a nicer solution
The advantage of this model is that even if all teams don't face all teams, so long as we have a good number of matches (and teams are reasonably well-connected to each other in a graph structure) then it should take into account e.g. a team facing only strong teams
Because of the way this has been computed, all fitness values will sum to 1
win_percentages(): Implements a the ratio of matches a team has won to matches a team has played
Nice and straightforward
Results will however need normalising - this could be added as a parameter to the function
Some stuff renamed in the genetic algorithm psuedocode to avoid clashes in argument names
This PR implements two candidate functions for the concept of 'fitness' in the genetic algorithm, both in src/genetic/fitness.py
They are: