AgencyGP is a plug-in to the Alias|Wavefront Maya package that uses genetic programming techniques to explore spatial constructs through the evolution of three-dimensional designs. Its software structure is noteworthy for its integration into a high-end three dimensional modeling environment, its allowance for direct user manipulation of the evolutionary process, and its agent-based evaluation of design fitness.

What is Genetic Programming?

Genetic Programming is a methodology for machine learning that grew out of the field of genetic algorithms. The genetic algorithm [GA] model takes as its organizing metapho, the biological processes of evolution. The system begins by creating a population of "individuals", each represented by a "genotype." In the case of GA, the genotype typically consists of a fixed-length string of symbols, which can be decoded and expanded into a phenotypic individual in the same way that a biological genotype is phenotypically expressed in an organism. These individuals then undergo a simulated process of evolution (Koza).

The natural process of sexual reproduction allows for the recombination of genes from one generation to the next by the "crossing-over" of genetic material. This allows for dramatic differentiation of offspring from parents. An analogous method of crossover occurs within the GA system's population as pairs randomly mix their genotypes to breed a subsequent generation of individuals. Mutation of an individual's genotype is also a common occurrence in reproduction, and it occurs randomly.

However, as in natural selection, not all individuals have an equal probability of transmitting their genes to the next generation. A population of individuals' phenotypes are ranked by their "fitness," and the associated individuals are selected to breed in rough proportion to their fitness ranking. Fitness can be calculated by any consistent measure. In the case of AgencyGP, fitness is derived from the combined efforts of multiple software agents.

The control loop for a GA system begins by creating an initial population of randomly generated genotypes. Then the genotypes are interpreted to produce phenotypes, which are ranked by fitness. A new population is created by the breeding and mutation of individuals, and the old population is discarded. Although all of the genetic operations that produce one generation from the previous are stochastic, the pressure of selection is assertive, and the result of multiple generations is a population that is, on average, far fitter than its predecessors. GA is of wide application to problems of multivariate optimization.

Genetic programming [GP] is an extension of the genetic model, in which the genotype is expressed as a variable-length list or tree of commands in a simple language. The phenotype then represents the execution of those commands. When genomes in GP are mutated and crossed over, commands are inserted or deleted in the genotype or their parameters are changed. Much of the success or failure of an application of GP depends on the design of the internal language that constitutes the genotype. In the case of AgencyGP, we have developed a language that operates on primitive shapes and combines them with others to build up more complicated designs that constitute the individuals in a population.

It is worth noting that typically in a GP system, it is difficult or impossible for a user to halt evolution, directly modify an individual, and resume evolution-a procedure known as "interruption, intervention, and resumption" [IIR]. This is because in languages which contain conditional structures, it is not possible to map changes backwards from phenotype to genotype. The cascade of compounding consequences that determines the course of the genetic program destroys the potential for a one-to-one mapping of genotypic to phenotypic feature. The language we have developed for AGENCY GP, however, is non-branching, simple enough that it will allow for IIR.