Background
Introduction to Genetic Algorithms
Charles Darwin's theory of evolution by natural selection synthesized with Mendelian genetics is accepted in science today as the processes by which all creatures on Earth came to be. In the modern world, engineers however are usually not constrained nor concern themselves with the patterns of evolutionary design.
Evolutionary design differs from modern design as we understand it in two main ways. First, evolutionary design tends to reach an end point by approaching problems through distributed solutions. Distributed solutions approach any problem by spreading the parts of a solution across many members rather than having a central processing system that tackles the problem as a whole. Evolutionary design is also different in that it is not modular. A process is modular if it is composed of many separate components, with each component having a particular job. The reason evolutionary design cannot be modular is that organisms must be able to function at every step of evolutionary transformation and not just at the final stage. If organisms were modular, advanced organs would never appear since these organs can't simply appear overnight.
John Holland created genetic algorithms in the 1960s to more closely study the workings of evolution by natural selection. His original algorithm involved transferring a string or strings of programming code and changed these "algorithmic chromosomes" in ways similar to real genetics (mutations, crossovers, inversions, etc.). Each chromosome is comprised of "genes" and each "gene", "alleles" consisting of binary codes. Through a selection method, chromosomes can be passed on to offspring. In evolutionary algorithms, the most fit members of the population will produce more offspring than the less fit ones.



