Simulated annealing algorithm with adaptive neighborhood