93 lines
6.2 KiB
Plaintext
93 lines
6.2 KiB
Plaintext
#####################################################
|
|
# Instancia: data/inst2.vrp
|
|
# Tipo: ACVRP
|
|
# Generada automaticamente
|
|
#####################################################
|
|
|
|
set N:={1..20};
|
|
set V:= N + {0,21};
|
|
set A2 := V*V; # solo se usa para poder leer matriz de costos
|
|
set A := {<i,j> in N*N with i!=j} + {0}*N + N*{21}; # para los arcos
|
|
set Ay := A + N*{0} + {21}*N; # para indexar y
|
|
|
|
# costos de desplazamiento
|
|
param c[A2] :=
|
|
| 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21|
|
|
| 0| 0, 1354, 1627, 1509, 1768, 1426, 1378, 1851, 1759, 2205, 1600, 1227, 1650, 1613, 1165, 1526, 1744, 1709, 1069, 1505, 793, 0|
|
|
| 1| 1407, 0, 337, 1489, 1880, 1434, 584, 1937, 1806, 2477, 1047, 158, 327, 268, 500, 242, 402, 356, 300, 322, 2100, 1407|
|
|
| 2| 1620, 311, 0, 1772, 2163, 1722, 838, 2216, 2086, 2764, 1283, 400, 349, 270, 543, 100, 334, 250, 605, 158, 2248, 1620|
|
|
| 3| 2206, 1868, 2165, 0, 391, 122, 1115, 449, 320, 991, 641, 1906, 1753, 1832, 2222, 2096, 1836, 1912, 1692, 2190, 2966, 2206|
|
|
| 4| 2580, 2351, 2649, 483, 0, 582, 1595, 83, 104, 601, 1063, 2387, 2230, 2313, 2697, 2579, 2310, 2390, 2169, 2674, 3308, 2580|
|
|
| 5| 2084, 1773, 2077, 83, 449, 0, 1038, 514, 389, 1043, 629, 1805, 1678, 1753, 2115, 2004, 1765, 1836, 1587, 2096, 2845, 2084|
|
|
| 6| 1723, 799, 1063, 944, 1333, 902, 0, 1382, 1251, 1934, 463, 882, 640, 717, 1242, 1004, 728, 797, 734, 1111, 2509, 1723|
|
|
| 7| 2702, 2448, 2741, 582, 122, 688, 1682, 0, 161, 559, 1125, 2488, 2313, 2399, 2803, 2674, 2390, 2473, 2273, 2770, 3430, 2702|
|
|
| 8| 2574, 2287, 2579, 423, 100, 532, 1521, 130, 0, 687, 971, 2328, 2152, 2238, 2645, 2512, 2230, 2313, 2115, 2609, 3312, 2574|
|
|
| 9| 3148, 3063, 3365, 1199, 717, 1289, 2313, 640, 797, 0, 1765, 3092, 2948, 3030, 3391, 3294, 3027, 3107, 2868, 3386, 3819, 3148|
|
|
| 10| 2196, 1445, 1692, 605, 960, 600, 647, 992, 867, 1551, 0, 1528, 1224, 1324, 1884, 1642, 1289, 1385, 1363, 1753, 2989, 2196|
|
|
| 11| 1258, 134, 419, 1477, 1866, 1417, 618, 1926, 1797, 2457, 1080, 0, 459, 402, 367, 314, 536, 488, 216, 337, 1942, 1258|
|
|
| 12| 1781, 418, 500, 1502, 1888, 1462, 559, 1934, 1804, 2490, 968, 574, 0, 122, 908, 489, 104, 161, 620, 612, 2502, 1781|
|
|
| 13| 1708, 316, 382, 1545, 1934, 1502, 601, 1982, 1852, 2536, 1028, 474, 83, 0, 793, 367, 134, 104, 556, 489, 2414, 1708|
|
|
| 14| 1126, 350, 488, 1670, 2053, 1604, 860, 2118, 1991, 2634, 1317, 250, 664, 592, 0, 402, 720, 654, 389, 356, 1708, 1126|
|
|
| 15| 1528, 216, 104, 1694, 2086, 1642, 770, 2140, 2010, 2685, 1223, 300, 334, 250, 474, 0, 350, 272, 506, 122, 2169, 1528|
|
|
| 16| 1861, 474, 489, 1589, 1974, 1551, 650, 2018, 1888, 2575, 1043, 632, 100, 158, 946, 500, 0, 122, 703, 620, 2571, 1861|
|
|
| 17| 1791, 387, 367, 1630, 2018, 1589, 687, 2064, 1934, 2619, 1098, 543, 130, 100, 836, 380, 83, 0, 648, 500, 2485, 1791|
|
|
| 18| 1161, 314, 641, 1283, 1668, 1219, 501, 1732, 1604, 2255, 941, 242, 581, 550, 532, 538, 677, 651, 0, 578, 1897, 1161|
|
|
| 19| 1483, 260, 134, 1749, 2140, 1694, 835, 2197, 2067, 2738, 1293, 311, 418, 334, 387, 83, 431, 350, 527, 0, 2095, 1483|
|
|
| 20| 592, 1866, 2100, 2051, 2261, 1969, 1962, 2344, 2268, 2624, 2191, 1732, 2180, 2133, 1613, 2006, 2266, 2221, 1609, 1969, 0, 592|
|
|
| 21| 0, 1354, 1627, 1509, 1768, 1426, 1378, 1851, 1759, 2205, 1600, 1227, 1650, 1613, 1165, 1526, 1744, 1709, 1069, 1505, 793, 0|;
|
|
|
|
# demandas
|
|
param d[N] :=
|
|
<1> 7063,
|
|
<2> 51,
|
|
<3> 23,
|
|
<4> 3074,
|
|
<5> 349,
|
|
<6> 1047,
|
|
<7> 698,
|
|
<8> 3001,
|
|
<9> 31,
|
|
<10> 1135,
|
|
<11> 21611,
|
|
<12> 57,
|
|
<13> 51,
|
|
<14> 551,
|
|
<15> 179,
|
|
<16> 6,
|
|
<17> 528,
|
|
<18> 2832,
|
|
<19> 1514,
|
|
<20> 889;
|
|
|
|
# número de vehiculos
|
|
param K:= 4;
|
|
|
|
# capacidades
|
|
param C:= 21611;
|
|
|
|
# variables de seleccion de aristas
|
|
var x[A] binary;
|
|
|
|
# variables de flujo
|
|
var y[Ay] >= 0;
|
|
|
|
minimize costo_total : sum <i,j> in A : c[i,j] * x[i,j];
|
|
subto grado_sal_cliente : forall <i> in N do
|
|
(sum <i,j> in A : x[i,j]) == 1;
|
|
subto grado_ent_cliente : forall <i> in N do
|
|
(sum <j,i> in A : x[j,i]) == 1;
|
|
subto demanda_flujo : forall <i> in N do
|
|
(sum <j,i> in Ay : y[j,i]) - (sum <i,j> in Ay : y[i,j]) == 2*d[i];
|
|
subto vinculacion_1 : forall <i,j> in N*N with i<j do
|
|
y[i,j] + y[j,i] == C*(x[i,j]+x[j,i]);
|
|
subto vinculacion_2 : forall <j> in N do
|
|
y[0,j] + y[j,0] == C*(x[0,j]);
|
|
subto vinculacion_3 : forall <i> in N do
|
|
y[i,21] + y[21,i] == C*(x[i,21]);
|
|
subto eliminar_lazos_dobles : forall <i,j> in N*N with i<j do
|
|
x[i,j] + x[j,i] <=1;
|
|
subto salida_deposito_ida :
|
|
sum <0,j> in Ay : y[0,j] == sum <i> in N : d[i];
|
|
subto salida_deposito_retorno :
|
|
sum <21,j> in Ay : y[21,j] == K*C;
|