Showing posts with label alogorithms. Show all posts
Showing posts with label alogorithms. Show all posts

Tuesday, October 19, 2010

Genetic Algorithms: Applying Evolutionary Biology to Computing

Principles of biological evolution are being applied to how computers solve problems in a variety of fields today, from aerospace to finance, acoustics, engineering, etc. It holds the promise of turning innovation into a computational process that can be scaled. How does this work?

Replication and Randomness
Computers are good at replicating, just as biological organisms are. The advances that come with biological evolution come about as minor changes (random mutations) end up favoring fitness for survival (over the course of many generations). So, with that in mind, a computer replicates millions of instances of a problem, and then introduces an element of isolated randomness to each of those instances (just as every individual person replicates the human genome, but we come with randomized versions of our own genetic code).

Survival of Fittest Solutions
Then, since computers are really good at repeating cycles, it's possible to have different "generations" or repeated cycles of the computer trying to find a solution. Benchmarks are set up to determine the viability of candidate solutions, and those candidate solutions either "live" or "die" depending on how well they get to those benchmarks. The computer then replicates the more favorable candidate solutions, introduces additional random factors for the next generation, and tries it again. Here's an example of how it works.