Evolutionary programming was invented by Dr. Lawrence J. Fogel (1928-2007) while serving at the National Science Foundation in 1960. He had been tasked to provide a report to the U.S. Congress on the worth of investing in basic research. One of the topics of consideration was Artificial Intelligence.
At the time, artificial intelligence was limited to two main avenues of investigation: modeling the human brain or “neural networks,” and modeling the problem solving behavior of human experts or “heuristic programming". The former addressed making mathematical models of neurons and their connectivity, but little was really known then about how the brain actually operates. The latter approach was initially conducted through search-based approaches and later joined by knowledge-based or "expert system" approaches. The heuristic approach requires knowledge about the problem domain and some form of expertise. Both focused on emulating humans as the most advanced intelligent organism produced by evolution.
The alternative, envisioned by Dr. Fogel, was to refrain from modeling the end product of evolution but rather to model the process of evolution itself as a vehicle for producing intelligent behavior (Fogel, 1962, 1963). Fogel viewed intelligence as a composite ability to make predictions in an environment coupled with the translation of each prediction into a suitable response in light of a given goal (e.g. to maximize a payoff function). Thus, he viewed prediction as a prerequisite for intelligent behavior. The modeling of evolution as an optimization process was a consequence of Dr. Fogel’s expertise in the emerging fields of “biotechnology” (at the time defined as the utilization of mathematics to describe the functioning of a human operator), cybernetics, and engineering.
Dr. Fogel crafted a series of experiments in which finite state machines (FSMs) represented individual organisms in a population of problem solvers. These graphical models are used to describe the behavior or computer software and hardware, which is why he termed his approach "Evolutionary Programming". The experimental procedure was as follows. A population of FSMs is exposed to the environment – that is, the sequence of symbols that has been observed up to the current time. For each parent machine, as each input symbol is presented to the machine, the corresponding output symbol is compared with the next input symbol. The worth of this prediction is then measured with respect to the payoff function (e.g., all-none, squared error). After the last prediction is made, a function of the payoff for the sequence of symbols (e.g., average payoff per symbol) indicates the fitness of the machine or program. Offspring machines are created by randomly mutating the parents and are scored in a similar manner. Those machines that provide the greatest payoff are retained to become parents of the next generation, and the process iterates. When new symbols are to be predicted, the best available machine serves as the basis for making such a prediction and the new observation is added to the available database. Fogel described this process as “evolutionary programming” in contrast to “heuristic programming.”
The merits of evolutionary programming were investigated by Dr. Fogel upon his return to Convair (San Diego) in July, 1961 through application to problems in prediction, system identification, and control in a series of studies led by Fogel and colleagues (Fogel, 1964; Fogel et al. 1964, 1965a, 1965b) leading to the first book in the field of evolutionary computation (Fogel et al. 1966). This early work was followed by that of several other researchers, who extended the evolutionary programming process to areas such as: predicting and classifying time series (Walsh, 1967; Lutter, 1968; Lutter and Huntsinger, 1969; Burgin, 1974, and others); modeling systems (Kaufman, 1967); and gaming (Burgin, 1969, Fogel and Burgin, 1969). Some of these efforts were among the first to use coevolution or utilize multiparent recombination of existing solutions. Although some early descriptions of Fogel’s evolutionary programming incorrectly asserted that it was limited to one parent and one offspring and that recombining traits from two or more parents was excluded (e.g., Holland, 1975; Rada, 1981; Goldberg, 1989), it is clear today that sexual reproduction and crossover were fundamental to his approach.
In 1964, Dr. Fogel received his Ph.D. in electrical engineering from the University of California, Los Angeles and his dissertation “On the Origin of Intellect” focused on artificial intelligence through simulated evolution. The early work also led Dr. Fogel, Dr. Al Owens, and Dr. Michael Walsh to establish Decision Science, Inc. in 1965. This was the first company in the world devoted solely to commercialization of evolutionary algorithms.
In the 1970s, owing primarily to the guidance of Prof. Donald Dearholt at New Mexico State University, more evolutionary computation research was published in evolutionary programming than any other form of simulated evolution. Most of this research used evolutionary programming for pattern recognition (Root, 1970; Cornett, 1972; Lyle, 1972; Holmes, 1973; Trellue, 1973; Montez, 1974; Atmar, 1976; Vincent, 1976; Williams, 1977; Dearholt, 1976). Handwritten characters were used primarily as a testbed for the recognition tasks. The experiments included adaptive mutation parameters. Atmar (1976) provided an early example of simulating evolution in an artificial life setting, evolving FSMs to recognize patterns that varied by location in a simulated environment. Atmar (1976) was also possibly the first to suggest and describe how evolutionary programming could be designed for what is now known as “evolvable hardware.” Angeline and Pollack (1993) described how evolutionary programming could be used to evolve computer programs, while Tamburino et al. (1993) applied evolutionary programming to pattern recognition problems. Yao et al. (1999) described mutation strategies that in certain circumstances increased the rate of convergence in evolutionary programming.
Contents |
Evolutionary programming was extended in the 1980s to use arbitrary data representations and be applied to generalized optimization problems. The same general process of population-based random variation and selection was applied to data structures such as real-valued vectors (Fogel and Atmar, 1990; Fogel et al., 1990; Davis, 1994), permutations (Fogel, 1998), matrixes (Fogel et al., 1993), variable-length vectors (Fogel, 1990), binary strings (Fogel, 1989), and so forth. David Fogel (1988) introduced a form of tournament selection to Evolutionary Programming that allowed lesser-scoring solutions a probabilistic opportunity to survive as parents. This provided a “soft selection” mechanism (Galar, 1985), and the ability to more rapidly escape points of local optima (see also simulated annealing). Fogel et al. (1991; 1992) also introduced the idea of self-adaptation of variation parameters, in which solutions carry both the information about how to address a problem as well as the information about how to create offspring, with both being subject to variation.
Evolutionary programming has been applied to diverse engineering problems including traffic routing and planning (McDonnell et al., 1997), pharmaceutical design (Duncan and Olson, 1996; Gehlhaar and Fogel, 1996 ), epidemiology (Fogel and Fogel, 1986), cancer detection (Fogel et al. 1997, 1998), military planning (Fogel et al., 1993), control systems (Jeon et al., 1997), system identification (Fogel, 1990), signal processing (Porto, 1990), power engineering (Lai and Ma, 1996), learning in games (Fogel and Burgin, 1969), among others. Evolutionary Programming is applicable to any of the areas for which evolutionary algorithms are applicable.
Evolutionary Programming was one of the main avenues of research in evolutionary computation in the early 1990s, including genetic algorithms along with genetic programming, and evolution strategies. At this time, the term “evolutionary computation” was invented to describe the entire field of study. Whereas some members of the genetic algorithm and evolution strategies communities have opted to retain these terms, virtually all of the researchers active in Evolutionary Programming recognize the value of a single encompassing term for the entire field and have adopted this term to describe their work. This is particularly true because in the modern version of Evolutionary Programming, it can employ any data representation, any variation operators, and any selection procedure.
Evolution strategies, Genetic algorithms, Genetic programming, Differential evolution, Particle swarm optimization, Ant colony optimization, Cultural algorithms