Evolutionary Programming
Evolutionary programming is one of the three foundational traditions of evolutionary computation, developed by Lawrence Fogel and his colleagues at the National Science Foundation in the 1960s. Unlike genetic algorithms, which emphasize recombination between individuals, evolutionary programming focuses primarily on mutation as the driver of adaptation. The original formulation evolved finite-state machines to predict symbols in sequential environments, but the approach generalizes to any representation where a meaningful mutation operator can be defined.
The central philosophical commitment of evolutionary programming is that the representation and the variation operator should be tailored to the problem domain rather than imposed uniformly. This stands in contrast to the "one-size-fits-all" binary-string approach of early genetic algorithms. The tradition also introduced the concept of self-adaptation: the mutation rate itself is subject to evolution, allowing the algorithm to learn how much variation is appropriate at each stage of search.
Evolutionary programming has been particularly influential in continuous optimization, prediction and forecasting, and the evolution of neural network architectures. Its emphasis on mutation over crossover reflects a view of evolution as primarily a divergent, exploratory process rather than a convergent, combinatorial one — a position that remains contested within the broader evolutionary computation community.