In the field of computer science and engineering, metaheuristic is a high level procedure, which finds, selects or generates a low level procedure that will give an optimized solution to a complex problem. It is a high-level problem independent framework that gives a set of strategies for developing heuristic algorithms. Metaheuristics are used for combinatorial optimization like genetic algorithm, evolutionary algorithms, particle swarm optimization, simulated annealing etc. It explores the search space to find the near optimal solutions. Optimization is the selection of best element from the set of alternative solutions.