A novel discrete bat algorithm for solving the travelling salesman problem