Routing multiple addresses is quite a puzzle. With 20 destinations the from-to travel distance matrix has roughly 20 x 20 = 400 elements. The number of possible routes is even bigger, approximately 20 x 19 x 18 x ... x 3 x 2 x 1 = 2432902008176640000. Mathematicians call it a "hard" problem and there is no final theoretical solution available.
RouteXL optimizes routes with an search algorithm. That means that our routes may not always be optimal, but close enough. We use a hybrid method, consisting of several insertion methods to build a good route from the ground up, continued with a number of improvement methods and finally a quality check. If the quality check fails, the improvement phase is repeated.
For more information on algorithms: https://en.wikipedia.org/wiki/Travelling_salesman_problem