Complete Guide > Introduction
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.

Next: Installation