Implements a single-point cross over between two chromosomes.
Implements a mutation function based on a given number of mutations per chromosome and a gene mutation function.
A roulette type selection algorithm.
A truncation type selection algorithm.