An optimization algorithm is a procedure which is executed iteratively by comparing various solutions till an optimum or a satisfactory solution is found. With the advent of computers, optimization has become a part of computer-aided design activities. To solve problems, researchers may use algorithms that terminate in a finite number of steps, or iterative methods that converge to a solution, or heuristics that may provide approximate solutions to some problems (although their iterates need not converge). Optimization problems of sorts arise in all quantitative disciplines from computer science and engineering to operations research and economics.