# Is Differential Evolution a genetic algorithm?

I am trying to classify the Differential Evolution algorithm according to the framework in the book:

Introduction to Evolutionary Computing

The authors classify the field of evolutionary computation into 4 paradigms:

1. Evolutionary programming
2. Genetic programming
3. Evolutionary strategies
4. Genetic algorithms

I have ruled out 1. and 2., since they deal with programs as opposed to abstract optimization problems. I also ruled out 3. since evolutionary strategies maintain an explicit random distribution during the optimization process. That leaves only genetic algorithms. But when you say "genetic algorithm", the firs thing that comes to most peoples' minds is the traditional flipping of 0s and 1s. I have personally never heard anybody refer to differential evolution as a genetic algorithm.

If you're asking for a homework assignment, then I can't really help you, because the answer really depends on how your professor interprets the taxonomy. But if you're asking for your own edification, I can give you my view.

First, the distinctions between the four classes you list (particularly between 1, 3, and 4) are largely historic. There are still some very real differences of course, but we don't view the lines between them as sharply as we once did. This means, for example, that GAs can be real-valued instead of binary and might rely on mutation more than crossover. You can have an evolution strategy for the traveling salesman problem. Really the description in the book isn't terribly well suited for use as a taxonomy for this reason. I teach from this book, and I like it a lot, so that's not really a criticism. I don't think the authors intended for you to try and use it as a well-defined taxonomy either.

If we go with this idea as a rough taxonomy though, then in principle, we have an umbrella term: "Evolutionary Computation" or "Evolutionary Algorithms" that covers all four of the cases you list. In practice though, while if someone says "evolution strategy" or "genetic programming", it's because they intentionally want to highlight that that's what they're doing, people sometimes say "genetic algorithms" when they really mean "evolutionary algorithms". So that term is especially hard to interpret.

So we might be able to call DE a GA with that understanding and be OK, but it really depends on who's asking the question as to whether that's what they had in mind or not.

Looking at the problem another way though, it gets even fuzzier. Right now, you're reading someone else's taxonomy and trying to fit the pieces together. What if you take a step back and try to formally define what a genetic algorithm or evolutionary algorithm is yourself? You might come up with something like "an algorithm that maintains a population of one or more candidate solutions, usually generated randomly, and continually selects the better individuals from the population, produces new individuals from the old ones via some type of variation operators, and favors the better of these new individuals for insertion into the population".

It's hard to get much narrower than that without excluding some things we think are "obviously" evolutionary algorithms, but this definition is really very broad. Certainly things like differential evolution and particle swarm optimization meet this definition, but so does, for example, simulated annealing. You can even take a simple next-descent hill-climber and call it a (1+1)-ES.

Personally then, my answer to your question is "sort of". If I write a paper that proposes a novel DE variant that looks super-awesome, I'd absolutely submit it to a journal like Evolutionary Computation. I know that my algorithm would be viewed as being appropriate for a venue that focused on genetic and evolutionary algorithms. But I probably wouldn't tell people that I used a "genetic algorithm" either, because that term doesn't feel precise enough to capture what it is that I want to express.

I'm not sure this is a particularly helpful answer, but I think it's probably a pretty common view among people in the field.

The wording of the original paper that introduced Differential Evolution is such that the authors consider DE a different thing from Genetic Algorithms or Evolution Strategies. Example:

Choosing a subgroup of parameters for mutation is similiar to a process known as crossover in GAs or ESs.

Another one:

A further disadvantage of GAs is the amount of expertise that is required to operate them, the same holds true for ESs.

Yet the differences remain unclear to me (I am not an expert in the field). Taking Eiben & Smith taxonomy strictly I would say DE is just another class of Evolutionary Algorithms.