Grammatical Evolution (GE)
Grammatical Evolution (GE) is a popular grammar based representation introduced by O'Neill and Ryan. EpochX's implementation of GE is referred to as XGE (EpochX Grammatical Evolution). XGE takes a BNF grammar as one of its inputs and then evolves parse trees that form syntactically valid source strings according to that grammar. While similar, GE dictates that the process of evolution for XGE is different to that of EpochX's other grammar-based representation, XGR.

How source strings are evaluated in XGE is grammar dependent. In theory, the GE technique makes it possible to evolve programs in any language which can be defined in a BNF. However, in practice, it requires a way of evaluating the program snippets in order to assign a fitness score. So in order to evolve Java, Lisp or Ruby code, some form of interpreter for that language is required. EpochX provides a way of plugging in interpreters for different programming languages, and provides interpreters out of the box for the following:

  • Java
  • Ruby
  • Groovy
  • Epox

Of course it is also possible to evaluate a candidate solution manually without an interpreter.


As well as grammatical evolution, EpochX also supports the popular strongly-typed tree GP and context-free grammar GP representations.