annealing algorithm