This package provides a framework for working with genetic algorithms. A genetic algorithm is an evolutionary technique, inspired by biological evolution, to evolve entities that perform as good as possible in terms of a predefined criterion (the scoring function). Note: lower scores are assumed to indicate better entities. The GA module provides a type class for defining entities and the functions that are required by the genetic algorithm. Checkpointing in between generations is available, as is automatic restoring from the last available checkpoint.