Evolutionary Algorithms

An EvolutionaryAlgorithm is a type of heuristic search and optimization methods based on principles of biological evolution and breeding. The major camps and flavors are

although there are a plethora of other approaches.

In essence, they all come down to You want a representation such that, given some initial guess, small changes to that guess (in step 5) give rise to solutions that are slightly better or worse, rather than surrounding each reasonably-good initial guess with large moats of terrible solutions that have to be jumped over to reach better solutions. Recombination of solutions features in a lot of these, but mutation (slight variation of certain "genes") is enough for some of the others. The literature on EvolutionaryAlgorithms is full to the brim with slight fillips and specializations. -- BillTozier

Actually, mutation should be used sparingly. Some experts like Koza decry its use at all. The current framework for ExtremeGeneticProgramming is capable of evolving solutions using crossover only. -- JonGroff

Added "choose representation" step. I haven't done much with EvolutionaryAlgorithms (experts, please comment), but I suspect more ProgrammerTime? is spent diddling with various representations than any other step of this process. (Of course, most MachineTime? is spent iterating steps 2 through 5, but that can happen while the programmer is taking a CaffeineBreak?, overnight, or over a 3 day weekend. -- DavidCary


View edit of February 17, 2005 or FindPage with title or text search