Cooperative coevolution


Cooperative Coevolution is an evolutionary computation method that divides a large problem into subcomponents and solves them independently in order to solve the large problem.
The subcomponents are also called species. The subcomponents are implemented as subpopulations and the only interaction between subpopulations is in the cooperative evaluation of each individual of the subpopulations. The general CC framework is nature inspired where the individuals of a particular group of species mate amongst themselves, however, mating in between different species is not feasible. The cooperative evaluation of each individual in a subpopulation is done by concatenating the current individual with the best individuals from the rest of the subpopulations as described by M. Potter.
The cooperative coevolution framework has been applied to real world problems such as pedestrian detection systems, large-scale function optimization and neural network training.
It has also be further extended into another method, called Constructive cooperative coevolution.

Pseudocode

i := 0
for each subproblem S do
Initialise a subpopulation Pop0
calculate fitness of each member in Pop0
while termination criteria not satisfied do
i := i + 1
for each subproblem S do
select Popi from Popi-1
apply genetic operators to Popi
calculate fitness of each member in Popi