graph.cpp is updated and instances for benchmark too

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@816 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
jboisson 2007-11-26 12:57:40 +00:00
commit ec1d363b78
8 changed files with 22159 additions and 22591 deletions

View file

@ -1,536 +0,0 @@
535
36.49 7.49
57.06 9.51
30.22 48.14
5.15 -3.56
34.59 -106.37
57.12 -2.12
16.45 -99.45
5.36 -0.1
28.56 -13.36
8.59 38.48
12.5 45.02
-34.48 138.38
30.23 -9.33
56.18 12.51
36.4 -4.3
40.38 8.17
35.11 -3.5
41.55 8.48
-37.01 174.47
38.17 -0.34
36.42 3.13
36.11 37.14
35.14 -101.42
31.58 35.59
52.18 4.46
61.1 -149.59
39.57 32.41
51.11 4.28
17.08 -61.47
43.37 13.22
29.38 35.01
59.39 17.55
15.18 38.55
-25.14 -57.31
23.58 32.47
37.54 23.44
33.46 -84.31
12.3 -70.01
24.26 54.28
36.55 30.48
26.16 50.38
40.29 50.01
39.11 -76.4
10.48 -74.52
-16.11 -52.3
10.25 45.01
41.18 2.05
32.22 -64.42
41.56 -72.41
40.39 17.57
44.49 20.19
9.21 34.31
32.06 20.16
52.29 13.24
48.27 -4.25
-19.48 3.45
33.49 35.29
54.39 -6.14
35.48 -101.22
4.24 18.31
13.04 -59.3
60.17 5.13
44.48 -68.5
33.14 44.14
45.4 9.24
33.34 -86.45
52.27 -1.45
42.33 9.29
45.48 -108.37
43.28 -1.32
13.21 -16.4
-3.19 29.19
13.55 100.36
12.38 -8.02
55.44 9.09
44.32 11.18
12.57 77.4
-15.41 34.58
27.13 56.22
-27.25 153.05
44.5 -0.43
4.42 -74.09
50.47 -1.51
19.05 72.52
67.16 14.22
42.22 -71
53.03 8.48
41.08 16.47
46.55 7.3
51.31 -2.35
50.54 4.29
-15.52 -47.55
47.35 7.32
48.1 16.13
47.27 19.15
-34.49 -58.32
42.55 -78.38
44.3 26.06
49.27 2.07
-4.15 15.15
39.15 9.04
30.08 31.24
23.11 113.16
33.33 -7.4
-11.54 22.45
4.49 -52.22
52.13 0.11
-35.19 149.12
10.36 -66.59
22.39 88.27
52.5 -1.19
49.01 2.33
43.33 6.57
45.4 -0.19
39.37 19.55
50.52 7.09
41.59 -87.54
41.48 12.36
9.34 -13.37
41.25 -81.51
3.26 -76.25
42.31 8.48
-28.02 145.37
7.11 79.53
40.04 -83.04
33.22 -7.35
48.07 7.22
44.22 28.29
45.4 -0.19
6.21 2.23
55.37 12.39
-33.58 18.36
37.28 15.04
10.27 -75.31
-26.25 146.14
39 17.05
12.12 -68.57
39.09 -84.2
39.03 -84.2
51.24 -3.12
29.11 -81.03
23.46 90.23
14.45 42.59
32.5 -96.51
33.25 36.31
-6.53 39.12
42.34 18.16
-29.58 30.57
38.51 -77.02
28.34 77.07
39.46 -104.53
32.46 -96.24
26.16 50.1
47.16 5.05
33.52 10.47
14.45 -17.3
4.01 9.43
19.08 30.26
25.16 51.34
49.22 0.1
-8.45 115.1
51.08 13.46
-12.25 130.52
42.14 -83.32
42.13 -83.21
53.26 -6.15
51.17 6.45
25.15 55.2
0.03 32.26
45.32 4.18
55.57 -3.22
51.27 5.23
31.48 -106.16
52.5 -1.19
48.19 6.04
40.07 33
40.09 82.4
40.42 -74.1
50.44 -3.25
-34.49 -58.32
64.49 -147.51
37.01 -7.58
-11.35 27.31
59.54 10.37
41.49 12.15
14.35 -61
33.56 45.8
-4.23 15.26
43.49 11.12
8.37 -13.12
41.26 15.32
50.02 8.34
44.12 12.04
-21.13 27.29
28.27 -13.52
53.29 -1
-19.27 29.52
54.23 18.28
60.12 11.05
24.57 10.1
-22.5 -43.15
55.52 -4.26
45.22 5.2
7.09 41.43
44.25 8.5
57.4 18.18
41.54 2.46
37.11 -3.47
47 15.26
51.09 -0.11
14.34 -90.32
46.14 6.07
-2.09 -79.53
52.28 9.42
53.38 10
60.19 24.58
35.2 25.11
30.2 120.51
22.19 114.12
31.4 6.09
35.33 139.46
21.2 -157.55
29.59 -95.28
38.57 -77.27
43.06 -78.57
38.52 1.22
47.34 -97.27
50.21 30.55
-25.44 -54.28
39.44 -86.17
40.59 28.49
38.17 27.1
21.3 39.12
49.13 -2.12
40.38 -73.46
11.33 43.1
-6.09 106.51
-26.08 28.15
-3.22 36.38
45.28 -73.44
12.03 8.31
34.34 69.12
63.59 -22.37
-1.58 30.08
22.34 120.17
24.54 67.09
-6.18 155.43
17.56 -76.48
50.05 19.47
15.36 32.33
27.42 85.22
3.08 101.33
29.13 47.58
-8.51 13.14
10.36 -66.59
36.04 -115.09
33.56 -118.24
53.52 -1.39
48.58 2.27
0.27 9.25
34.52 33.38
43.11 0
59.49 30.17
36.51 -2.22
51.24 12.25
51.25 12.14
6.1 1.15
40.46 -73.52
33.57 -118.24
50.38 5.27
51.09 -0.11
51.28 -0.27
50.34 3.05
-12.01 -77.07
45.27 9.16
38.46 -9.08
46.13 14.28
35.3 12.37
48.14 14.11
51.28 -0.27
6.35 3.2
27.56 -15.23
-16.3 -68.11
53.21 -2.53
6.1 1.15
51.53 -0.22
-25.55 32.34
-15.2 28.27
4.27 114
49.37 6.12
-17.49 25.49
25.41 32.43
45.44 4.56
13 80.11
40.29 -3.34
31.52 -4.13
53.21 -2.16
-3.04 -60
10.34 -71.44
-4.02 39.36
46.22 15.47
39.18 -94.44
28.32 -81.2
23.36 58.17
44.25 8.5
-37.44 144.54
24.31 39.42
-37.41 144.51
19.26 -99.04
12.07 -86.11
2.01 45.19
25.48 -80.17
20.56 -89.41
45.27 9.16
35.45 10.45
39.07 -94.36
35.52 14.29
4.11 73.32
47.45 7.26
55.33 13.22
54.31 -1.25
14.31 121.01
55.58 37.25
43.35 3.58
-25.55 32.34
-8.58 125.13
43.26 5.13
-20.26 57.41
51.21 1.21
44.53 -93.13
53.52 27.33
50.55 5.47
29.59 -90.16
-26.31 31.19
48.08 11.42
-34.5 -56.02
45.38 8.43
49.05 6.08
-17.45 177.27
40.53 14.18
25.02 -77.28
-1.19 36.56
43.4 7.13
55.02 -1.41
45.56 6.06
12.08 15.02
32.56 129.56
35.09 36.17
13.29 2.1
18.06 -15.57
-13 28.39
58.35 16.15
35.45 140.23
47.09 -1.36
49.3 11.05
52.41 1.17
40.38 -73.46
55.28 10.2
46.26 30.41
26.21 127.46
35.26 -97.46
40.54 9.31
41.07 -95.55
41.14 -8.41
41.59 -87.54
51.5 -8.29
28.26 -81.19
35.38 -0.37
48.43 2.23
34.47 135.27
60.12 11.05
51.12 2.52
44.34 26.06
12.21 -1.31
43.26 -5.5
18.34 -72.17
48.43 2.23
40.05 116.36
-31.56 115.58
4.52 7.02
37.08 -76.3
39.52 -75.15
33.26 -112.01
55.52 -4.26
46.35 0.18
40.3 -80.14
-5.15 39.49
39.33 2.44
38.1 13.06
11.33 104.51
36.49 11.58
-9.27 147.13
10.36 -61.21
9.05 -79.23
50.06 14.16
43.41 10.24
42.26 14.11
16.16 -61.32
9.03 -79.24
43.23 -0.25
45.39 12.12
31.37 -8.03
34.03 -6.45
-8.08 -34.55
38.04 15.39
64.08 -21.57
16.54 96.09
49.19 4.03
36.23 28.07
-29.43 -53.42
-22.5 -43.15
45.13 14.35
44.01 12.37
48.04 -1.44
6.14 -10.22
41.49 12.15
14.1 145.15
-32.55 -60.47
51.57 4.26
24.42 46.44
33.37 73.06
6.3 -58.15
15.29 44.13
13.42 -89.07
32.44 -117.11
-23 -47.08
29.32 -98.28
-17.56 31.06
48.31 -24.8
-33.23 -70.47
42.54 -8.25
33.14 44.14
18.26 -69.4
47.27 -122.18
27 14.27
37.33 126.48
51.34 0.42
-4.4 55.31
37.37 -122.23
31.12 121.2
25.21 55.24
16.45 -22.57
1.21 103.54
37.22 -121.56
43.49 18.2
9.58 -84.16
9.59 -84.12
18.26 -66.01
40.31 22.58
41.58 21.38
40.53 -111.57
36.58 -25.1
52.42 -8.55
42.42 23.24
43.32 16.18
-12.54 -38.2
38.45 -90.22
51.33 0.14
59.39 17.55
48.41 9.13
38.54 16.15
58.53 5.38
55.58 37.25
37.26 -5.54
48.32 7.38
52.22 13.3
-33.56 151.1
29.33 52.36
47.48 13
40.31 17.24
41.19 69.24
28.29 -16.2
38.31 -28.43
43.11 0
28.29 -16.2
14.02 -87.14
52.29 13.24
35.41 51.19
41.2 19.47
32.4 13.09
43.37 1.23
32.01 34.53
22.49 5.27
0.23 6.43
35.43 -5.55
-18.48 47.29
33.56 8.06
-24.42 -53.42
25.04 121.33
37.55 12.29
51.23 -2.43
45.12 7.39
45.5 13.28
45.39 12.12
47.26 0.43
36.18 -95.52
36.51 10.14
52.34 13.18
35.33 139.46
35.54 -83.53
40.62 13.11
-0.08 -78.29
12.41 101.01
13.45 -60.57
44.55 4.58
43.14 27.49
45.3 12.21
-23 -47.08
48.07 16.33
39.29 -0.29
41.42 -4.51
45.24 10.53
38.57 -77.27
52.1 20.58
36.45 -6.04
53.19 -113.35
44.53 -63.31
45.41 -74.02
45.19 -75.4
46.48 -71.24
42.16 -82.58
48.57 -54.34
45.28 -73.44
49.11 -123.1
49.55 -97.14
51.07 -114.01
47.37 -52.45
43.41 -79.38
44.06 15.21
45.45 16.04
41.4 -1.03
-6.13 39.13
47.28 8.33
51.33 0.14
24.58 91.53

