Genetic algorithms lack an important element for developiong complex
functions: representation.
In
general, with genetic algorithms, one must come up with a coding
scheme for a fixed-length string, which constrains the
solver to a given ``size'' for a solution. However, if the form of
a near-optimal algorithm is not known in advance, then the static
nature of the coding prevents the solver from venturing into areas of
solution-space which have better potential. The virtual number of
states becomes limited.
In addition, it is difficult to think of a fixed-length string as an
encoding for a hierarchical expression, which is sometimes required
for more complex problems. The ``shape'' of the solution is thereby
also constrained in a genetic algorithm implementation. Thus, the
need for a more dynamic approach is necessary. In fact, this need
was, as Koza notes, recognized early on, and eventually led to the
development of genetic programming.