- Published on
Evolutionary Computing
- Authors
- Name
- Mike McClintock
- @galtmidas
A conversation with James and Mike about the right approach to AGI While Listening to Complexity: The Emerging Science At The Edge of Order and Chaos While reading about Evolutionary Computation, a subfield of AI that uses biological and naturally inspired processes to solve complex problems. All while implementing a flow based programming AIops system to allow concurrent execution of said Complex Adaptive System.
Based on Darwin, a cornerstone of Evolutionary Computation (EC) is the concept of simulating an individual or population of individuals in a system to find the best. The purpose is to derive or evolve an individual who can survive and thrive in such an artificial environment by allowing them to change. This concept of an individual or population of individuals in a system are often treferred to, but not always, as Agents.
The term we use to quantify how well an Agent may survive or thrive is called fitness.
The concepts of natural selection and fitness have been used with some of the current notable Evolutionary Computational algorithms:
- Artificial life
- Going back as far as Conway's Game of Life and the Von Neumann cellular automaton, these processes simulate the artificial process of life itself, using agents. In this algorithm, agents often move, flow, live, or die based on their proximity to other agents or environments. While agent simulation is often done to mimic the real world, it can also be used to optimize processes.
- Differential evolution
- A process in which search is optimized by combining differential calculus with evolutionary algorithms. This technique will often be layered in with another EC method, like artificial life. In this algorithm, agents evolve or change by taking the vector differences and reapplying them to the population.
- Evolutionary algorithms
- A broader category of EC methods that apply evolution, in the form of natural selection, to a problem. These methods often focus on simulating a population of individuals.
- Evolutionary programming
- A specialized form of evolutionary algorithms that create algorithms using code. In this algorithm, an individual is represented by a block of code, and its respective fitness is measured to some optimal value generated by running the code. There are several ways of implementing code generation for EP, and in many cases, we will defer to more specific methods, like gene expression.
- Genetic algorithm
- This algorithm uses the low-level cellular mitosis we see in organisms that allows for the passing of genetic traits to offspring. A genetic algorithm (GA) is the simulation of this process by encoding an individual’s characteristics into a gene sequence, where this arbitrary gene sequence, which could be as simple as a sequence of 0s or 1s, evaluates to some fitness metric. That fitness is used to simulate the biological selection process and mating of parent individuals to produce new combined offspring.
- Genetic programming
- This algorithm builds programming code using GA. In GA, an individual's traits are more generic, but in genetic programming (GP), a trait or gene could represent any number of functions or other code logic. GP is a specialized technique that allows new algorithmic code to be developed. Examples of this have been used to write agent simulation code that could solve a maze or create pictures.
- Gene expression programming
- This algorithm is a further extension of genetic programming that develops code or mathematical functions. With GP, code is abstracted to high-level functions, whereas in gene expression programming (GEP), the purpose is to develop specific mathematical equations. A key difference between GEP and GP is the use of expression trees to represent functions. While in GP, expression trees represent code, in GEP expressions, they represent a mathematical expression tree. The benefit is that the code will follow a well-defined order of operations based on placement.
- Particle swarm optimization
- This falls under a subset of artificial life and is the simulation of artificial and somewhat-smart particles. In this algorithm, each particle's fitness is evaluated, and the best particle becomes the focus for the remaining particles to swarm around.
- Swarm intelligence
- This algorithm is a search method that simulates the behavior of swarm insects or birds to find peak values for optimization problems. It is very similar to particle swarm optimization (PSO) but varies in implementation, depending on the evaluation of fitness.