This is the starting point of the documentation of Amiba, the Gene Expression Programming framework in Java
Gene Expression Programming (GEP) is, like genetic algorithms, a branch of evolutionary computing. It is supposed to combine the efficiency of genetic algorithms and the power of genetic programming.
Amiba is written very systematically, using the features of Java 1.5 and many suitable design patterns. In fact, its systematic, modular, extensible design is one of its USPs. It separates the process of evolution from the process of interpretation of the chromosome, allowing the use of various schemes in the chromosome. For example, graphs may be used as terminals and graph operations as operators in the chromosome instead of the usual double precision numbers. JavaCC-JJTree along with visitor pattern is used to parse and interpret the chromosome. The desirable encoding schemes can be easily added. Chromosome encoding does not interfere with the process of evolution which simply operates on strings.
Amiba is based on a couple of papers by Candida Ferreira and implements the genetic operations mentioned in them, including mutation, transposition and recombination. The options and rates are easily configured through an XML file. A mechanism to load fitness cases in bulk is also provided.
Amiba makes use of Apache Commons Math and JGraphT libraries, among others.
The plan is to add more unit tests, apply pmd and checkstyle and do performance engineering to improve efficiency manifold.
Through Amiba, I want to promote the idea of "Java for Scientific Computing". There is no reason why good coding practices and philosophies cannot be leveraged in scientific domain.
Here is the document explaining the rationale and design.
Here is the document showing how to use Amiba with code examples.
Here is javadoc.
Here are ScientificGrammar and GraphGrammar in EBNF form.
Here is a list of open and fixed issues
You can run MainTest and ScientificParserTest to check if everything is alright.
To build the project you will need to add all the jars in the lib folder to the project build path.
Right click on project -> Build Path -> Configure Build Path -> Libraries
PS: GraphGrammar has not been added yet.