genetic algorithm
Overview
A genetic algorithm is, in essence, software which has been evolved to do a specific task. Rather than writing a program to accomplish the task, the programmer creates an environment in which many almost-identical copies of an initial "seed" program-pattern are evaluated; additional almost-perfect copies are made of those patterns which perform best on the task, while those which are the least able are removed from the pool of patterns. This process is repeated for many generations until one or more patterns emerge which perform the task well enough to be put into production use.
Using this technique, algorithms which would be extremely difficult or expensive to design intentionally can often be created with relatively little human work (and much intensive usage of computer power, which is much cheaper than human labor).
The process is generally only applied to components within a program where the component's task is such that each pattern's performance on that task can be quickly and accurately evaluated, almost always by an automatic process (although it is also possible to make use of unskilled human labor to evaluate results, especially by using the internet to allow many human evaluators).
Issues
The success of this software development tool is one piece of confirming evidence that evolution by natural selection works as theorized.
Links
Books
- A Field Guide to Genetic Programming (free download, also available in print)
Software
- breve simulation environment: open source library and applications for 3d simulation of creatures evolved using genetic algorithms