##################################################### # Instancia: data/inst0.vrp # Tipo: ACVRP # Generada automaticamente ##################################################### set N:={1..10}; set V:= N + {0,11}; set A2 := V*V; # solo se usa para poder leer matriz de costos set A := { in N*N with i!=j} + {0}*N + N*{11}; # para los arcos set Ay := A + N*{0} + {11}*N; # para indexar y # costos de desplazamiento param c[A2] := | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11| | 0| 0, 1989, 1368, 1597, 1974, 2313, 1865, 1593, 2422, 2304, 2870, 0| | 1| 1746, 0, 1104, 1339, 743, 1186, 735, 490, 1231, 1073, 1926, 1746| | 2| 1565, 1352, 0, 313, 1882, 2375, 1807, 753, 2452, 2288, 3122, 1565| | 3| 1891, 1640, 383, 0, 2229, 2722, 2161, 1062, 2793, 2629, 3473, 1891| | 4| 1615, 607, 1537, 1820, 0, 493, 89, 963, 572, 410, 1244, 1615| | 5| 1889, 969, 1939, 2222, 402, 0, 467, 1363, 110, 100, 753, 1889| | 6| 1525, 600, 1476, 1764, 110, 572, 0, 917, 660, 502, 1315, 1525| | 7| 1539, 600, 615, 867, 1180, 1669, 1123, 0, 1736, 1572, 2422, 1539| | 8| 1978, 1005, 2002, 2281, 467, 89, 539, 1418, 0, 134, 695, 1978| | 9| 1881, 876, 1868, 2147, 335, 122, 410, 1284, 164, 0, 856, 1881| | 10| 2343, 1572, 2549, 2835, 1016, 615, 1073, 1978, 567, 699, 0, 2343| | 11| 0, 1989, 1368, 1597, 1974, 2313, 1865, 1593, 2422, 2304, 2870, 0|; # demandas param d[N] := <1> 1135, <2> 7063, <3> 51, <4> 23, <5> 3074, <6> 349, <7> 1047, <8> 698, <9> 3001, <10> 31; # número de vehiculos param K:= 4; # capacidades param C:= 7200; # variables de seleccion de aristas var x[A] binary; # variables de flujo var y[Ay] >= 0; minimize costo_total : sum in A : c[i,j] * x[i,j]; subto grado_sal_cliente : forall in N do (sum in A : x[i,j]) == 1; subto grado_ent_cliente : forall in N do (sum in A : x[j,i]) == 1; subto demanda_flujo : forall in N do (sum in Ay : y[j,i]) - (sum in Ay : y[i,j]) == 2*d[i]; subto vinculacion_1 : forall in N*N with i in N do y[0,j] + y[j,0] == C*(x[0,j]); subto vinculacion_3 : forall in N do y[i,11] + y[11,i] == C*(x[i,11]); subto eliminar_lazos_dobles : forall in N*N with i in Ay : y[0,j] == sum in N : d[i]; subto salida_deposito_retorno : sum <11,j> in Ay : y[11,j] == K*C;