In Computer Science, especially in artificial intelligence, evolutionary algorithms are a kind of algorithm that simulate evolution to optimise something. Each generation of solution is subjected to some kind of fitness function; those that "survive" are then recombined in some way to make the next generation of solution. This is done until a certain level of fitness is reached, or a determined number of generations have been used.