The basic methodology involves having the computer present the user with a set of designs, somewhat randomly created. The user decides which design is "best".
The selected design is used as the springboard for a new set of designs, each created by altering the chosen one slightly. A new "best" design can then be selected from this fresh set, and the process continues... until the user is satisfied.
The paper "Artificial Evolution for Computer Graphics" by Karl Sims which appeared in Computer Grapics, July 1991, provides an excellent explanation of these ideas. The paper's content is discussed below.
"Selection" based upon "fitness" determines which individuals pass their "genotypes" to offspring through reproduction. Assuming offspring are not exact clones of their parents, but slightly "mutated", evolution occurs.
Charles Darwin's, The Origin of the Species and Richard Dawkins', the Blind Watchmaker are two very good sources for further reading.
Sims describes two basic forms of mutation. The simpler form, parametric mutation, is useful for evolving variations of similarly structured forms. Symbolic expression mutation is more complex, but also more general, leading to a wider range of possibilities.
Mutation of a parametric genotype is done by adding or subtracting some small amount from several of the parameters. Modifying the amount each is changed, as well as the number that are changed controls the amount of mutation.
Scheme Example Code
Below are some examples done by Beth Blostein and Terry Monnett. They wrote a function that would generate a building based on the values of 15 parameters. These parameters grouped together form a genotype which can then be mutated to generate the individual buildings, or phenotypes. Below are several iterations of building selection, followed by four views of one of the buildings:
Sims uses lisp expressions for genotypes, which allows the underlying structure to evolve. The tradeoffs are both a loss of control, and greater difficulty in goal directed design. But in design domains driven by exploration rather than purposeful problem solving such as abstract texture or object generation, this lack of control is beneficial, even desireable.
This technique requires a set of functions and a set of mutation operations, each with probabilities for selection. Functions can be chosen at random from the set, and then mutated using a randomly selected mutation operation.
Sims used a set of mathematical and image processing functions to generate texture images. The value of each pixel in the image was determined by a complex math expression. A version of the system was commercially implemented in Kai's Power Tools as a Photoshop add-on (and is available at ACCAD).
Below are some samples generated with a simple implementation of Sims' algorithms and RenderMan:
Some more complicated examples can be found at CMU, courtesy of John Mount.
Karl Sims has made available an animation of his work shown at Siggraph '94 on evolving virtual creatures using physical dynamics:
(9.5meg, used with permission)