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

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;