# Genetic Algorithms

We say a genetic algorithm is structured in the following way. Given a population, $$P$$, each with unique genes, and a number of generations, $$G\in \mathbb{N}$$, the algorithm will create $$G$$ loops of scoring and potentially removing each of the members of the population. It does this by using a heuristic function $$f(p_i)\mapsto \mathbb{R},\ p_i \in P$$. This function, $$f$$, is defined beforehand in a way which describes the goal of our investigation. Defining a cutoff or bottleneck $$b<|P|$$, such that on conclusion of scoring the population, the top $$b$$ ranking members by score can be kept and the rest discarded. Once we have removed a certain percentage of our population we can rebuild it using a series of crossovers and mutations (and possibly introducing new members into the population).
• Mutations allow a (possibly targeted) change in a single member of the population. A mutation has 2 parameters, a potency $$M_p\in \mathbb{R}>0$$ and a frequency $$M_f\in [0,1]$$. $M_p$ describes how strong the mutation is, the higher it is the larger change to the member occurs. $$M_f$$ explains the percentage of how many members of the population are mutated.