Files
discrete-optimization-coursera/vrp/scip/inst2-fp.zpl.txt
T
2025-08-03 20:24:38 -07:00

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;