I am reading some papers about Genetic Algorithms and often they mention Evolutionary Algorithms in a very similar way. According to Wikipedia, GAs are subset of EAs. However, if we look closer, we can notice that both are metaheuristic optimization algorithms based on natural selection (crossover, selection, mutation) and both don't have a fixed representation (it depends on the problem to solve, even we traditionaly use binary representations for GAs). They are very similar. So, my question is can we consider every evolutionary algorithm a genetic algorithm ? and what are the real differences between them ? Thank you
In a "genetic algorithm," the problem is encoded in a series of bit strings that are manipulated by the algorithm; in an "evolutionary algorithm," the decision variables and problem functions are used directly. Most commercial Solver products are based on evolutionary algorithms.
The main difference between GA and ES is that in classic GA there is no distinction between types of algorithm parameters. In fact all the parameters are set from "outside", so in ES terms are exogenous.
In the meta-heuristic taxonomy, SA is a single-state method and GA is a population method (in a sub-class along with PSO, ACO, et al, usually referred to as biologically-inspired meta-heuristics).
The main classes of EA in contemporary usage are (in order of popularity) genetic algorithms (GAs), evolution strategies (ESs), differential evolution (DE) and estimation of distribution algorithms (EDAs).
It sort of depends on who you ask. For the first few decades that such things existed, everyone considered there to be distinct categories (usually listed as "genetic algorithms", "genetic programming", "evolution strategies", and "evolutionary programming". There were, to be sure, significant differences between the subfields, so the distinction did make some degree of sense.
At some point (around the late 90s or thereabouts), there was a bigger push for unification, as people began to see them as instances of a more general class of algorithms. The major GA conference (ICGA) morphed into GECCO, and the unifying term became "evolutionary computation", encompassing all of the above, and occasionally a few others (you can view things like particle swarm optimization as evolutionary algorithms as well if you're a bit liberal with the definitions).
So currently, we would generally say "evolutionary computation" (or "evolutionary algorithms") as the catch-all umbrella term. Genetic programming maintains its own identity as evolving code strings directly, and evolution strategies also keep a separate identity as dealing with real-values and often including some sort of self-modification (e.g., covariance matrix adaptation learning search directions at runtime). Evolutionary programming still exists, but only as a much smaller niche. The term "genetic algorithms" has broaded quite a bit. Originally, people thought of them as operating on binary strings operating with generational selection, etc. Over time, one by one, the strictness has fallen away. At this point, you can almost use "genetic algorithm" as a synonym for "evolutionary computation". You shouldn't, because there is an understood subtlety in the terminology that you'd be losing, but in general, if you aren't doing code generation directly, and you aren't evolving real numbers in a very particularly defined way that corresponds with what people think of as evolution strategies, then you're reasonably safe in calling it a "genetic algorithm".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With