View file

@ -1,53 +1,60 @@
52 NAME: berlin52
565 575 TYPE: TSP
25 185 COMMENT: 52 locations in Berlin (Groetschel)
345 750 DIMENSION: 52
945 685 EDGE_WEIGHT_TYPE: EUC_2D
845 655 NODE_COORD_SECTION
880 660 1 565.0 575.0
25 230 2 25.0 185.0
525 1000 3 345.0 750.0
580 1175 4 945.0 685.0
650 1130 5 845.0 655.0
1605 620 6 880.0 660.0
1220 580 7 25.0 230.0
1465 200 8 525.0 1000.0
1530 5 9 580.0 1175.0
845 680 10 650.0 1130.0
725 370 11 1605.0 620.0
145 665 12 1220.0 580.0
415 635 13 1465.0 200.0
510 875 14 1530.0 5.0
560 365 15 845.0 680.0
300 465 16 725.0 370.0
520 585 17 145.0 665.0
480 415 18 415.0 635.0
835 625 19 510.0 875.0
975 580 20 560.0 365.0
1215 245 21 300.0 465.0
1320 315 22 520.0 585.0
1250 400 23 480.0 415.0
660 180 24 835.0 625.0
410 250 25 975.0 580.0
420 555 26 1215.0 245.0
575 665 27 1320.0 315.0
1150 1160 28 1250.0 400.0
700 580 29 660.0 180.0
685 595 30 410.0 250.0
685 610 31 420.0 555.0
770 610 32 575.0 665.0
795 645 33 1150.0 1160.0
720 635 34 700.0 580.0
760 650 35 685.0 595.0
475 960 36 685.0 610.0
95 260 37 770.0 610.0
875 920 38 795.0 645.0
700 500 39 720.0 635.0
555 815 40 760.0 650.0
830 485 41 475.0 960.0
1170 65 42 95.0 260.0
830 610 43 875.0 920.0
605 625 44 700.0 500.0
595 360 45 555.0 815.0
1340 725 46 830.0 485.0
1740 245 47 1170.0 65.0
48 830.0 610.0
49 605.0 625.0
50 595.0 360.0
51 1340.0 725.0
52 1740.0 245.0
EOF

