although there are a plethora of other approaches.
In essence, they all come down to
choose a quantitative problem to solve
choose a "good" way to represent solutions - raw bitmaps, lists of floating-point numbers, tree structures, or something entirely different?
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.
choose some initial guess solutions to the problem
determine how good these are, objectively, at solving the problem
allow the solutions that are better, objectively, to multiply more than the ones that aren't, with some minor variation
get rid of some of the worse solutions you have hanging around, and keep the better ones
repeat from (4)
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. -- JonGroffAdded "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. -- DavidCaryCategoryEvolution