A genetic algorithm is a type computer program that mimics evolution. It does this by defining a set of possible solutions to a given problem, it then performs them to see how well they function and finally combines them based on how well they performed - their fitness function - to produce individuals that are more effective at solving the problem. In this way computer scientists create programs or formulas that compete against one another to solve a problem, the winners being rewarded with “offspring” in the next generation that then compete again. Over a series of generations, one can use this process to evolve optimal solutions to difficult problems. The resulting method, under the name genetic algorithms, has become a widely used optimization method and a tool for complex systems researchers. Genetic algorithms are good at taking a very large search space and looking for optimal solutions through iteration.