add simulated annealing