with both nominal and numeric attributes are also easily induced with gene expression programming using the framework described above for dealing with random numerical constants. The chromosomal architecture includes an extra domain for encoding random numerical constants, which are used as thresholds for splitting the data at each branching node. For example, the gene below with a head size of 5 (the Dc starts at position 16): 012345678901234567890 WOTHabababbbabba46336 encodes the decision tree shown below: In this system, every node in the head, irrespective of its type (numeric attribute, nominal attribute, or terminal), has associated with it a random numerical constant, which for simplicity in the example above is represented by a numeral 0–9. These random numerical constants are encoded in the Dc domain and their expression follows a very simple scheme: from top to bottom and from left to right, the elements in Dc are assigned one-by-one to the elements in the decision tree. So, for the following array of RNCs: C = {62, 51, 68, 83, 86, 41, 43, 44, 9, 67} the decision tree above results in: which can also be represented more colorfully as a conventional decision tree: Criticism GEP has been criticized for not being a major improvement over other genetic programming techniques. In many experiments, it did not perform better than existing methods. Software Commercial applications GeneXproTools GeneXproTools is a predictive analytics suite developed by Gepsoft. GeneXproTools modeling frameworks include logistic regression, classification, regression, time series prediction, and logic synthesis. GeneXproTools implements the basic gene expression algorithm and the GEP-RNC algorithm, both used in all the modeling frameworks of GeneXproTools. Open-source libraries GEP4J – GEP for Java Project Created by Jason Thomas, GEP4J is an open-source implementation of gene expression programming in Java. It implements different GEP algorithms, including evolving decision trees (with nominal, numeric, or mixed attributes) and automatically defined functions. GEP4J is hosted at Google Code. PyGEP – Gene Expression Programming for Python Created by Ryan O'Neil with the goal to create a simple library suitable for the academic study of gene expression programming in Python, aiming for ease of use and rapid implementation. It implements standard multigenic chromosomes and the genetic operators mutation, crossover, and transposition. PyGEP is hosted at Google Code. jGEP – Java GEP toolkit Created by Matthew Sottile to rapidly build Java prototype codes that use GEP, which can then be written in a language such as C