Genetic algorithms (GA's) are stochastic numerical search procedures inspired by biological evolution, cross-breeding trial solutions and allowing only the fittest solutions to survive and propagate to successive generations. They deal with a population of individual (candidate) solutions, which undergo constant changes by means of genetic operations of reproduction, crossover, and mutation. These solutions are ranked based on their fitness with respect to the objective function where the fit individuals are more likely to reproduce and propagate to the next generation. Based on their fitness values, individuals (parents) are selected for reproduction of the next generation by exchanging genetic information to form children (crossover). The parents are then removed and replaced in the population by the children to keep a stable population size. The result is a new generation with (normally) better fitness. Occasionally, mutation is introduced into the population to prevent the convergence to a local optimum and help generate unexpected directions in the solution space. The more GA's iterate, the better their chance to generate an optimal solution. After a number of generations, the population is expected to evolve artificially, and the (near) optimal solution will be reached. The measure of success is the convergence to a population with identical members. The global optimum solution however cannot be guaranteed since the convexity of the objective function cannot be proven.