Strongly-typed tree GP was outlined by
and EpochX provides an implementation of it which we refer to
in shorthand as XGP (EpochX
XGP stores and manipulates candidate programs in their tree
structure, and so we can perform evaluation by triggering each
node in the tree to evaluate its children, then itself.
The string representation of the programs that are
produced has the standard lisp like format. For example:
ADD(3.0, MUL(5.0, -1.0))
We refer to this specific language as Epox, but the
significant thing about Epox is that the language is
extendable - new functions can be defined, and they can
be made to handle any data-type.
As well as strongly-typed tree GP, EpochX also supports
the popular context-free grammar GP
and grammatical evolution representations.