An Evolutionary algorithm is an algorithm which mimics biological evolution to develop a solution to a problem. Starting with a set of initial possible solutions and test criteria, the algorithm tests each solution, selects the most promising, duplicates and mutates them and repeats until a desired solution is found. There are many types of evolutionary algorithms, varying on criteria such as selection mechanism, mutation algorithm, speed, and efficiency. Evolutionary algorithms have been applied in engineering, the financial market, chemistry, mathematics, and increasingly data mining.