I built an evolutionary algorithm for retail inventory replenishment in a product targeted at huge plant nurseries (and there are some really big, smart ones -- $200m companies).
It was probably the coolest thing I've ever worked on. Using three years of historical data, it crunched and evolved for a week straight while I was on vacation.
The end results were both positive and bizarre. Actually, I was pretty sure it was broken at first.
The algorithm was ignoring sales from the previous few weeks, giving them a weight of 0 for all indicators (which is at odds with how these guys currently work -- right now they consider the same week in the previous year and also factor in recent trends).
Eventually I realized what was going on. With the indicators the organism had to work with, over time it was more efficient to look at the same part of the previous month and ignore recent trends.
So instead of looking at the last several days, it looked at the same week in the previous month because there were some subtle but steady trends that repeat every 30 days. And they were more reliable than the more volatile day-to-day trends.
And the result was a significant and reproducable improvement in efficiency.
Unfortunately, I was so excited by this that I told the customer about it and they cancelled the project. That first run was extremely promising, but it was hard to sell as proof even though you could crunch almost any data from the last three years and see that the algorithm magically improved efficiency. EA's are not hard, but people find them convoluted at first, and the idea of doing something so arcane was just a little bit too much to swallow.
The big takeaway for me was that if I ever create something that appears a bit too magical, I should hold off on talking about it until I can put together a good presentation. :)
A genetic algorithm is a class of evolutionary algorithm. Although genetic algorithms are the most frequently encountered type of evolutionary algorithm, there are other types, such as Evolution Strategy. So, evolutionary algorithms encompass genetic algorithms, and more.
Best Answer
In evolution strategies, the individuals are coded as vectors of real numbers. On reproduction, parents are selected randomly and the fittest offsprings are selected and inserted in the next generation. ES individuals are self-adapting. The step size or "mutation strength" is encoded in the individual, so good parameters get to the next generation by selecting good individuals.
In genetic algorithms, the individuals are coded as integers. The selection is done by selecting parents proportional to their fitness. So individuals must be evaluated before the first selection is done. Genetic operators work on the bit-level (e.g. cutting a bit string into multiple pieces and interchange them with the pieces of the other parent or switching single bits).
That's the theory. In practice, it is sometimes hard to distinguish between both evolutionary algorithms, and you need to create hybrid algorithms (e.g. integer (bit-string) individuals that encodes the parameters of the genetic operators).