Geometry optimization by simulated annealing