In N. Nedjah, L. de M. Mourelle, A. Abraham, eds., Genetic Systems
Programming: Theory and Experiences, Studies in Computational
Intelligence, Vol. 13, pp. 21-56, Springer-Verlag, 2006.
Automatically Defined Functions in Gene Expression Programming
|Cells and the Creation of Automatically
|Automatically Defined Functions were for the first
time introduced by Koza as a way of reusing code in Genetic
Programming (Koza 1992).
The ADFs of GP obey a rigid syntax in which an S-expression, with a
LIST-n function on the root, lists n-1
function-defining branches and one value-returning branch (Figure
7). The function-defining branches are used to create ADFs that
may or may not be called upon by the value-returning branch. Such
rigid structure imposes great constraints on the genetic operators
as the different branches of the LIST function are not allowed to
exchange genetic material amongst themselves. Furthermore, the ADFs
of Genetic Programming are further constrained by the number of
arguments each takes, as the number of arguments must be a priori
defined and cannot be changed during evolution.
Figure 7. The overall structure of an S-expression with
two function-defining branches and the value-returning branch used
in Genetic Programming to create Automatically Defined Functions.
In the multigenic system of Gene Expression Programming, the
implementation of ADFs can be done elegantly and without any kind of
constraints as each gene is used to encode a different ADF (Ferreira
2002a). The way these ADFs interact with one another and how
often they are called upon is encoded in special genes – homeotic
genes – thus called because they are the ones controlling the
overall development of the individual. And continuing with the
biological analogy, the product of expression of such genes is also
called a cell. Thus, homeotic genes determine which genes are
expressed in which cell and how they interact with one another. Or
stated differently, homeotic genes determine which ADFs are called
upon in which main program and how they interact with one another.
How this is done is explained in the remainder of this section.