This is a Java application that demonstrates the Simulated Annealing algorithm with an attack on the "traveling salesman" problem. What is simulated annealing? Simulated annealing is a technique, which was developed to help solve large combinatorial optimization problems. It is based on probabilistic methods that avoid being stuck at local (non-global) minima. It has proven to be a simple but powerful method for large-scale combinatorial optimization. For practical purposes, simulated annealing has solved the famous traveling salesman problem: find the shortest of N! paths connecting N cities. Simulated annealing finds a very good approximation to the shortest path out of the huge number of all possible paths. Annealing is nature's trick to find extrema in very complicated situations. Simulated annealing mimics on a computer the natural process by which crystal lattices of glass or metal relax when heated. The molecules of hot glass or metal are free to move about. Temperature is an average of the thermal energy in each molecule of an object. If the temperature drops quickly, these molecules solidify into a complex structure. However, if the temperature drops slowly, they form a highly ordered crystal. The molecules of a crystal solidify into a minimal energy state. Some real applications simulated annealing: Determining the sequence of observations for an automated astronomical telescope [2] Computer Aided Geometric Design Optimization of Econometric Statistical Functions Games with random moves determined by the simulated annealing algorithm Arranging connections on chips and switching devices in telephone networks The algorithm: In the simulated annealing algorithm, an objective function to be minimized is defined. Here it will be the total path length through a set of points.