The purpose of this guide is to give a thorough description
of the EpochX framework. It is not intended as a tutorial
and for the most part it will not contain step-by-step
instructions about how to complete certain tasks, that will
instead be left to individual tutorials to be posted
separately. Rather, it will outline the details of the
system itself.

What is EpochX?

EpochX is a Java framework for studying the evolution of
computer programs generated using Genetic Programming
algorithms. Version 1.1+ has 3 fully supported
representations – strongly-typed tree GP,
context-free grammar GP and
Grammatical Evolution. However, EpochX's
extendible structure makes it possible to implement
entirely new representations within the bounds of the
evolutionary framework. A wide range of implementations are
provided to perform selection, initialisation, crossover,
mutation... as well as many of the common benchmark
problems that GP is frequently tested upon.

Who should use EpochX?

EpochX is intended primarily for researchers who are
working on Genetic Programming theory. The sort of person
who might benefit from using EpochX are those who are
interested in the distribution of depth/length/diversity
etc. or a large range of other statistical data about their
run. Or those who wish to have a truly dynamic system where
statistics are accessible in real time and parameters can
be updated as a run progresses. Since EpochX is a Java
framework, a pre-requisite is a basic ability to program in
Java.

Who should not use EpochX?

Raw speed junkies. EpochX is built sensibly to avoid
performance issues, and has support for caching and
threading. But, it is not aiming to be the fastest GP
system. Being extendible, flexible and providing easy
access to data is of far more importance here. There are
more details about the weaknesses
of EpochX.