Our system codes a set of pseudo random numbers, which are used to decide
which choice to take when a non terminal has one or more outcomes. A chromosome
consists of a variable number of binary genes, each of which encodes an 8 bit number.
Consider rule #1 from the previous example:
(1) <expr> ::= <expr> <op> <expr> | ( <expr> <op> <expr> ) | <pre-op> ( <expr> ) | <var>
In this case, the non-terminal can produce one of four different
results, our system takes the next available random number from the
chromosome to decide which production to take. Each time a decision
has to be made, another pseudo random number is read from the chromosome, and in this way, the system traverses the chromosome.
In a fashion similar to natural biology the genes in GE are expressed as a protein. These proteins can act either independently or in conjunction with other proteins [Elseth 95], the physical results depending on the other proteins that are present immediately before and after a genes expression. It is possible for individuals to run out of genes, and in this case there are two alternatives. The first is to declare the individual invalid and punish them with a suitably harsh fitness value; the alternative is to wrap the individual, and reuse the genes. This is quite an unusual approach in EAs, as it is entirely possible for certain genes to be used two or more times. Each time the gene is expressed it will always generate the same protein, but depending on the other proteins present, may have a different effect. The latter is the more biologically plausible approach, and often occurs in nature. What is crucial, however, is that each time a particular individual is mapped from its genotype to its phenotype, the same output is generated. This is because the same choices are made each time.