View file

@ -1,102 +1,108 @@
101 NAME: eil101
41 49 TYPE: TSP
35 17 COMMENT: 101-city problem (Christofides/Eilon)
55 45 DIMENSION: 101
55 20 EDGE_WEIGHT_TYPE: EUC_2D
15 30 NODE_COORD_SECTION
25 30 1 41 49
20 50 2 35 17
10 43 3 55 45
55 60 4 55 20
30 60 5 15 30
20 65 6 25 30
50 35 7 20 50
30 25 8 10 43
15 10 9 55 60
30 5 10 30 60
10 20 11 20 65
5 30 12 50 35
20 40 13 30 25
15 60 14 15 10
45 65 15 30 5
45 20 16 10 20
45 10 17 5 30
55 5 18 20 40
65 35 19 15 60
65 20 20 45 65
45 30 21 45 20
35 40 22 45 10
41 37 23 55 5
64 42 24 65 35
40 60 25 65 20
31 52 26 45 30
35 69 27 35 40
53 52 28 41 37
65 55 29 64 42
63 65 30 40 60
2 60 31 31 52
20 20 32 35 69
5 5 33 53 52
60 12 34 65 55
40 25 35 63 65
42 7 36 2 60
24 12 37 20 20
23 3 38 5 5
11 14 39 60 12
6 38 40 40 25
2 48 41 42 7
8 56 42 24 12
13 52 43 23 3
6 68 44 11 14
47 47 45 6 38
49 58 46 2 48
27 43 47 8 56
37 31 48 13 52
57 29 49 6 68
63 23 50 47 47
53 12 51 49 58
32 12 52 27 43
36 26 53 37 31
21 24 54 57 29
17 34 55 63 23
12 24 56 53 12
24 58 57 32 12
27 69 58 36 26
15 77 59 21 24
62 77 60 17 34
49 73 61 12 24
67 5 62 24 58
56 39 63 27 69
37 47 64 15 77
37 56 65 62 77
57 68 66 49 73
47 16 67 67 5
44 17 68 56 39
46 13 69 37 47
49 11 70 37 56
49 42 71 57 68
53 43 72 47 16
61 52 73 44 17
57 48 74 46 13
56 37 75 49 11
55 54 76 49 42
15 47 77 53 43
14 37 78 61 52
11 31 79 57 48
16 22 80 56 37
4 18 81 55 54
28 18 82 15 47
26 52 83 14 37
26 35 84 11 31
31 67 85 16 22
15 19 86 4 18
22 22 87 28 18
18 24 88 26 52
26 27 89 26 35
25 24 90 31 67
22 27 91 15 19
25 21 92 22 22
19 21 93 18 24
20 26 94 26 27
18 18 95 25 24
35 35 96 22 27
97 25 21
98 19 21
99 20 26
100 18 18
101 35 35
EOF

File diff suppressed because it is too large Load diff

View file

@ -1,35 +0,0 @@
NAME : eil101
COMMENT : 101-city problem (Christofides/Eilon)
TYPE : TSP
DIMENSION : 101
EDGE_WEIGHT_TYPE : EUC_2D
NAME: ali535
TYPE: TSP
COMMENT: 535 Airports around the globe (Padberg/Rinaldi)
DIMENSION: 535
EDGE_WEIGHT_TYPE: GEO
DISPLAY_DATA_TYPE: COORD_DISPLAY
NAME : pr2392
COMMENT : 2392-city problem (Padberg/Rinaldi)
TYPE : TSP
DIMENSION : 2392
EDGE_WEIGHT_TYPE : EUC_2D
NAME : rl5915
COMMENT : 5915-city TSP (Reinelt)
TYPE : TSP
DIMENSION : 5915
EDGE_WEIGHT_TYPE : EUC_2D
NAME : usa13509
COMMENT : Cities with population at least 500 in the continental US.
COMMENT : Contributed by David Applegate and Andre Rohe, based on the
COMMENT : data set "US.lat-long" from the ftp site ftp.cs.toronto.edu.
COMMENT : The file US.lat-long.Z can be found in the directory /doc/geography.
TYPE : TSP
DIMENSION : 13509
EDGE_WEIGHT_TYPE : EUC_2D

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,9 +1,9 @@
/* /*
* <graph.cpp> * <graph.cpp>
* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
* (C) OPAC Team, LIFL, 2002-2007 * (C) OPAC Team, LIFL, 2002-2007
* *
* Sébastien Cahon, Thomas Legrand * Sébastien Cahon, Jean-Charles Boisson
* *
* This software is governed by the CeCILL license under French law and * This software is governed by the CeCILL license under French law and
* abiding by the rules of distribution of free software. You can use, * abiding by the rules of distribution of free software. You can use,
@ -40,65 +40,170 @@
#include "graph.h" #include "graph.h"
namespace Graph { namespace Graph
{
static std :: vector <std :: pair <double, double> > vectCoord ; // Coordinates static std :: vector <std :: pair <double, double> > vectCoord ; // Coordinates
static std :: vector <std :: vector <unsigned> > dist ; // Distances Mat.
unsigned size () { static std :: vector <std :: vector <unsigned int> > dist ; // Distances Mat.
unsigned size ()
{
return dist.size () ; return dist.size () ;
} }
void computeDistances () { void computeDistances ()
{
// Dim. // Dim.
unsigned numCities = vectCoord.size () ; unsigned int numCities = vectCoord.size () ;
dist.resize (numCities) ; dist.resize (numCities) ;
for (unsigned i = 0 ; i < dist.size () ; i ++) for (unsigned int i = 0 ; i < dist.size () ; i ++)
dist [i].resize (numCities) ; {
dist [i].resize (numCities) ;
}
// Computations. // Computations.
for (unsigned i = 0 ; i < dist.size () ; i ++) for (unsigned int i = 0 ; i < dist.size () ; i ++)
for (unsigned j = i + 1 ; j < dist.size () ; j ++) { {
double distX = vectCoord [i].first - vectCoord [j].first ; for (unsigned int j = i + 1 ; j < dist.size () ; j ++)
double distY = vectCoord [i].second - vectCoord [j].second ; {
dist [i] [j] = dist [j] [i] = (unsigned) (sqrt ((float) (distX * distX + distY * distY)) + 0.5) ; double distX = (double)(vectCoord [i].first - vectCoord [j].first) ;
double distY = (double)(vectCoord [i].second - vectCoord [j].second) ;
dist [i] [j] = dist [j] [i] = (unsigned) (sqrt ((float) (distX * distX + distY * distY)) + 0.5) ;
}
} }
} }
void load (const char * __fileName) { void load (const char * __fileName)
{
std :: ifstream f (__fileName) ; unsigned int i, dimension;
std :: cout << ">> Loading [" << __fileName << "]" << std :: endl ;
if (f) {
unsigned num_vert ;
f >> num_vert ;
vectCoord.resize (num_vert) ;
for (unsigned i = 0 ; i < num_vert ; i ++) std::string string_read, buffer;
f >> vectCoord [i].first >> vectCoord [i].second ;
std :: ifstream file (__fileName) ;
f.close () ;
std :: cout << ">> Loading [" << __fileName << "]" << std :: endl ;
computeDistances () ;
} if (file)
else { {
// Read NAME:
std :: cout << __fileName << " doesn't exist !!!" << std :: endl ; file >> string_read;
// Bye !!! if (string_read.compare("NAME:")!=0)
exit (1) ; {
} std::cout << "ERROR: \'NAME:\' espected, \'" << string_read << "\' found" << std::endl;
exit(1);
}
// Read instance name
file >> string_read;
std::cout << "\t Instance Name = " << string_read << std::endl;
// Read TYPE:
file >> string_read;
if (string_read.compare("TYPE:")!=0)
{
std::cout << "ERROR: \'TYPE:\' espected, \'" << string_read << "\' found" << std::endl;
exit(1);
}
// Read instance type;
file >> string_read;
std::cout << "\t Instance type = " << string_read << std::endl;
if (string_read.compare("TSP")!=0)
{
std::cout << "ERROR: only TSP type instance can be loaded" << std::endl;
exit(1);
}
// Read COMMENT:
file >> string_read;
if (string_read.compare("COMMENT:")!=0)
{
std::cout << "ERROR: \'COMMENT:\' espected, \'" << string_read << "\' found" << std::endl;
exit(1);
}
// Read comments
std::cout << "\t Instance comments = ";
file >> string_read;
buffer = string_read+"_first";
while((string_read.compare("DIMENSION:")!=0) && (string_read.compare(buffer)!=0))
{
if(string_read.compare("COMMENT:")!=0)
{
std::cout << string_read << " ";
}
else
{
std::cout << std::endl << "\t ";
}
buffer = string_read;
file >> string_read;
}
std::cout << std::endl;
// Read dimension;
file >> dimension ;
std::cout << "\t Instance dimension = " << dimension << std::endl;
vectCoord.resize (dimension) ;
// Read EDGE_WEIGHT_TYPE
file >> string_read;
if (string_read.compare("EDGE_WEIGHT_TYPE:")!=0)
{
std::cout << "ERROR: \'EDGE_WEIGHT_TYPE:\' espected, \'" << string_read << "\' found" << std::endl;
exit(1);
}
// Read edge weight type
file >> string_read;
std::cout << "\t Instance edge weight type = " << string_read << std::endl;
if (string_read.compare("EUC_2D")!=0)
{
std::cout << "ERROR: only EUC_2D edge weight type instance can be loaded" << std::endl;
exit(1);
}
// Read NODE_COORD_SECTION
file >> string_read;
if (string_read.compare("NODE_COORD_SECTION")!=0)
{
std::cout << "ERROR: \'NODE_COORD_SECTION\' espected, \'" << string_read << "\' found" << std::endl;
exit(1);
}
// Read coordonates.
for(i=0;i<dimension;i++)
{
// Read index
file >> string_read;
//Read Coordinate
file >> vectCoord [i].first >> vectCoord [i].second ;
}
// Read EOF
file >> string_read;
if(string_read.compare("EOF")!=0)
{
std::cout << "ERROR: \'EOF\' espected, \'" << string_read << "\' found" << std::endl;
exit(1);
}
std::cout << std::endl;
file.close () ;
computeDistances () ;
}
else
{
std :: cout << __fileName << " does not exist !!!" << std :: endl ;
// Bye !!!
exit (1) ;
}
} }
float distance (unsigned __from, unsigned __to) { float distance (unsigned int __from, unsigned int __to)
{
return dist [__from] [__to] ; return (float)(dist [__from] [__to]) ;
} }
} }