The theory behind Evolved Strategies

There are extremely powerful elements in motion all around us: genes that influence fitness, recombination and evolution of those genes in a complex manner, and natural selection of fitter individuals. Our world is a complex soup of competing, genetically-directed individuals in a generational struggle for survival. This almost-inevitible cycle of processes occurs to drive ever-fitter individuals to more "evolved" designs. As Richard Dawkins observed: genes elect, nature selects.

Through various means, nature takes genes (in the form of DNA, the code of life) and mixes them together to create new genes. These genes, carried by individuals, have a large influence on how "fit" an individual will be (to survive, and to create more offspring with genes similar to those that gave rise to the individual). Roughly speaking, the "fitter" an individual is, the more likely they will be able to create offspring in their likeness. The result of this process are strong individuals that are "fit" for their environment, appearing to some as if a conscious mind had designed them explicitly for purpose.

Computer scientists have recognized the tremendous power of this process, and have developed a branch of computer science called "evolutionary programming." Evolutionary programming is one of the main techniques to build Artificial Intelligence (AI) [the other main technique is "neural networks"].

Using evolutionary computing (and "genetic algorithms" in which algorithms are expressed as data in a gene-like fashion), it is possible to express computer programs in terms of a "gene" that drives behavior and then evolve those application-driving genes over many generations. Initially, such genes can be generated (randomly?) in large numbers, leading to large populations of individuals driven by different genetically-driven behavior.

By mimicking nature, we can select those programs with a higher fitness level to reproduce and pass their genes on--and if these reproductive processes can take advantage of sexual recombination, random mutation, inter-generational carry-over, and other ways to make the genes of programming more diverse and interesting, then it is possible to create a powerful framework for evolving programs from nothing more than a random or primordial soup of code DNA, and just like life on Earth, out of it can emerge (after many generations of many individuals) programs that are very, very good at their purpose in life. The programmer who set this process up may not understand at all how any individual program operates--only that such programs were created as a result of a repeated process of generate, evaluate, recombine, and repeat.

At its core, it is very simple: in code, we emulate a fundamental process at play in nature

Evolutionary Computing has revolutionary applications in many realms, including the following functions: