Input: Distance matrix D, Initial temperature T 0 , Cooling rate γ , Maximum iteration Maxit

Output: Best Solution

1: Assign the value of Maxit and the initial value of T 0 and γ

2: For each city c i ; i = 1 , 2 , , n , generate a set of n sub-routes consist of one city c i

3: Add a closest city in the right end of each sub-route that is not yet in the route

4: Repeat the process of step 3 until all the cities are added in each sub-route

5: Add starting city in the right side of the last position of each sub-route to generate n feasible routes, X = { x 1 , x 2 , , x n }

6: Compute the Euclidean distance/fitness value of each route, f ( X ) = { f ( x 1 ) , f ( x 2 ) , , f ( x n ) }

7: For each iteration, it = 1 to maximum iteration

8: For each route x i , i = 1 to n

9: Generate a new route x i ' by adopting neighborhood structure (described in Section 3.2.1)

10: Compute Euclidean distance/fitness value of the new route f ( x i )

11: Calculate Δ f on the basis of Equation (11)

12: If Δ f 0 , then update the current route x i by assigning x i x i

13: If Δ f 0 , then compute the acceptance probability p by using Equation (10). If p u , then update the current route x i by assigning x i x i , where u is the random number between 0 and 1

14: End for

15: Decrease the temperature based on Equation (12)

16: Update the best solution ever found

17: End for