73 lines
2.9 KiB
Plaintext
73 lines
2.9 KiB
Plaintext
#####################################################
|
|
# 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 := {<i,j> 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 <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,11] + y[11,i] == C*(x[i,11]);
|
|
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 <11,j> in Ay : y[11,j] == K*C;
|