CAPÍTULO VI. EJEMPLOSbibing.us.es/proyectos/abreproy/30220/fichero/6...CAPÍTULO VI 84 con los...

18
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.

Transcript of CAPÍTULO VI. EJEMPLOSbibing.us.es/proyectos/abreproy/30220/fichero/6...CAPÍTULO VI 84 con los...

  • 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.