GP and Automatically Defined Functions

Back to main GP Brainstorming page.


Relevant papers from the Symposium Working Notes:

Evolution of Both the Architecture and the Sequence of Work-Performing Steps of a Computer Program Using Genetic Programming with Architecture-Altering Operations. John R. Koza and David Andre

Towards Automatic Discovery of Building Blocks in Genetic Programming. Justinian Rosca

Concepts Reuse in Genetic Programming. Gregory Seront

Evolving Control Structures with Automatically Defined Macros. Lee Spector


This session presented different ideas, schemes to identify and create reusable blocks of code encapsulated in some form.The presentations focussed on architecture altering operations (Koza, Andre), adaptive discovery of building bocks (Rosca) using differential fitness and block activation counts, concept reuse in related problems (Seront)to see if it speeds up discovery of solutions and use of automatically defined macros for evolving new control structures (Spector).

-- What is meant by "reusable code" is different for different researchers, can range from formally defined/encapsulated functions in a formal sense to existance of frequently recurring subtrees in an informal sense.

-- frequency of recurring subtrees, there was discussion on what helps generalization to occur. It was suggested that subtrees close to the leaf nodes get choosen for modification more often therefore useful subtrees get preserved by migrating (and still being useful in different parts of the program).

-- although ADFs have solved some simple problems that straight GP couldn't in a fixed number of runs, (or solved them more efficiently) and helped provide new data/control abstractions in the form of ADFs, has it solved really substantially more complex problems and does it hold the promise to do the same in the near future? are ADFs necessary/sufficient as a formalism to help solve grand-challenge problems i.e. to provide scalability)?

-- relationship of presence of introns to "preserving useful subtrees" it was suggested that introns could provide "safe" places for crossovers. It was also mentioned that intentionally reducing the frequency of introns slowed down successful evolution. [Andre and Haynes contributed notably to this discussion.]

-- concept (library) reuse: (as in Seront's work) is this only relevant to "similar" problems i.e. "common concept reuse" or can this be extended to help collaboration between different researchers?

{Brij Masand}


ADM vs ADF: more reuse, like ADF, but now of args (not just vals) - Having useless functions doesn't hurt, but having *misleading* (red herring) functions is bad. (David Andre) Andy Singleton suggested (part of?) power of ADFs comes from constraining crossover to act on like parts of programs. cf partick D'haaseller's context preserving crossover. {William Langdon}

If ADFs (or, more generally, program modules) can have their own local memory, and some way of communicating with other modules, then GP might become object-oriented. {Alex Chaffee}