simulated annealing algorithm in python