subroutine tsp_att48_order ( att48_order ) c*********************************************************************72 c cc tsp_att48_order() returns the location data for the AT&T 48 city TSP challenge. c c Licensing: c c This code is distributed under the MIT license. c c Modified: c c 18 June 2026 c c Author: c c John Burkardt c c Output: c c integer att48_order[48]: the 1-based optimal tour order. c implicit none integer att48_order(48) att48_order = (/ & 1, 8, 38, 31, 44, 18, 7, 28, 6, 37, & 19, 27, 17, 43, 30, 36, 46, 33, 20, 47, & 21, 32, 39, 48, 5, 42, 24, 10, 45, 35, & 4, 26, 2, 29, 34, 41, 16, 22, 3, 23, & 14, 25, 13, 11, 12, 15, 40, 9 /) return end subroutine tsp_att48_xy ( att48_xy ) c*********************************************************************72 c cc tsp_att48_xy() returns the location data for the AT&T 48 city TSP challenge. c c Licensing: c c This code is distributed under the MIT license. c c Modified: c c 17 June 2026 c c Author: c c John Burkardt c c Output: c c double precision tsp_att48_xy(48,2): the x and y coordinates of the cities. c implicit none double precision att48_xy(48,2) c c Excuse this monstrous "tranpose(reshape())", caused by the fact that c the data is by rows, but Fortran prefers columns. c att48_xy = transpose ( reshape ( (/ & 6734, 1453, & 2233, 10, & 5530, 1424, & 401, 841, & 3082, 1644, & 7608, 4458, & 7573, 3716, & 7265, 1268, & 6898, 1885, & 1112, 2049, & 5468, 2606, & 5989, 2873, & 4706, 2674, & 4612, 2035, & 6347, 2683, & 6107, 669, & 7611, 5184, & 7462, 3590, & 7732, 4723, & 5900, 3561, & 4483, 3369, & 6101, 1110, & 5199, 2182, & 1633, 2809, & 4307, 2322, & 675, 1006, & 7555, 4819, & 7541, 3981, & 3177, 756, & 7352, 4506, & 7545, 2801, & 3245, 3305, & 6426, 3173, & 4608, 1198, & 23, 2216, & 7248, 3779, & 7762, 4595, & 7392, 2244, & 3484, 2829, & 6271, 2135, & 4985, 140, & 1916, 1569, & 7280, 4899, & 7509, 3239, & 10, 2676, & 6807, 2993, & 5185, 3258, & 3023, 1942 /), (/ 2,48 /) ) ) return end