GA functions

A genetic algorithm requires a number of functions. This package provides the interfaces for those functions and simple implementations. By implementing, mixing and matching these functions you can create highly customized genetic algorithms.

A GA requires (in alphabetical order): a CrossOverFunction to govern the behaivour of 'chromosome' crossovers, a FitnessFunction to determine the fitness of each organism after each iteration, a MutationFuntion to govern mutation behaivour, and a SelectionFunction to select organisms for the next round of replication.