capÍtulo vi. ejemplosbibing.us.es/proyectos/abreproy/30220/fichero/6...capÍtulo vi 84 con los...
TRANSCRIPT
-
CAPÍTULO VI
80
CAPÍTULO VI. EJEMPLOS
Para demostrar la aplicación práctica de los modelos presentados a lo largo del proyecto, se muestran varios ejemplos utilizando datos reales, tomados de la red ferroviaria de Cercanías de Sevilla. Con la intención de facilitar la interpretación y trazabilidad de los trenes en los grafos y hacerla más didáctica, mostraremos en primer lugar unos pequeños ejemplos con datos simplificados. Seguidamente mostraremos los ejemplos con la totalidad del horario, para demostrar la posibilidad real de utilización.
Figura 6.1, Plano de Cercanías de Sevilla (fuente: www.renfe.com)
Los ejemplos simplificados se han resuelto con el programa LINGO, de Lindo
Systems Inc., pero para los ejemplos diarios completos ha sido necesario exportarlos a formato MPS y resolverlos utilizando CPLEX, comercializado por IBM. El ejemplo semanal completo, debido a limitaciones de memoria en la generación de los modelos extendidos con LINGO, ha sido modelado en GAMS y resuelto también usando CPLEX. El horario de los trenes se ha tomado de la página web de RENFE. Los datos se mantienen en una hoja de cálculo Excel que se utiliza como fuente de datos para los modelos. Una vez que el programa resuelve el modelo exportaremos la solución a otra tabla de Excel.
Con el fin de facilitar la lectura del resto del capítulo, seguidamente se muestra una
tabla resumen con las características más importantes de cada uno de los ejemplos que se presentan a continuación.
-
CAPÍTULO VI
81
Ejemplo nº Número de líneas
Número de servicios
Número de días
Número de Depots
Balanceo Fin de
semana
1 2 3 1 1 NO NO
2 2 3 1 2 NO NO
3 2 3 3 2 NO NO
4 2 3 3 2 SI NO
5 - - 7 - - NO
6 - - 7 - - SI
7 6 66 1 2 NO NO
8 6 66 1 2 NO SI
9 5 39 7 2 SI SI
6.1, EJEMPLO 1, MODELO DIARIO, HORARIO SIMPLIFICADO, UN DEPOT.
Vamos a tomar los 3 primeros servicios de las líneas de cercanías de Sevilla C1 y
C2. Imponemos como condición que sólo haya capacidad de depósito (capacidad de pernoctación de los trenes) en la estación UP de la línea 1. En las siguientes tablas mostramos los datos necesarios.
Origen: Santa Justa
Origen: Lora del Río
Destino: Lora del Río
Destino: Santa Justa
Línea Hora
Salida Hora
Llegada
Línea Hora
Salida Hora
Llegada
C1 05.35 06.21
C1 06.30 07.16
C1 06.40 07.26
C1 06.45 07.31
C1 07.05 07.51
C1 07.00 07.46
Origen: Santa Justa
Origen: Cartuja Destino: Cartuja
Destino: Santa Justa
Línea Hora
Salida Hora
Llegada
Línea Hora
Salida Hora
Llegada
C2 07.09 07.27
C2 07.37 07.55
C2 08.09 08.27
C2 08.42 09.01
C2 09.06 09.24
C2 09.42 10.00
Construimos una serie de matrices con los datos del horario para poder importarlos
adecuadamente.
SERVICIO S1 S2 S3
Line 1
Up Start 5,35 6,4 7,05
End 6,21 7,26 7,51
Dw Start 6,3 6,45 7
End 7,16 7,31 7,46
Line 2
Up Start 7,09 8,09 9,06
End 7,27 8,27 9,24
Dw Start 7,37 8,42 9,42
End 7,55 9,01 10
-
CAPÍTULO VI
82
HOUP S1 S2 S3
HDESTUP S1 S2 S3
Line 1 5,35 6,4 7,05
Line 1 6,21 7,26 7,51
Line 2 7,09 8,09 9,06
Line 2 7,27 8,27 9,24
HODW S1 S2 S3
HDESTDW S1 S2 S3
Line 1 6,3 6,45 7
Line 1 7,16 7,31 7,46
Line 2 7,37 8,42 9,42
Line 2 7,55 9,01 10
Igualmente construimos las matrices de longitudes de líneas y distancias entre
estaciones.
DEPOT_UP Line 1 Line 2
DEPOT_DW Line 1 Line 2
1 0
0 0
DIST Line 1 Line 2
66 10
DIST_UP_UP Line 1 Line 2
DIST_DW_DW Line 1 Line 2
Line 1 0 0
Line 1 0 76
Line 2 0 0
Line 2 76 0
DIST_UP_DW Line 1 Line 2
DIST_DW_UP Line 1 Line 2
Line 1 66 10
Line 1 66 66
Line 2 66 10
Line 2 10 10
Resolviendo el modelo en Lingo obtenemos los siguientes resultados:
Figura 6.2, Ventana de estado del solucionador de Lingo ejemplo 1.
-
CAPÍTULO VI
83
Observando la figura 6.1 podemos hacernos una idea del tamaño de nuestro
problema. El solucionador de Lingo nos muestra el número de variables, 1054; así como el tipo, de las cuales 280 son enteras; el número de restricciones, que son 887; el número de coeficientes no ceros, 3174; la cantidad de memoria utilizada por el programa para generar el modelo extendido, 279 Kb; y el tiempo empleado en el mismo, que en este caso no llega ni a un segundo. Además nos presenta las propiedades del modelo, siendo de tipo de Programación Lineal Entera (ILP); el estado de la solución, óptimo global; el valor de la función objetivo, 302,64; y el número de iteraciones necesitadas hasta llegar al óptimo, 180 en este ejemplo. Finalmente nos enseña el método aplicado para resolver el modelo, que en este caso ha sido Branch and Bound.
Al exportar los resultados a Excel obtenemos, entre otras, las siguientes matrices:
Line 1 Line 2
NTRENES_UP 3 1
NTRENES_DW 2 0
TOTAL TRENES
6
KM T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 T 9 T 10 TOTAL
60 132 0 132 0 0 0 132 132 132 720
Podemos ver como el mínimo número de trenes necesarios para cumplir el servicio
horario son 6, que coinciden con las unidades cuyos kilómetros son distintos de cero. Sabiendo que la longitud de la línea C2 son 10 km y que el tren número 1 realiza 6 servicios, la distancia total recorrida por este tren son 60 km, con lo cual comprobamos la veracidad de los datos calculados.
Para la representación del ejemplo y trazabilidad de los trenes es necesario analizar las matrices de variables, incluidas en el Anexo 1. A continuación representamos los resultados obtenidos.
Figura 6.3, Representación gráfica ejemplo 1.
Al permitir sólo un depósito para pernoctación en la estación UP de la línea C1, todos
los trenes salen y llegan a ese nodo, tanto los de la línea C1 como los de la línea C2. Para realizar los servicios sentido DW de la línea C1 será necesario enviar los trenes 8 y 9 en vacío desde el inicio hasta el fin de la línea de forma previa a comenzar los viajes dentro del horario. Estos viajes en vacío repercuten directamente en el coste, puesto que recorren la línea de un extremo a otro sin transportar pasajeros. Igualmente ocurre
-
CAPÍTULO VI
84
con los trenes 4 y 2, pero en sentido contrario al finalizar la jornada. Por la peculiaridad del horario, los servicios de la línea C2 pueden cumplirse con un único tren, el 1, puesto que la hora de salida de los servicios en sentido DW es siempre posterior a la hora de llegada de los servicios en sentido UP, del mismo modo que la salida de los servicios 2 y 3 sentido UP es posterior a la hora de llegada de los servicios 1 y 2 sentido DW. Nuevamente volvemos a tener dos viajes en vacío, los que realiza el tren 1 al comienzo y al final del día, aunque en este caso, por tratarse de la misma estación (Santa Justa), no imputarán coste alguno. Los servicios de la línea C1 quedan cubiertos por 5 trenes, tres en sentido UP y dos en sentido DW, ya que únicamente es posible una conexión entre las horas de llegada de unos y las horas de salida de otros. 6.2, EJEMPLO 2, MODELO DIARIO, HORARIO SIMPLIFICADO, DOS DEPOTS.
Para este ejemplo utilizaremos los mismos servicios horarios del ejemplo anterior e
introduciremos sólo dos variantes. La primera de ellas consiste en permitir el depósito para pernoctación en la estación UP de la línea 1 y en la estación DW de la línea 2. La segunda modificación se ha impuesto en la distancia entre las estaciones DW de las líneas 1 y 2, pasando de 76 a 5. Así, las matrices de longitudes de líneas y distancias entre estaciones quedan como sigue.
DEPOT_UP Line 1 Line 2
DEPOT_DW Line 1 Line 2
1 0
0 1
DIST Line 1 Line 2
66 10
DIST_UP_UP Line 1 Line 2
DIST_DW_DW Line 1 Line 2
Line 1 0 0
Line 1 0 5
Line 2 0 0
Line 2 5 0
DIST_UP_DW Line 1 Line 2
DIST_DW_UP Line 1 Line 2
Line 1 66 10
Line 1 66 66
Line 2 66 10
Line 2 10 10
Calculamos el modelo en Lingo y en la figura 6.3 volvemos a presentar las
características más significativas del ejemplo. Como sería de esperar, tenemos la misma cantidad de variables, restricciones y no ceros que en el ejemplo anterior. El tipo de modelo sigue siendo ILP y el valor de la función objetivo se ha mejorado significativamente, pasando de 302,64 a 98,64. Sin embargo han sido necesarias muchas más iteraciones para llegar al óptimo, exactamente 1905, de ahí que el tiempo requerido se haya incrementado hasta alcanzar los 2 segundos. Vuelve a aplicarse el método Branch and Bound.
Las matrices de variables las mostramos en el Anexo 1. Los resultados más
significativos los resumimos a continuación:
Line 1 Line 2
NTRENES_UP 3 1
NTRENES_DW 2 0
TOTAL TRENES
6
-
CAPÍTULO VI
85
KM T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 T 9 T 10 TOTAL
81 81 0 81 0 132 60 0 0 81 516
Figura 6.4, Ventana de estado del solucionador de Lingo ejemplo 2.
La representación gráfica resulta:
Figura 6.5, Representación gráfica ejemplo 2.
El mínimo de trenes ya sabíamos que era 6, pero en este caso los kilómetros se han
reducido bastante, desde los 720 a los 516. Esta reducción es debida a la minimización de las distancias recorridas por los trenes en vacío, ya que los servicios siguen siendo los mismos. Los 6 servicios de la línea C1, con una longitud de línea de 66 km, y los 6 servicios de la línea C2, con una longitud de 10 km, suponen un total de 456 km, de ahí que los restantes hasta los 516, o los 720 del ejemplo 1, sean recorridos en vacío. Los
-
CAPÍTULO VI
86
servicios realizados por los trenes 2 y 10 eran realizados, en el ejemplo 1, por los trenes 8 y 9. En vez de pernoctar en la estación UP de la línea C1, recorren mucha menos distancia si lo hacen en la estación DW de la línea 2. Lo mismo ocurre con los trenes 1 y 4. 6.3, EJEMPLO 3, MODELO SEMANAL, HORARIO SIMPLIFICADO.
Supongamos que nuestra semana es de 3 días. Partiendo del mismo servicio horario que en los dos ejemplos anteriores, hemos decidido suprimir el tercer servicio del primer día y el segundo servicio del tercer día, con la intención de provocar que el mínimo número de trenes necesarios para cubrir el servicio varíe de un día a otro. El horario modificado queda de la siguiente forma:
DIA 1 2 3
SERVICIO S1 S2 S3 S1 S2 S3 S1 S2 S3
Line 1
Up Start 5,35 6,4 5,35 6,4 7,05 5,35 7,05
End 6,21 7,26 6,21 7,26 7,51 6,21 7,51
Dw Start 6,3 6,45 6,3 6,45 7 6,3 7
End 7,16 7,31 7,16 7,31 7,46 7,16 7,46
Line 2
Up Start 7,09 8,09 7,09 8,09 9,06 7,09 9,06
End 7,27 8,27 7,27 8,27 9,24 7,27 9,24
Dw Start 7,37 8,42 7,37 8,42 9,42 7,37 9,42
End 7,55 9,01 7,55 9,01 10 7,55 10
HOUP S1-D1 S1-D2 S1-D3 S2-D1 S2-D2 S2-D3 S2-D1 S2-D2 S2-D3
Line 1 5,35 5,35 5,35 6,4 6,4 0 0 7,05 7,05
Line 2 7,09 7,09 7,09 8,09 8,09 0 0 9,06 9,06
HDESTUP S1-D1 S1-D2 S1-D3 S2-D1 S2-D2 S2-D3 S2-D1 S2-D2 S2-D3
Line 1 6,21 6,21 6,21 7,26 7,26 0 0 7,51 7,51
Line 2 7,27 7,27 7,27 8,27 8,27 0 0 9,24 9,24
HODW S1-D1 S1-D2 S1-D3 S2-D1 S2-D2 S2-D3 S2-D1 S2-D2 S2-D3
Line 1 6,3 6,3 6,3 6,45 6,45 0 0 7 7
Line 2 7,37 7,37 7,37 8,42 8,42 0 0 9,42 9,42
HDESTDW S1-D1 S1-D2 S1-D3 S2-D1 S2-D2 S2-D3 S2-D1 S2-D2 S2-D3
Line 1 7,16 7,16 7,16 7,31 7,31 0 0 7,46 7,46
Line 2 7,55 7,55 7,55 9,01 9,01 0 0 10 10
DEPOT_UP Line 1 Line 2
DEPOT_DW Line 1 Line 2
1 0
0 1
DIST Line 1 Line 2
66 10
DIST_UP_UP Line 1 Line 2
DIST_DW_DW Line 1 Line 2
Line 1 0 0
Line 1 0 5
Line 2 0 0
Line 2 5 0
DIST_UP_DW Line 1 Line 2
DIST_DW_UP Line 1 Line 2
Line 1 66 10
Line 1 66 66
Line 2 66 10
Line 2 10 10
-
CAPÍTULO VI
87
Con estos datos pasamos a resolver el ejemplo, cuyos resultados mostramos
seguidamente.
Figura 6.6, Ventana de estado del solucionador de Lingo ejemplo 3.
El número de variables se incrementa hasta las 6985, de las cuales 5160 son
enteras; el número de restricciones alcanza las 2994; el número de coeficientes no ceros, 11769; la cantidad de memoria utilizada por el programa para generar el modelo, 1215 Kb; y el tiempo empleado en el mismo, tampoco llega a un segundo. Sigue siendo de tipo de Programación Lineal Entera (ILP); el óptimo global alcanza un valor de 7240 y han sido necesarias 834 iteraciones hasta llegar a él. Al igual que en los ejemplos anteriores emplea el método Branch and Bound.
Exportamos y ordenamos los resultados, formando las siguientes matrices. En ellas
comprobamos el propósito que perseguíamos, que el número de trenes fuera diferente según el día, requiriéndose 4 unidades para los días primero y tercero, y 6 unidades para el segundo día. A continuación de las matrices representamos gráficamente la circulación obtenida. Las matrices de variables las recopilamos en el Anexo 1.
NTRENES_UP D1 D2 D3
NTRENES_DW D1 D2 D3
Line 1 2 3 2
Line 1 1 2 1
Line 2 1 1 1
Line 2 0 0 0
NTRENESDIA D1 D2 D3
NTRENES
TOTAL 6
4 6 4
KM T 1 T 2 T 3 T 4 T5 T6 T7 T8 T9 T10 TOTAL
212 0 274 142 0 60 0 142 0 274 1104
-
CAPÍTULO VI
88
Figura 6.7, Representación gráfica ejemplo 3.
-
CAPÍTULO VI
89
6.4, EJEMPLO 4, MODELO SEMANAL SIMPLIFICADO Y BALANCEADO.
Resolvemos el modelo semanal balanceado (tratando de equilibrar el kilometraje de los trenes) con los mismos datos del ejemplo anterior.
Figura 6.8, Ventana de estado del solucionador de Lingo ejemplo 4.
Para la resolución de este problema, el tiempo de computación se incrementa significativamente, llegando hasta las 3 horas 54 minutos y 20 segundos, como se observa en la figura superior.
Si comparamos los resultados de este ejemplo con los del ejemplo anterior, donde
no equilibrábamos los kilómetros, observamos que el número de trenes diarios sigue siendo el mismo: 4, 6 y 4; sin embargo, la diferencia entre el mayor y el menor pasa de 214 (274 – 60) a 71 (213 – 142). Señalar también que el número de kilómetros totales se incrementa en 20, de los 1.104 a los 1.124.
NTRENESDIA D1 D2 D3
NTRENES
TOTAL 6
4 6 4
KM T 1 T 2 T 3 T 4 T5 T6 T7 T8 T9 T10 TOTAL
213 182 192 0 0 182 213 142 0 0 1124
A pesar de este pequeño incremento en los kilómetros totales, esta alternativa del
modelo semanal simplifica enormemente la planificación del mantenimiento regular preventivo de los trenes, puesto que garantiza un único horizonte temporal para la planificación de todas las unidades.
A continuación representamos el grafo de este ejemplo.
-
CAPÍTULO VI
90
Figura 6.9, Representación gráfica ejemplo 4.
6.5, EJEMPLO 5, MODELO PARA PLANIFICACIÓN DEL MANTENIMIENTO EN DÍAS LABORABLES.
Supongamos que obtenemos los siguientes trenes y kilómetros con el modelo
semanal: KM D1 D2 D3 D4 D5 D6 D7
T1 1189 1183 1102 1122 1109 0 0
T1 858 802 871 897 829 816 803
T3 1179 1107 1137 1109 1136 0 0
T4 822 839 893 810 851 892 818
T5 1122 1188 1180 1117 1186 0 0
T6 867 870 842 900 822 845 882
T7 1142 1175 1117 1103 1104 0 0
T8 1124 1127 1198 1128 1160 0 0
T9 1183 1165 1116 1175 1101 0 0
T10 819 825 885 803 892 878 831
T11 1100 1122 1117 1194 1122 0 0
T12 818 875 804 839 815 859 899
T13 1170 1162 1103 1122 1147 0 0
T14 857 867 851 825 823 877 900
T15 1115 1148 1162 1158 1120 0 0
T16 868 847 879 850 835 834 815
T17 882 801 840 897 882 854 801
T18 810 837 892 829 894 849 856
T19 1165 1159 1184 1138 1116 0 0
T20 1142 1109 1123 1184 1159 0 0
T21 1155 1157 1114 1151 1117 0 0
-
CAPÍTULO VI
91
T22 810 865 851 859 887 864 806
T23 853 813 816 837 835 858 838
T24 894 804 832 891 832 842 878
T25 852 827 850 817 823 896 863
T26 832 838 832 816 870 880 894
T27 821 832 892 843 814 846 838
T28 1142 1116 1181 1118 1176 0 0
T29 826 849 873 801 900 821 880
Repitiendo la circulación del modelo semanal durante 4 semanas completas más
tres días, obtenemos la tabla siguiente (mostrada integramente en el Anexo 2).
KM D1 D2 D3 D4 D5 D6 D7 D28 D29 D30 D31 TOTAL
T1 1189 1183 1102 1122 1109 0 0 5705 4 22820 1189 1183 1102 26294
T1 858 802 871 897 829 816 803 5876 4 23504 858 802 871 26035
T3 1179 1107 1137 1109 1136 0 0 5668 4 22672 1179 1107 1137 26095
T4 822 839 893 810 851 892 818 5925 4 23700 822 839 893 26254
T5 1122 1188 1180 1117 1186 0 0 5793 4 23172 1122 1188 1180 26662
T6 867 870 842 900 822 845 882 6028 4 24112 867 870 842 26691
T7 1142 1175 1117 1103 1104 0 0 5641 4 22564 1142 1175 1117 25998
T8 1124 1127 1198 1128 1160 0 0 5737 4 22948 1124 1127 1198 26397
T9 1183 1165 1116 1175 1101 0 0 5740 4 22960 1183 1165 1116 26424
T10 819 825 885 803 892 878 831 5933 4 23732 819 825 885 26261
T11 1100 1122 1117 1194 1122 0 0 5655 4 22620 1100 1122 1117 25959
T12 818 875 804 839 815 859 899 5909 4 23636 818 875 804 26133
T13 1170 1162 1103 1122 1147 0 0 5704 4 22816 1170 1162 1103 26251
T14 857 867 851 825 823 877 900 6000 4 24000 857 867 851 26575
T15 1115 1148 1162 1158 1120 0 0 5703 4 22812 1115 1148 1162 26237
T16 868 847 879 850 835 834 815 5928 4 23712 868 847 879 26306
T17 882 801 840 897 882 854 801 5957 4 23828 882 801 840 26351
T18 810 837 892 829 894 849 856 5967 4 23868 810 837 892 26407
T19 1165 1159 1184 1138 1116 0 0 5762 4 23048 1165 1159 1184 26556
T20 1142 1109 1123 1184 1159 0 0 5717 4 22868 1142 1109 1123 26242
T21 1155 1157 1114 1151 1117 0 0 5694 4 22776 1155 1157 1114 26202
T22 810 865 851 859 887 864 806 5942 4 23768 810 865 851 26294
T23 853 813 816 837 835 858 838 5850 4 23400 853 813 816 25882
T24 894 804 832 891 832 842 878 5973 4 23892 894 804 832 26422
T25 852 827 850 817 823 896 863 5928 4 23712 852 827 850 26241
T26 832 838 832 816 870 880 894 5962 4 23848 832 838 832 26350
T27 821 832 892 843 814 846 838 5886 4 23544 821 832 892 26089
T28 1142 1116 1181 1118 1176 0 0 5733 4 22932 1142 1116 1181 26371
T29 826 849 873 801 900 821 880 5950 4 23800 826 849 873 26348
Observamos que los kilómetros recorridos por todos los trenes se encuentran entre
25.000 y 30.000, siendo el horizonte temporal 31 días. El tren que mayor distancia recorre es el número 6 con 26.691 kilómetros y el tren que menos, el número 23 con 25.882 kilómetros. En este ejemplo, la diferencia de kilómetros semanal entre el mayor y el menor se sitúa en 387. Consideramos esta cifra bastante mejorable, con lo cual pueden aproximarse los límites del intervalo entre sí, consiguiendo mayor homogeneidad entre los kilómetros de todos los trenes y por consiguiente entre revisiones.
Seguidamente procedemos con la asignación de revisiones a los trenes una vez
obtenido el horizonte temporal, obteniendo la matriz siguiente (mostrada completa en el Anexo 3). Hemos ocultado los fines de semana, puesto que no se va a realizar ninguna operación de mantenimiento.
-
CAPÍTULO VI
92
X D1 D2 D3 D4 D5 D8 D9 D10 D11 D12 D15 D16 D17 D18 D19 D22 D23 D24 D25 D26 D29 D30 D31
T1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T3 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T4 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T5 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
T6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
T7 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T8 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T9 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
T10 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1
T11 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T12 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T13 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T14 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T15 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T16 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T17 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T18 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
T19 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
T20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
T21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
T22 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
T23 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T24 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
T25 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1
T26 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
T27 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
T28 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
T29 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
REV. 1 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Puede comprobarse cómo cada tren es revisado una única vez en todo el periodo
de planificación (un solo cero por fila). Los días 2, 3, 4, 5, 8 y 9 se realizan dos revisiones, mientras el resto de días del mes se realiza una. 6.6, EJEMPLO 6, MODELO PARA PLANIFICACIÓN DEL MANTENIMIENTO CON FINES DE SEMANA.
Volviendo al ejemplo propuesto, si nuestro horizonte son 31 días y disponemos de
29 trenes, al repartir uniformemente las revisiones, tendremos dos días donde no se revisará ningún tren. En la tabla de resultados del Anexo 3 puede comprobarse que se corresponden con los días 1 y 31. Analizando cualquiera de los trenes, por ejemplo el 1, éste se revisará el día 2. Lógicamente la primera revisión se efectuará con pocos kilómetros, en este caso después de circular un solo día, pero al repetir esta planificación, en las revisiones sucesivas garantizamos que el tren ha recorrido los kilómetros especificados.
Si en vez de 29, tuviésemos 5 trenes (ver matriz en Anexo 3) y el mismo horizonte
temporal, todas las revisiones podrían efectuarse en fin de semana, no necesitándose ningún tren adicional de reserva. Los trenes 1, 3 y 5 no circulan en fin de semana, y los servicios de los trenes 2 y 4, mientras éstos se revisan, se realizarán por alguno de los otros 3.
-
CAPÍTULO VI
93
6.7, EJEMPLO 7, MODELO DIARIO, HORARIO COMPLETO, DÍA LABORABLE.
A continuación vamos a resolver la circulación del horario completo de un día laborable cualquiera. Como se comentó anteriormente, se han tomado los horarios de Cercanías de Sevilla. Realmente dicho horario se repite de lunes a viernes, reduciéndose los servicios los sábados y los domingos, aunque siendo estos iguales entre sí, de ahí que hayamos calculado dos modelos diarios, uno para los días laborables y otro para los fines de semana.
En el Anexo 4 reflejamos el horario completo, aunque con las peculiaridades que
comentamos seguidamente. La línea C1 la hemos dividido en dos, manteniendo esa nomenclatura para el tramo entre las estaciones de Santa Justa y Lora del Río, y llamando C6 al tramo entre las estaciones de Santa Justa y Utrera. La línea C4 es circular, de ahí que hayamos tomado la estación de Padre Pío Palmete como estación Down. En la línea C5 no se ha tenido en cuenta el tramo entre las estaciones de Santa Justa y Virgen del Rocío. Todos estos cambios no influyen en el modelo, únicamente se han introducido para facilitar los cálculos.
Además de los horarios del Anexo 4, se han tomado los siguientes inputs:
DEPOT_UP 1 2 3 4 5 6
DEPOT_DW 1 2 3 4 5 6
1 0 0 0 0 0
0 0 0 0 0 1
DIST 1 2 3 4 5 6
66 10 78 9 33 37
DIST_UP_UP 1 2 3 4 5 6
DIST_DW_DW 1 2 3 4 5 6
1 0 0 0 0 0 0
1 0 76 144 75 99 71
2 0 0 0 0 0 0
2 76 0 88 19 43 15
3 0 0 0 0 0 0
3 144 88 0 87 111 83
4 0 0 0 0 0 0
4 75 19 87 0 42 14
5 0 0 0 0 0 0
5 99 43 111 42 0 38
6 0 0 0 0 0 0
6 71 15 83 14 38 0
DIST_UP_DW 1 2 3 4 5 6
DIST_DW_UP 1 2 3 4 5 6
1 66 10 78 9 33 5
1 66 66 66 66 66 66
2 66 10 78 9 33 5
2 10 10 10 10 10 10
3 66 10 78 9 33 5
3 78 78 78 78 78 78
4 66 10 78 9 33 5
4 9 9 9 9 9 9
5 66 10 78 9 33 5
5 33 33 33 33 33 33
6 66 10 78 9 33 5
6 5 5 5 5 5 5
Debido al tamaño del problema, una vez programado en Lingo, ha sido necesario
exportarlo a formato MPS y resolverlo con CPLEX. La circulación óptima se realiza con 20 trenes, desglosados por líneas tal y como se presenta en las tablas siguientes.
Line 1 Line 2 Line 3 Line 4 Line 5 Line 6
NTRENES_UP 3 1 1 1 1 3
NTRENES_DW 3 0 1 1 2 3
TOTAL TRENES
20
T1 T2 T5 T6 T9 T10 T11 T13 T19 T20 T24 T25 T27 T30 T31 T40 T43 T44 T47 T50
KM 296 594 312 444 528 792 528 444 528 300 612 518 462 560 660 528 528 924 592 156
-
CAPÍTULO VI
94
Figura 6.10, Representación gráfica ejemplo 7.
6.8, EJEMPLO 8, MODELO DIARIO, HORARIO COMPLETO, FIN DE SEMANA.
Tomamos las mismas matrices de distancias y capacidad de pernoctación anteriores. Los resultados obtenidos con el horario de los sábados y los domingos los exponemos en este ejemplo.
Line 1 Line 2 Line 3 Line 4 Line 5 Line 6
NTRENES_UP 2 1 0 1 1 1
NTRENES_DW 1 0 2 1 2 2
TOTAL TRENES
14
T1 T2 T14 T23 T25 T29 T32 T35 T37 T38 T46 T47 T49 T50
KM 558 330 140 576 660 592 924 792 264 156 370 444 312 330
-
CAPÍTULO VI
95
Figura 6.11, Representación gráfica ejemplo 8.
Evidentemente, al disminuir el número de servicios, el número de trenes debe ser
menor que los días laborables, pasando de 20 unidades a 14. Las matrices de variables de estos ejemplos no se incluyen en los anexos por ser demasiado grandes.
-
CAPÍTULO VI
96
6.9, EJEMPLO 9, MODELO SEMANAL, HORARIO COMPLETO.
Finalmente, en este último ejemplo vamos a resolver la circulación semanal del horario completo. Hay que aclarar que hemos prescindido de la línea C4, puesto que es la línea con mayor número de servicios (66), e incrementa enormemente el número de variables del problema, impidiendo su resolución por exceso de tamaño, incluso
empleando GAMS. Al ser una línea circular, la estación UP y la estación DW podrían considerarse la misma, posibilitando su tratamiento de manera independiente. Analizando los resultados de los modelos diarios, comprobamos que la línea C4 se resuelve con 2 unidades, tanto los días laborables como los fines de semana. Si al número de unidades totales obtenidas en este ejemplo le sumamos las 2 unidades de la línea C4, verificamos que los resultados obtenidos con ambos modelos son congruentes. El número de servicios se reduce considerablemente hasta los 39.
Además de los horarios del Anexo 4, con la salvedad comentada de la línea C4, se
han tomado los siguientes inputs:
DEPOT_UP 1 2 3 5 6
DEPOT_DW 1 2 3 5 6
1 0 0 0 0
0 0 0 0 1
DIST 1 2 3 5 6
66 10 78 33 37
DIST_UP_UP 1 2 3 5 6
DIST_DW_DW 1 2 3 5 6
1 0 0 0 0 0
1 0 76 144 99 71
2 0 0 0 0 0
2 76 0 88 43 15
3 0 0 0 0 0
3 144 88 0 111 83
5 0 0 0 0 0
5 99 43 111 0 38
6 0 0 0 0 0
6 71 15 83 38 0
DIST_UP_DW 1 2 3 5 6
DIST_DW_UP 1 2 3 5 6
1 66 10 78 33 5
1 66 66 66 66 66
2 66 10 78 33 5
2 10 10 10 10 10
3 66 10 78 33 5
3 78 78 78 78 78
5 66 10 78 33 5
5 33 33 33 33 33
6 66 10 78 33 5
6 5 5 5 5 5
Una vez programado en GAMS, los resultados se han obtenido después de 31
horas de computación, empleando un procesador Intel Core i5-2410M CPU @ 2.30 GHz. La circulación óptima se realiza con 18 trenes los días laborables y 12 unidades los fines de semana, desglosados por líneas tal y como se presenta en las tablas siguientes.
NTRENES_UP D1 D2 D3 D4 D5 D6 D7
NTRENES_DW D1 D2 D3 D4 D5 D6 D7
Line 1 3 3 3 3 3 2 2
Line 1 3 3 3 3 3 1 1
Line 2 1 1 1 1 1 1 1
Line 2 0 0 0 0 0 0 0
Line 3 1 1 1 1 1 0 0
Line 3 1 1 1 1 1 2 2
Line 5 1 1 1 1 1 1 1
Line 5 2 2 2 2 2 2 2
Line 6 3 3 3 3 3 1 1
Line 6 3 3 3 3 3 2 2
NTRENESDIA D1 D2 D3 D4 D5 D6 D7
18 18 18 18 18 12 12
Efectivamente esta solución es coherente con los resultados obtenidos en los
ejemplos 7 y 8 del modelo diario.
-
CAPÍTULO VI
97
Los kilómetros recorridos por cada unidad se muestran en la siguiente tabla:
KMTXD D1 D2 D3 D4 D5 D6 D7 KM
T1 300 528 629 296 370 518 481 3122
T2 407 481 528 462 300 792 140 3110
T3 792 462 396 528 444 198 330 3150
T4 528 528 528 156 370 312 660 3082
T5 396 792 660 444 312 330 156 3090
T6 518 407 305 666 555 156 555 3162
T7 629 305 370 481 333 592 370 3080
T8 370 156 528 444 528 792 264 3082
T9 156 528 792 396 528 396 312 3108
T10 296 370 370 300 660 792 330 3118
T11 528 312 156 518 528 296 792 3130
T12 528 407 481 312 396 140 924 3188
T13 462 660 462 792 792 0 0 3168
T14 312 792 924 660 462 0 0 3150
T15 629 592 312 792 797 0 0 3122
T16 792 597 407 533 777 0 0 3106
T17 660 528 592 528 792 0 0 3100
T18 792 660 660 792 156 0 0 3060
Observando los kilómetros semanales totales, apreciamos que el equilibrado de los
mismos arroja un mínimo de 3060 kms para el tren número 18 y un máximo de 3188 kms para la unidad 12.
Repitiendo la circulación obtenida durante 8 semanas más un día, es decir, durante
57 días, todas las unidades se sitúan por encima de los 25.000 kms. Concretamente la unidad que menor kilometraje recorre es la número 9 con 25.020 kms, mientras que la unidad que más distancia acumula es la número 12 con 26.032 kms.
KMTXD D1 D2 D3 D4 D5 D6 D7 KM D56 D57 TOTAL
T1 300 528 629 296 370 518 481 3122 8 24976 300 25276
T2 407 481 528 462 300 792 140 3110 8 24880 407 25287
T3 792 462 396 528 444 198 330 3150 8 25200 792 25992
T4 528 528 528 156 370 312 660 3082 8 24656 528 25184
T5 396 792 660 444 312 330 156 3090 8 24720 396 25116
T6 518 407 305 666 555 156 555 3162 8 25296 518 25814
T7 629 305 370 481 333 592 370 3080 8 24640 629 25269
T8 370 156 528 444 528 792 264 3082 8 24656 370 25026
T9 156 528 792 396 528 396 312 3108 8 24864 156 25020
T10 296 370 370 300 660 792 330 3118 8 24944 296 25240
T11 528 312 156 518 528 296 792 3130 8 25040 528 25568
T12 528 407 481 312 396 140 924 3188 8 25504 528 26032
T13 462 660 462 792 792 0 0 3168 8 25344 462 25806
T14 312 792 924 660 462 0 0 3150 8 25200 312 25512
T15 629 592 312 792 797 0 0 3122 8 24976 629 25605
T16 792 597 407 533 777 0 0 3106 8 24848 792 25640
T17 660 528 592 528 792 0 0 3100 8 24800 660 25460
T18 792 660 660 792 156 0 0 3060 8 24480 792 25272
La representación gráfica de esta solución puede verse en el Anexo 5.