An Introduction to Heuristic Algorithms