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.