The idea came to me years ago, when I first heard about the genetic algorithm. It was while reading Ray Kurzweil’s The Age of Spiritual Machines where I was first introduced to this algorithm and it’s potential. Kurzweil is an american author, computer scientist, inventor and futurist who was hired in 2012 by Google to work on machine learning and language processing projects. He describes the algorithm as such:
…an evolutionary algorithm involves a simulated environment in which simulated software “creatures” compete for survival and the right to reproduce…the creatures allowed to survive and reproduce into the next generation are the ones that do a better job of solving the problem.
– Ray Kurzweil, The Age of Spiritual Machines
Also known as the evolutionary algorithm, the genetic algorithm starts with a set of digital creatures whose DNA corresponds to a solution to the problem. It evolves these creatures over and over creating better creatures, and hence solutions, as each generation passes. Imagine if this algorithm could be applied to predicting NFL game winners.
The genetic algorithm involves the following steps
- Create Creatures
Then for each generation repeat the following steps:
- Test Creatures
- Kill off a portion of the creatures
- Repopulate the population by sexual reproduction
The genetic algorithm applied to predicting NFL outcomes
- Create Creatures to pick winners of the games
Then repeat for each generation
- Have the creatures make picks on historical data where we know the results but the creatures don’t.
- Kill off the 50% of the population with the lowest percentage of correct picks
- Create new creatures using the top 50% as parents while introducing some randomness
I tried to make a version of this back in the year 2000, when I was in school at the University of Waterloo, but I couldn’t even get a version of it to run. I was still learning how to program and my experience was very limited. I graduated in 2003 with a degree in Mathematics and now in 2016 my brother and I own a successful software development firm called ComPeters Inc. My brother was very enthusiastic about the genetics algorithms potential and has pushed us to get something up and running. The timing was also convenient because one of our employees Elliott has had some experience programming genetic algorithms in the past. So we setup a plan to get the algorithm up and running and this is the beginning.