Evolutionary Algorithms (EA) constitute a class of search and optimisation methods, which imitate the principles of natural evolution. EAs provide a universal optimisation technique applicable to a wide range of domains, such as parameter optimisation, search, combinatorial problems and automatic generation of computer programs.
Progress in natural evolution is based on three fundamental processes: mutation, recombination and selection of genetic variants. The role of mutation is the random variation of the existing genetic material in order to generate new (hopefully useful) phenotypical traits. It is n exploration strategy. Recombination hybridises two (in nature but we could do it with more than two) different chromosomes in order to integrate the advantageous features of both parents into their offspring. It is a exploitation strategy. Selection increases the proportion of better adapted individuals in the population. Darwin coined the term survival of the fittest to illustrate selection principle that explains the adaptation of species to their environment. The term fitness describes the quality of an organism, which is synonymous with the ability of a phenotype to reproduce offspring in order to promote its genes to future generations.
The common term evolutionary computation comprises techniques such as genetic algorithms, evolution strategies, evolutionary programming and genetic programming. Their principal model of operation is based on the same generic concepts, a population of competing candidate solutions, random combination and alteration of potentially useful structures to generate new solutions and a selection mechanism to increase the proportion of better solutions. The different approaches are distinguished by the genetic structures that undergo adaptation and the genetic operators that generate new candidate solutions.
Unlike specialised methods designed for particular types of optimisation tasks, EAs require no particular knowledge about the problem structure other than the objective function itself (Actually this is not true but for the most basic binary genetic algorithms. The proper chromosome representation and design of genetic operators and even selection mechanisms, inject problem knowledge to the algorithms) EAs are distinguished by their robustness, the ability to exploit accumulated information about an initial unknown (not quite as I’ve just said) search space in order to bias subsequent search into useful subspaces. They provide an efficient and effective approach to manage large, complex and poorly understood search spaces, where enumerative or heuristic search methods are inappropriate.