Question

So I'm reading on evolutionary algorithms and am confused.

What are the 'traditional' differences between evolutionary programming, evolutionary strategies and genetic algorithms as I believe in modern day they have basically converged to the same thing?

My understanding is that genetic algorithms vary 'genes' to produce results, evolutionary strategies vary parameters which somehow changes the individuals. What does it mean exactly numerical parameters as per (http://en.wikipedia.org/wiki/Evolutionary_algorithm)? Evolutionary programming then varies primarily by mutation on real numbers?

Are evolutionary programming and genetic programming ways of finding a program to solve a problem while genetic algorithms and evolutionary strategies ways of finding a solution to a problem using candidates? The distinction is not visible to me and the only distinction I see in evolutionary strategies vs genetic algorithms is a list of parameters vs a chromosome and real numbers vs integers?

Thanks.

Was it helpful?

Solution

hoping this will clarify a bit things for you :

evolutionary algorithms: algorithms that try, inside a given population of candidates solutions, to find a "best fit" solution. The algorithm start with random candidates and try to evolve from there by reproduction, mutation, recombination and selection

From there, you have several "standard way" of calling several families of evolutionary algorithms. Theses names have been given by academic research ; I believe the subtle differences in the naming convention come both from subtle reasons and from lack of available vocabulary as time goes on :

  • genetic algorithm: The given population is defined as "a string of numbers" (traditionnaly a vector of 0 an 1s).

  • genetic programming: The given population is a set of structurally different computer programs. The question is which program is the "best fit" to solve a given problem. If you are familiar with Lisp processing, you will know that a whole program can be represented as a tree ; Imagine that your algorithm mutates or recombines these trees. You will end up with a lot of programs evolving out of your original candidates and some will be better than others at solving your problem.

  • evolutionary programming: Given a specific computer program that has a fixed structure but parameters, the studied population is the set of programs obtained by a variation of those parameters. For example, if you think your problem could be represented by a finite state machine, this technique can help you find the number of states, the authorized transitions between states, the probability of these transitions.

  • evolution strategy: the given population is a vector of real numbers + parameters like the mutation rate among studied candidates tries to reach an optimum. Imagine you start with a population of (c1,c2,c3) 3-dimensional vectors. At each generation you mutate them by adding a random value to c1, c2 and c3. The random value may be based on a Gaussian with a standard deviation S. It may be interesting to start with a big value of S, so that mutations will produce vectors all over the place and once you start finding interesting vectors, you start decreasing S in order to "focus" around these interesting vectors.

Remember that these names are just naming conventions. Some are good at describing what they mean, some are less optimized. Evolutionary naming in the field of AI is still a work in progress ;-)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top