The Genetic Algorithm (GA) is a powerful technique for optimization which iteratively improves upon an initial population of solutions through randomly combining the best performing solutions. The main steps are expanded on below and consist of: scoring, selecting parents, crossover, and mutation which are iteratively applied until convergence.
This repo is the source code to the overview of genetic algorithms article here: https://andrewgibbsbravo.com/genetic-algorithms/ and enables you to test different settings and strategies for genetic algorithms.
You can create a gif similar to the Charmander one below that visualizes the genetic algorithm improving for any picture.