A simulated annealing algorithm for the optimization of communication networks