https://medium.com/@monocosmo77/working-with-evolutionary-computation-part1-artificial-intelligence-13fef73982c9