scieee AI-readable full text Open interactive document viewer

Diseño e implementación de un modelo de optimización para el control de aglomeraciones en las estaciones de una línea de metro

Morán Cordón, Pedro

Abstract

La optimización de recursos a través de métodos matemáticos ha cobrado una gran importancia en los últimos años. Estas técnicas de optimización tienen numerosas y muy distintas aplicaciones. Entre otras, grandes empresas como Inditex basan toda su logística y organización en alguno de estos métodos. (ABC, 2018) En nuestro caso usaremos estas técnicas de optimización para tratar otro servicio cuya importancia debe aumentar en los próximos años: el transporte urbano y/o metropolitano por ferrocarril. En las próximas páginas se detallará un modelo matemático que aspira a dar solución, al menos parcialmente, al problema de la congestión en las estaciones de metro de grandes ciudades. En primer lugar, se realizará una introducción en la que se explica por qué el tren es un modo de transporte que no debería parar de crecer. Más adelante, se explicará el enfoque seguido y el método que se usará para paliar la congestión en las estaciones: la reserva de vagones. También se mostrarán los datos que resultan necesarios para nuestro caso de estudio, así como la explicación detrás de ellos. Para desarrollar el modelo propuesto, se han utilizado EXCEL, Python y GUROBI. Excel se utiliza tanto para recoger los datos como para plasmar los resultados. Python es el lenguaje en el que se han desarrollado las restricciones y la función objetivo del modelo. Por último, GUROBI es un programa de optimización lineal que nos ha permitido resolver el modelo, llevara a cabo los experimentos y estudiar distintas situaciones de una forma rápida, a pesar de manejar una gran cantidad de datos. Una vez seleccionados los datos de los diferentes experimentos, se resolverán varios escenarios para comprobar la efectividad del método. En concreto, comprobaremos cómo afecta al flujo de pasajeros la aplicación de políticas de reserva de plazas. Descifrar el comportamiento del modelo será clave para discernir su efectividad y concluir si realmente la reserva de vagones puede ser una solución adecuada para mejorar el flujo de las estaciones de líneas ferroviarias de alto volumen de pasajeros.

Full text

Equation Chapter 1 Section 1 Trabajo de Fin de Grado Ingeniería en Tecnologías Industriales Diseño e implementación de un modelo de optimización para el control de aglomeraciones en las estaciones de una línea de metro Dpto. Escuela Técnica Superior de Ingeniería Universidad de Sevilla Autor: Pedro Morán Cordón Tutor: José David Canca Ortiz Sevilla, 20 21 Índice de Tablas 2 Trabajo de Fin de Grado Ingeniería en Tecnologías Industriales Diseño e implementación de un modelo de optimización para el control de aglomeraciones en las estaciones de una línea de metro Autor: Pedro Morán Cordón Tutor: José David Canca Ortiz Catedrático de Universidad Dpto. de Organización Industrial y Gestión de Empresas I Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2021 Índice de Tablas 4 Proyecto Fin de Carrera: Diseño e implementación de un modelo de optimización para el control de aglomeraciones en las estaciones de una línea de metro Autor: Pedro Morán Cordón Tutor: José David Canca Ortiz El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2021 El secretario del Tribunal Índice de Tablas 6 A mi familia Índice de Tablas 8 Agradecimientos Durante toda mi etapa universitaria he tenido la suerte de compartir clases, horas de estudio, exámenes con compañeros increíbles. Dar las gracias a todos ellos por su ayuda de forma desinteresada, sus ánimos cuando las cosas no salían todo lo bien que nos gustaría y los momentos vividos. Quiero dar las gracias a todos los profesores que me han ayudado durante todos estos años. Además de aprender conocimientos que me ayudarán, y me están ayudando, en mi carrera profesional también me llevo muchas experiencias que me han hecho crecer personalmente. En especial, me gustaría dar las gracias a mi tutor para este trabajo. Agradezco enormemente su ayuda, implicación y disponibilidad durante todo el proyecto. Por último y más importante, a mis padres. La razón última por la que me quedaba una hora más en la biblioteca, me repasaba una última vez un ejercicio… eran ellos. Todo lo que he conseguido y conseguiré se lo debo a ellos. Pedro Morán Cordón Grado de Ingeniería en Tecnologías Industriales. Sevilla, 2022 Índice de Tablas 16 2 ÍNDICE DE GRÁFICAS Illustración 1: 2ª suposición ....................................................................................................................... 14 Gráfico 2:Ejemplo de riesgo de aglomeración ........................................................................................... 23 Gráfico 3: Riesgo de aglomeración en función de pasajeros...................................................................... 27 Gráfico 4:Riesgo de aglomeración en 1ª experimentación ......................................................................... 52 Gráfico 5 :Flujo de pasajeros en 1ª experimentación ................................................................................. 53 Gráfico 6:Máximo número de pasajeros por estación para factor de escala 0.6 ........................................ 55 Gráfico 7:Demanda en estación 4 para factor de escala 0.6 ....................................................................... 57 Gráfico 8:Flujo de pasajeros en 3ª experimentación .................................................................................. 58 Índice de Gráficas 18 3 ÍNDICE DE FIGURAS Ilustración 1. Aumento de población en áreas urbanas (Fuente: UN World Urbanization Prospects) ......... 3 Ilustración 2: Zona de espera de pasajeros ................................................................................................. 12 Ilustración 3: Pasajeros esperando el primer tren ....................................................................................... 12 Ilustración 4: Pasajeros a bordo del tren sin reserva de vagones ................................................................ 13 Ilustración 5: Ejemplo con reserva de vagones .......................................................................................... 13 Ilustración 6:Librerías usadas en Python .................................................................................................... 33 Ilustración 7: IOFunctionsExcel en Python ................................................................................................ 33 Ilustración 8:Uso de IOFunctionsExcel ..................................................................................................... 34 Ilustración 9:Variables declaradas en Python ............................................................................................. 35 Ilustración 10:Restricciones 1 en Python ................................................................................................... 35 Ilustración 11:Restricciones 2 en Python ................................................................................................... 35 Ilustración 12:Restricciones 3 en Python ................................................................................................... 36 Ilustración 13: Restricciones 5 en Python .................................................................................................. 36 Ilustración 14:Relación entre 𝑖,𝑘,𝑠 y 𝑖,𝑘 en Python .................................................................................. 37 Ilustración 15:Restricciones 6 en Python ................................................................................................... 37 Ilustración 16:Restricciones 7 en Python ................................................................................................... 38 Ilustración 17:Restricciones 8 en Python ................................................................................................... 38 Ilustración 18:Restricciones 9 en Python ................................................................................................... 39 Ilustración 19::Restricciones 10 en Python ................................................................................................ 39 Ilustración 20:Restricciones 11 en Python ................................................................................................. 39 Ilustración 21:Restricciones 12 en Python ................................................................................................. 40 Ilustración 22:Restricciones 13 en Python ................................................................................................. 40 Ilustración 23:Variables previas en Restricciones 14 en Python ................................................................ 41 Ilustración 24:Restricciones 14 en Python ................................................................................................. 41 Ilustración 25:Restricciones 15 y 16 en Python ......................................................................................... 42 Ilustración 26:Función objetivo en Python................................................................................................. 42 Ilustración 27:Estación de metro en Madrid .............................................................................................. 46 Ilustración 28: Demanda tras pasar servicio 8. ........................................................................................... 49 Índice de Figuras 20 1 4 OBJETIVOS El objetivo principal de este proyecto es concreto: Proponer un mecanismo de solución a la aglomeración en las distintas estaciones de una línea urbana o metropolitana de ferrocarril (cercanías o metro) que resulte fácil de aplicar y de implementar. En primer lugar, evitar estas aglomeraciones permitirá que las estaciones no superen su aforo máximo y previsiblemente que tampoco se alcance un valor cercano al máximo. Acumulaciones cercanas a estos valores máximos presentan muchos inconvenientes a nivel de seguridad (piénsese en lo que ocurre en estaciones de metro en líneas altamente congestionadas en megalópilis como Tokyo) y por tanto mantener niveles de congestión lejanos a estos valores máximos ser una prioridad en el modelo propuesto. El mecanismo propuesto consiste en controlar el acceso de pasajeros a los andenes en función de la capacidad disponible y variable de los trenes a lo largo de la línea. La capacidad variable se consigue mediante la reserva de vagones en las primeras estaciones de la línea. Los vagones reservados van siendo liberados a medida que el tren se acerca a estaciones con mayor demanda, reduciendo de esta forma los tiempos medios de espera en las estaciones con mayor número de usuarios y evitando, al disponer de mayor capacidad, que se produzcan enormes congestiones en estas estaciones como consecuencia de que los vagones se han llenbado de usuarios en estaciones precedentes. En segundo lugar, una vez se hayan conseguido unos niveles de congestión razonables, podemos proponernos un objetivo más ambicioso: Disminuir la cantidad de pasajeros que esperan en cada estación, lo que no solo aumentará la eficiencia de la línea de tren, sino que también aumentará la satisfacción de los usuarios. Objetivos 2 3 5 INTRODUCCIÓN l número de habitantes en este mundo está creciendo rápidamente. Se estima que en 2050 la población mundial habrá llegado a los 10.000 millones de habitantes (Roser, 2013) Además, desde el comienzo de la industrialización, la población que está trasladándose a vivir en grandes ciudades no para de crecer. A día de hoy, alrededor del 50% de la población mundial vive en ciudades de más de 300.000 habitantes y se estima que ese número alcanzará el 70% en el año 2050. (Montañés, 2018) Ilustración 1. Aumento de población en áreas urbanas (Fuente: UN World Urbanization Prospects) Este último año se ha puesto de manifiesto la importancia de evitar aglomeraciones. La pandemia global seguramente traerá como consecuencia que la distancia social sea una prioridad en el futuro. En estas grandes ciudades, son típicas las aglomeraciones en el transporte público y en las estaciones durante las horas punta. Según varios estudios como (Shi, et al., 2020)la relación entre el número de casos por COVID19 y el número de pasajeros en trenes está estrechamente relacionado. Algo que, según este estudio, no ocurre con el transporte en avión y coche. E Introducción 4 Otro aspecto a tener en cuenta es el cambio climático. El cambio climático es una realidad y existen diversos campos en los que se esperan grandes cambios en los próximos años. Entre ellos está la ganadería, la moda o el transporte. El transporte es responsable del 26% de las emisiones de gases de efecto invernadero a nivel mundial. En concreto, los automóviles particulares contribuyen con un 18% del total (Chapman, 2007). El problema con los automóviles particulares no sólo acaba ahí. Fabricar un coche particular tiene un proceso muy costoso tanto a nivel de materia prima como de impacto medioambiental. Como hemos dicho anteriormente, la población mundial crece y en concreto en las grandes ciudades. Que todos los habitantes tengan coche propio puede ser insostenible en un futuro cercano. Para que un ciudadano no sienta la necesidad de comprarse un automóvil se antoja clave mejorar el transporte público, tanto para largas distancias como a nivel urbano e interurbano. En muchas ciudades como Madrid con la Normativa de Zona de Bajas Emisiones (El País, 2021) se están promoviendo leyes que incentivan a los ciudadanos a usar el transporte público. En los últimos meses ha aparecido un nuevo factor que podría frenar el aumento de ciudadanos que usan el transporte público cada día: el teletrabajo. Sin embargo, las estadísticas nos siguen mostrando que la cantidad de personas que viajan en metro y tren es inmensa. A nivel infraestructural la industria ferrovial; interurbana, nacional e internacional, debe mejorar para que la transición al transporte urbano sea lo más llevadera posible para los ciudadanos. Además, el uso de estrategias que ayuden a mejorar el flujo de pasajeros, la seguridad de estos y optimicen el servicio público pueden ser igualmente importantes. Este trabajo analiza una de estas estrategias: El modelo propuesto intentará abordar los problemas ocasionados por la aglomeración de pasajeros en las estaciones de líneas de ferrocarril de tránsito rápido en grandes redes del mundo a través de una idea, a priori, fácil de implementar. 5 6 REVISIÓN DE LA LITERATURA or todos los motivos que hemos expuesto hasta ahora, en los últimos años se han publicado numerosos estudios cuyo objetivo era atajar la congestión en estaciones de tren y metro de grandes ciudades. Cada uno de estos estudios ha usado un enfoque diferente. Sin embargo, se pueden agrupar en 3 grandes grupos: 1. Optimización de los horarios de servicios para que se adapten a la demanda. Se ha demostrado que la optimización de horarios es una forma muy efectiva de controlar la demanda y evitar aglomeraciones. Para dar con el horario correcto se han usado varos métodos. Por ejemplo, en el estudio de (Canca, et al., 2014)se construye un horario de trenes adaptado a una demanda de pasajeros dinámica. En él se estudia la línea C5 de la estación de metro de la ciudad de Madrid. La demanda se presenta como una variable continua en función del tiempo con ciertas horas punta a lo largo del día. El horario de cada tren se basa en las aproximaciones de la demanda mediante una serie de variables y restricciones específicas. Otro estudio que merece la pena mencionar sería el estudio de (Barrena, et al., 2014). Como en el anterior estudio mencionado, se tiene en cuenta una demanda de pasajeros dinámica. Después de analizar todas las variables y propiedades del problema, se implementa un método de algoritmo genético. Se consigue reducir el tiempo de espera de pasajeros en un 26% si se compara con el uso de métodos como el algoritmo Branchand-Cut. Otro estudio enfocado en el diseño de horarios es el de (Niu & Zhou, 2013). Basándose en un registro dependiente del tiempo de viajes con origen y destino conocido, Niu desarrolla un modelo de optimización no lineal para obtener horarios óptimos. La última hora de llegada de los pasajeros a bordo es usada para calcular periodos de tiempo de espera que puedan ser efectivos. El modelo se resuelve con un algoritmo genético al igual que en (Barrena, et al., 2014). He de destacar estudios cuyo enfoque está más dirigido a congestiones ocurridas por una emergencia. Aparte de las aglomeraciones que pueden producirse durante una hora punta en una jornada laboral común, también pueden ocurrir situaciones como accidentes o retrasos de trenes que provoquen una gran acumulación de pasajeros. P Descripción del modelo 14 14 2. Congestión: Los pasajeros se acumularán en la zona de espera de la estación siguiente. Esto, además de resultar incómodo, pueden provocar situaciones de peligro e inseguridad si el número de pasajeros es muy alto. Además, como hemos comentado en la introducción hará difícil mantener la distancia de seguridad. Hipótesis 7.1.1 Hipótesis 1 Con el objetivo de poder simplificar cálculos hemos incluido una serie de hipótesis que no deberían influir en el desarrollo del problema: Las estaciones de origen y destino de cada pasajero serán conocidas, así como su tiempo de llegada. No contemplaremos la posibilidad de que un pasajero cambie de estación de destino durante el trayecto. 7.1.2 Hipótesis 2 Los grupos de pasajeros se suponen perfectamente mezclados. Esto supone que la proporción de pasajeros esperando con destino a la estación ‘k’ será exactamente igual a la proporción de pasajeros que se suben a bordo con destino a la estación ‘k’, para un tren y una estación dada. En el gráfico a continuación podemos comprender fácilmente esta suposición. Se trata de un tren con capacidad para 4 personas, al que están a punto de montarse 8 personas. Estas 8 personas están divididas en 4 grupos, cada grupo con destino a una estación diferente. Debido a que sólo caben 4 personas, habrá 4 que suban al tren y 4 que tengan que esperar en la estación. La proporción de las estaciones de destino entre los pasajeros esperando y entre los pasajeros que suben a bordo es la misma. Esto es lo que implica nuestra suposición. Illustración 1: 2ª suposición 15 7.1.3 Hipótesis 3. La demanda total de pasajeros es menor que la capacidad total de los trenes, para poder garantizar que todos los pasajeros puedan realizar su viaje. Datos requeridos Para poder resolver el modelo matemático necesitaremos un conjunto de datos que permitirán formular de forma consistente todas las restricciones. Estos datos se refieren a la información relacionada tanto con los horarios de los distintos servicios como con el flujo de pasajeros a lo largo de la línea. Sin embargo, habrá otros muchos datos que serán totalmente arbitrarios. Estos datos nos serán útiles para modelar ciertas restricciones, además de sernos útiles a la hora de valorar la importancia de cada parámetro. Todos los datos que usaremos en el entorno Python/GUROBI serán extraídos de un archivo Excel. Este archivo Excel contendrá tanto datos unitarios (parámetros del modelo) como diversas tablas que proporcionan información de horarios y flujo de pasajeros. 7.1.3.1 Conjuntos En primer lugar, como hemos detallado en la introducción del modelo, necesitaremos una serie de conjuntos que recorreremos en Python, para modelar nuestras restricciones. Estos conjuntos serán: P, que consistirá en los grupos de pasajeros que llegan a una hora determinada a cada una de las estaciones. S, que contiene todas las estaciones desde la 1ª hasta la última en la dirección seleccionada. Además tendremos que declarar el conjunto I, que representará los diferentes servicios que recorren las distintas estaciones. Por último, el conjunto T se referirá al tiempo. Nuestro horizonte temporal contemplará una hora, dividiendo esta en períodos de minutos. 7.1.3.2 Parámetros Los distintos parámetros necesarios para formular el modelo son: np : Se refiere al número de pasajeros en un grupo 𝑝∈ 𝑃 . Descripción del modelo 16 16 𝑜 : La estación de origen de un grupo de pasajeros 𝑝∈ 𝑃. 𝑡 : La hora de llegada del grupo de pasajeros del grupo 𝑝∈ 𝑃, a la estación de origen 𝑜 . 𝑑 : La estación de destino del grupo de pasajeros 𝑝. La Tabla 1 muestra la forma que que estos datos se estructuran en el libro de Excel que contiene los datos del problema. Tabla 1: 𝑛,𝑑,𝑜,𝑡 representados en Excel Estos datos se obtendrán directamente de la demanda. Esta demanda se representa en una matriz distribuida de acuerdo con el trayecto realizado (origen, destino) y el instante de tiempo dentro del horizonte de planificación. Tabla 2: Demanda en los primeros 5 minutos 17 La notación correspondiente a estos datos y otros parámetros que se usará en la formulaciñon del problema se muestra a continuación. 𝑑 : La hora de salida de un determinado servicio 𝑖 desde la estación. 𝐻 : El máximo aforo permitido en una determinada estación 𝑘. 𝑈 : El máximo número de pasajeros esperando que se considere seguro en una determinada estación 𝑘. 𝛷: Usaremos esta variable en la función a minimizar. Será el coeficiente de riesgo de acumulación de pasajeros. 𝛩, 𝛩 : Pesos de los 2 componentes de la función objetivo, el riesgo de aglomeración de pasajeros 𝑟 y el número de pasajeros esperando 𝑤. Ver sección 7.1.3.4. 𝑀 positivo muy grande. 𝑛: Número máximo de vagones reservables. 𝑄: Número total de vagones en cada tren. 𝐶: Capacidad de cada vagón. Después de definir los distintos datos necesarios pasamos a definir las variables de decisión del modelo. En realidad, la única variable de decisión real será el número de vagones reservados por cada tren y estación. El resto de las variables dependerán directamente de esta decisión. El número de vagones lo definiremos como 𝑛 refiriéndonos al número de vagones reservados en un servicio 𝑖 a la salida de cierta estación 𝑘. A partir del número de vagones que reservamos en cada tren y estación, aparecerán distintas variables intermedias que serán relevantes sobre todo en la función objetivo. La función objetivo tratará de minimizar tanto el riesgo de aglomeración de pasajeros en las distintas estaciones como el número de pasajeros esperando. Ambos términos aparecerán multiplicados por los parámetros 𝛩 y 𝛩definidos previamente. Por lo tanto, las variables que deberemos declarar son: 7.1.3.3 Variables de decisión 𝑛 : Serán las únicas variables realmente sujetas a decisión. Son números enteros que podemos definir como el número de vagones reservados en un el servicio 𝑖 al salir de la estación 𝑘. Descripción del modelo 18 18 7.1.3.4 Variables intermedias 𝑐 : Como hemos dicho con anterioridad, a partir de 𝑛 aparecerán distintas variables. La variable 𝑐 será en concreto la capacidad restante del tren que realiza el servicio 𝑖 a su llegada a la estación 𝑘. 𝑤 : Número de pasajeros esperando el servicio 𝑖 en la estación 𝑘. 𝑏: Número de pasajeros que se montan en el tren que realiza el servicio 𝑖 cuando llega a la estación 𝑘. 𝑎 : Número de pasajeros que bajan en la estación k desde el servicio 𝑖. 𝑣 : El número de pasajeros a bordo del tren que realiza el servicio 𝑖 cuando sale de la estación 𝑘. 𝑙 : Número de pasajeros que no han podido montarse en el tren que realiza el servicio 𝑖 y han sido dejados en tierra en la estación 𝑘. 𝑤 : En este caso haremos una nueva distinción relacionada con la estación de destino. 𝑤s será el número de pasajeros que esperan el servicio 𝑖 en la estación 𝑘, con destino a la estación 𝑠. 𝑙 : Al igual que con 𝑤,, 𝑙 será el número de pasajeros dejados en tierra por el servicio𝑖 en la estación 𝑘, cuyo destino era la estación 𝑠. 𝑤(𝑡) : El número de pasajeros que esperan en la estación 𝑘 a lo largo del tiempo. 𝑟(𝑡): El riesgo de aglomeración en la estación 𝑘 a lo largo del tiempo. 𝑤 : El número total de pasajeros que esperan en la estación k. 𝑟 : El valor total de riesgo de aglomeración en la estación k. Todas estas variables serán declaradas en Python mediante la función propia de GUROBI llamada addvar. Más adelante se darán detalles de cómo usaremos esta funcionalidad. 7.1.4 Restricciones Todos estos datos y variables nos servirán para desarrollar las restricciones necesarias para llevar a cabo el modelo. Mientras que la mayoría de las restricciones estarán relacionadas con darle forma y sentido al problema, habrá algunas que harán mención a las distintas hipótesis que planteamos con anterioridad. 7.1.4.1 Restricciones 1 0≤𝑛≤𝑛á, ∀𝑖∈𝐼,𝑘∈𝑆 El primer conjunto de restricciones hace referencia al número de vagones que podemos reservar. Para evitar que se reserven un número insostenible de vagones, hemos declarado el parámetro 𝑛. En esta restricción 19 simplemente limitamos el número de vagones que pueden ser reservados en cada servicio 𝑖 al salir de la estación 𝑘 a un valor máximo 𝑛. 7.1.4.2 Restricciones 2 𝑛≥𝑛,,∀𝑖∈𝐼,𝑘,𝑘+1∈𝑆 El segundo conjunto de restricciones fuerza que el número de vagones reservados en un tren a la salida de una cierta estación sea igual o menor al número de vagones reservados que en la estación anterior. Es decir, el número de vagones que se reservan en un cierto tren van disminuyendo conforme este circula por las distintas estaciones. El objetivo del modelo consiste en evitar la aglomeración de pasajeros en ciertas estaciones. Para ello, se reservan vagones en estaciones previas, permitiendo así que pasajeros en estaciones posteriores puedan subirse a bordo. Por este motivo, el el número de vagones reservados irá disminuyendo conforme el tren haga su recorrido, abriendo estos vagones al público para disminuir el número de pasajeros esperando. 7.1.4.3 Restricciones 3 𝑣=𝑏 𝑠𝑖 𝑘=1 𝑣−𝑎,+ 𝑏 𝑒𝑛 𝑐𝑢𝑎𝑙𝑞𝑢𝑖𝑒𝑟 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜 , ∀𝑖∈𝐼,𝑘∈𝑆 En esta restricción nos encontramos con variables intermedias, es decir, variables que son necesarias para desarrollar el modelo pero que no constituyen la decisión principal Este conjunto de restricciónes hace referencia al número de pasajeros a bordo del tren que realiza el servicio 𝑖 al salir de la estación 𝑘. Puede ser explicado de forma muy sencilla si se trata de la primera estación del recorrido: El número de pasajeros a bordo del tren serán todos aquellos que se monten en él. Si, por el contrario, se trata de una estación superior tendremos que añadir todos aquellos pasajeros que estaban previamente a bordo (los que venían en el tren desde la estación anterior 𝑘−1) y restar todos aquellos que bajen del tren en dicha estación. 7.1.4.4 Restricciones 4 Descripción del modelo 20 20 𝑤= ⎩ ⎪ ⎨ ⎪ ⎧  𝑛 ∈󰇥𝑝󰆒∈𝑃󰇻𝑜󰆓=𝑘,0≤𝑡󰆓≤𝑑󰇦 𝑠𝑖 𝑖=1 𝑙,+  𝑛 ∈󰇥𝑝󰆒∈𝑃󰇻𝑜󰆓=𝑘,𝑑,≤𝑡󰆓≤𝑑󰇦 𝑠𝑖 𝑖≠1 ∀𝑖∈𝐼,𝑘∈𝑆,𝑝∈𝑃 Al igual que en el conjunto anterior de restricciones, el conjunto 4 estará formado únicamente por variables intermedias. En este caso las restricciones hacen referencia al número de pasajeros que están esperando un determinado servicio 𝑖 en la estación 𝑘. Este número será igual a la cantidad de pasajeros que no han podido subirse en el tren anterior (por falta de espacio) más los pasajeros que llegaron a la estación 𝑘 después de que el anterior tren partiera. En el primer tren, obviamente, el número de pasajeros dejados en tierra anteriormente será igual a 0. En cuanto a la sumatoria de pasajeros, deberemos de tener en cuenta varias condiciones. La primera de ellas especifica que el origen del grupo de pasajeros 𝑝 debe de ser la estación 𝑘. Por último, la hora de llegada del grupo de pasajeros debe de ser posterior al instante en que el servicio 𝑖−1 llega la estación 𝑘 y, además, anterior a la hora de llegada del servicio 𝑖. 7.1.4.5 Restricciones 5 𝑤,,= ⎩ ⎪ ⎨ ⎪ ⎧  𝑛 ∈{󰆒∈|󰆓,󰆓} 𝑠𝑖 𝑖=1 𝑙,,+  𝑛 𝑠𝑖 𝑖≠1 ∈{󰆒∈|󰆓,,󰆓} ∀𝑖∈𝐼,∀𝑘,𝑠∈𝑆,𝑘<𝑠 El conjunto de restricciones 5 y 4 están muy relacionadas, ya que en esta ocasión queremos calcular el número de pasajeros esperando al servicio 𝑖 en la estación 𝑘, cuyo destino es la estación 𝑠. Es por ello que la restricción será prácticamente igual. Variará únicamente que los pasajeros que no han podido subirse en el anterior tren, deben además tener como destino la estación 𝑠. 7.1.4.6 Restricciones 6 𝑐,=󰇫 (𝑄−𝑛)× 𝐶 𝑠𝑖 𝑘=1 (𝑄−𝑛)×𝐶−𝑣,−𝑎, 𝑠𝑖 𝑘≠1 ∀𝑘∈𝑆,∀𝑖∈𝐼 En este conjunto de restricciones calcularemos la capacidad restante de cada servicio 𝑖 al llegar a la estación 𝑘. En este caso, usaremos la variable de decisión 𝑛 pues la capacidad dependerá en gran medida del número de vagones disponibles y reservados. 21 La capacidad será igual al número de vagones que no están reservados multiplicado por la capacidad 𝐶 de cada vagón en el caso de la estación 1. Si se trata de la segunda estación en adelante habrá que sumarle además la diferencia entre los pasajeros que abandonan el tren que realiza el servicio 𝑖 en la estación 𝑘 y los que se habian subido a bordo en la estación anterior. 7.1.4.7 Restricciones 7 𝑏,=𝑚𝑖𝑛{𝑐,𝑤}, ∀𝑖∈𝐼,∀𝑘∈𝑆 El conjunto de restricciones siete permite calcular de forma sencilla el número de pasajeros que pueden subir a bordo en el servicio 𝑖 al llegar a la estación 𝑘. Dependerá de la capacidad del tren a llegar a la estación 𝑘 y del número de pasajeros esperando el servicio 𝑖, siendo 𝑏 el mínimo entre estas dos cantidades. 7.1.4.8 Restricciones 8 𝑙=𝑤−𝑏 , ∀𝑖∈𝐼,𝑘∈𝑆 Las restricciones número ocho muestran el número de pasajeros que son dejados en tierra por el servicio 𝑖 en la estación 𝑘. Lógicamente, este número será la diferencia entre el número de pasajeros esperando el servicio 𝑖 en la estación 𝑘 y los que tienen la oportunidad de montarse en el tren que realiza el servicio. 7.1.4.9 Restricciones 9 𝑏=𝑤 𝑤×𝑏, ∀𝑖∈𝐼,𝑘,𝑠∈𝑆,𝑘<𝑠 Las restricciones número nueve están estrechamente relacionadas con una de las hipótesis planteadas con anterioridad, en concreto la Hipótesis 2. Según esta hipótesis, la proporción entre el total de pasajeros esperando en una estación y los pasajeros esperando con un cierto destino será la proporción que se aplica a los pasajeros que suben al tren que realiza el servicio. 7.1.4.10 Restricciones 10 𝑙=𝑤−𝑏, ∀𝑖∈𝐼,∀𝑘,𝑠∈𝑆,𝑘<𝑠 Descripción del modelo 22 22 El décimo conjunto de restricciones, al igual que el conjunto ocho de restricciones muestra el número de pasajeros dejados en tierra por el servicio n 𝑖 en la estación 𝑘. En este caso, sin embargo, también se especifica la estación de destino de estos pasajeros. 7.1.4.11 Restricciones 11 𝑎=  𝑏 ,∀𝑖∈𝐼,𝑘∈𝑆   En este caso, el conjunto de restricciones 11 muestra cómo calcular el número de pasajeros que se bajaran con la llegada del servicio 𝑖 a la estación 𝑘. Este número se puede calcular como la suma de todos aquellos que se montaron en este tren en una estación anterior, cuyo destino era la estación 𝑘. 7.1.4.12 Restricciones 12 𝑙||=0, ∀𝑘∈𝑆 𝑙|| hace referencia al número de pasajeros que no han podido acceder al último tren en la estación 𝑘. Uno de los requisitos que planteamos en este problema es que todos los pasajeros puedan subirse a bordo de algún tren y llegar a su destino. Debido a este requisito, el último tren no debería dejar a ningún pasajero en tierra. 7.1.4.13 Restricciones 13 𝑤(𝑡)=  𝑛−  𝑏, ∀𝑘∈𝑆,𝑡∈[0,𝑇] ∈{󰆒∈|󰆓∈{󰆒∈|󰆓,󰆓 w_k k(t) es una variable muy relevante en nuestro el modelo, pues se encuentra dentro de nuestra la función objetivo. En esta restricción, queremos especificar el número de pasajeros que estará esperando en una estación k a lo largo del tiempo. Para ello, debemos calcular la diferencia entre los pasajeros que han llegado a la estación (entendiendo esta como su estación de origen) antes del instante t y los que han tenido la oportunidad de subirse a bordo de algún tren, antes de t. Para ello, sumaremos todos los pasajeros cuya estación de origen sea k y cuyo horario de llegada sea anterior a t. A esto le restaremos la suma de todos aquellos pasajeros que hayan subido a bordo de un tren en la estación k, antes de t. 23 7.1.4.14 Restricciones 14 𝑟(𝑡)= ⎩ ⎨ ⎧ 0, 𝑠𝑖 0≤𝑤(𝑡)≤𝑈 𝑤(𝑡)−𝑈 𝐻−𝑈∙ 𝜀, 𝑠𝑖 𝑈<𝑤(𝑡)<𝐻 𝑀, 𝑠𝑖 𝑤(𝑡)≥𝐻, ∀𝑘∈𝑆,𝑡∈[0,𝑇] La otra variable relevante dentro de nuestra función objetivo sería el riesgo de aglomeración 𝑟(𝑡). Este riesgo será igual a 0 si no superamos el umbral de riesgo 𝑈 y un valor muy grande 𝑀 si superamos un valor que consideramos inaceptable como sería 𝐻. Para los valores que se encuentren entre estos 2, se propone una fórmula que hará el valor de 𝑟(𝑡) mayor conforme nos acerquemos a 𝐻. 7.1.4.15 Restricciones 15 𝑟=𝑟(𝑡)𝑑𝑡, ∀𝑘∈𝑆   Integrando 𝑟(𝑡) podemos calcular el área de esta función, que es una forma mucho más efectiva y clara de comprobar el riesgo que se corre a lo largo del tiempo, en una estación 𝑘 determinada. Gráfico 2:Ejemplo de riesgo de aglomeración Como podemos ver en el gráfico superior, puede ocurrir que el riesgo de aglomeración en una cierta estación varíe de manera continua. Por ejemplo, una estación de metro puede estar relativamente tranquila Riesgo a lo largo del tiempo Descripción del modelo 30 30 3) 𝑣  =  𝑏  𝑠𝑖 𝑘 = 1 𝑣    − 𝑎  + 𝑏  𝑒𝑛 𝑐𝑢𝑎𝑙𝑞𝑢𝑖𝑒𝑟 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜 , ∀ 𝑖 ∈ 𝐼 , 𝑘 ∈ 𝑆 4) 𝑤= ⎩ ⎪ ⎨ ⎪ ⎧  𝑛  ∈󰇥 𝑝 󰆒 ∈ 𝑃 󰇻 𝑜 󰆓 = 𝑘 , 0 ≤ 𝑡 󰆓 ≤ 𝑑 ,󰇦 ∀ 𝑖 = 1 𝑙,+  𝑛  ∈ 󰇥 𝑝 󰆒 ∈ 𝑃 󰇻 𝑜  󰆓 = 𝑘 , 𝑑    ,  ≤ 𝑡  󰆓 ≤ 𝑑  ,  󰇦 ∀𝑖≠1 , ∀𝑖∈𝐼,𝑘∈𝑆,𝑝∈𝑃 5) 𝑤= ⎩ ⎪ ⎨ ⎪ ⎧  𝑛  ∈󰇥 𝑝 󰆒 ∈ 𝑃 󰇻 𝑜 󰆓 = 𝑘 , 0 ≤ 𝑡 󰆓 ≤ 𝑑 󰇦 𝑠𝑖 𝑖 = 1 𝑙,,+  𝑛 𝑠𝑖 𝑖≠1  ∈ 󰇥 𝑝 󰆒 ∈ 𝑃 󰇻 𝑜  󰆓 = 𝑘 , 𝑑    ,  ≤ 𝑡  󰆓 ≤ 𝑑  󰇦 , ∀𝑖∈𝐼,∀𝑘,𝑠∈𝑆,𝑘<𝑠 6) 𝑐  = 󰇫 ( 𝑄 − 𝑛  ) × 𝐶 𝑠𝑖 𝑘 = 1 ( 𝑄 − 𝑛  ) × 𝐶 −  𝑣  ,    − 𝑎   , 𝑠𝑖 𝑘 ≠ 1 , ∀ 𝑘 ∈ 𝑆 , ∀ 𝑖 ∈ 𝐼 7) 𝑏  = min { 𝑐  , 𝑤  } , ∀ 𝑖 ∈ 𝐼 , ∀ 𝑘 ∈ 𝑆 8) 𝑙  = 𝑤  − 𝑏  , ∀ 𝑖 ∈ 𝐼 , 𝑘 ∈ 𝑆 9) 𝑏  = 𝑤  𝑤  × 𝑏  , ∀ 𝑖 ∈ 𝐼 , 𝑘 , 𝑠 ∈ 𝑆 , 𝑘 < 𝑠 10) 𝑙  = 𝑤  − 𝑏  , ∀ 𝑖 ∈ 𝐼 , ∀ 𝑘 , 𝑠 ∈ 𝑆 , 𝑘 < 𝑠 11) 𝑎  =  𝑏  ,       ∀ 𝑖 ∈ 𝐼 , 𝑘 ∈ 𝑆 12) 𝑙 |  |  = 0 , ∀ 𝑘 ∈ 𝑆 13) 𝑤  ( 𝑡 ) =  𝑛  −  𝑏  ,  ∈ {  󰆒 ∈  |   󰆓 ,     ∈ {  󰆒 ∈  |   󰆓   ,     󰆓   ∀ 𝑘 ∈ 𝑆 , 𝑡 ∈ [ 0 , 𝑇 ] 14) 𝑟  ( 𝑡 ) = ⎩ ⎨ ⎧ 0 , 𝑠𝑖 0 ≤ 𝑤  ( 𝑡 ) ≤ 𝑈  𝑤  ( 𝑡 ) − 𝑈  𝐻  − 𝑈  ∙ 𝜀 , 𝑠𝑖 𝑈  < 𝑤  ( 𝑡 ) < 𝐻  𝑀 , 𝑠𝑖 𝑤  ( 𝑡 ) ≥ 𝐻  , ∀𝑘∈𝑆,𝑡∈[0,𝑇] 15) 𝑟  =  𝑟  ( 𝑡 ) 𝑑𝑡 ,   ∀ 𝑘 ∈ 𝑆 16) 𝑤  =  𝑤  ( 𝑡 ) 𝑑𝑡 ,   ∀ 𝑘 ∈ 𝑆 31 Este sería el modelo al completo que nos disponemos a resolver. Para desarrollar tanto las restricciones como la función objetivo, se ha usado Python y funciones propias de la librería de GUROBI, como addVar o addConstr. Con la función addVar se podrá declarar todas las variables necesarias para resolver el problema. En cuanto a la función addConstr, nos permitirá desarrollar todas las restricciones anteriormente explicadas. Los datos previos e información necesaria estarán recogidos en un archivo Excel. En este archivo se encontrarán tanto los horarios de los distintos trenes, como otra serie de datos relevantes para nuestro problema (número de vagones en cada tren, capacidad de cada vagón…) Para poder usar estos datos dentro de nuestro modelo en Python, se usará la librería openpyxl, con la que se podrán leer todos los datos provenientes de un archivo Excel. Descripción del modelo 32 32 33 8 IMPLEMENTACIÓN EN PYTHON Y GUROBI En primer lugar, se hablará de la lectura de datos provenientes de Excel. De este archivo Excel se leerán datos unitarios, en formato lista y por último en formato matriz. Para ello se importarán 2 librerías: Ilustración 6:Librerías usadas en Python La segunda de ellas se trata de un código que nos permite leer datos de Excel en formato lista y matriz. Por ejemplo, para leer una matriz de Excel en Python se usaría la siguiente función: Ilustración 7: IOFunctionsExcel en Python Implementación en Python y Gurobi 34 34 Para después en el código principal usarse de la siguiente manera: Ilustración 8:Uso de IOFunctionsExcel Donde d será 𝑑 y la matriz B2:J10 de la hoja Horario será el horario que siguen estos trenes en las distintas estaciones: Tabla 3: Horario del servicio Una vez todos los datos necesarios han sido llamados, se declaran las variables de decisión e intermedias del modelo. Para ello se usará la fórmula addvar: 35 Ilustración 9:Variables declaradas en Python Para construir las restricciones de nuestro problema se usará addConstr. A continuación, se mostrará cómo se han desarrollado las 16 restricciones: 1) 0≤𝑛≤𝑛á,∀𝑖∈𝐼,𝑘∈𝑆 Ilustración 10:Restricciones 1 en Python En este caso no haría falta desarrollar la Restricciones pues se puede especificar el límite superior cuando se añade la variable con ub=nmax. 2) 𝑛≥𝑛,,∀𝑖∈𝐼,𝑘,𝑘+1∈𝑆 Ilustración 11:Restricciones 2 en Python Implementación en Python y Gurobi 36 36 3) 𝑣=𝑏 𝑠𝑖 𝑘=1 𝑣,−𝑎+ 𝑏 𝑒𝑛 𝑐𝑢𝑎𝑙𝑞𝑢𝑖𝑒𝑟 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜 , ∀𝑖∈𝐼,𝑘∈𝑆 Ilustración 12:Restricciones 3 en Python 4) 𝑤=󰇱∑𝑛 ∈󰇥𝑝󰆒∈𝑃󰇻𝑜󰆓=𝑘,0≤𝑡󰆓≤𝑑󰇦 ∀𝑖=1 𝑙,+ ∑𝑛 ∈󰇥𝑝󰆒∈𝑃󰇻𝑜󰆓=𝑘,𝑑,≤𝑡󰆓≤𝑑󰇦 ∀𝑖≠1 ∀𝑖∈𝐼,𝑘∈𝑆,𝑝∈𝑃 5) 𝑤=󰇫∑𝑛∈{󰆒∈|󰆓,󰆓} 𝑠𝑖 𝑖=1 𝑙,,+ ∑𝑛 𝑠𝑖 𝑖≠1 ∈{󰆒∈|󰆓,,󰆓} ∀𝑖∈𝐼,∀𝑘,𝑠∈𝑆,𝑘<𝑠 Ilustración 13: Restricciones 5 en Python Como se puede apreciar en la imagen superior, para programar la 5ª restricción se debe crear una variable numpy llegadas. Esta variable será una matriz tridimensional de tamaño IxSxS. 37 En cada una de las posiciones de esta matriz se guarda el número de pasajeros con dirección estación s que llegan a una estación k desde que sale el tren anterior i-1 hasta que llega el tren i. En el caso de ser el primer tren, este sería igual a 𝑤 y a partir del segundo tren se tendría que sumar, además, los pasajeros que no pueden montarse en el tren anterior. También se aclara la relación entre 𝑤y 𝑤 así como con b y l. Esto hace que no sea ncesario desarrollar la restricción 4, pues ya quedaría desarrollada en la restricción 5. Ilustración 14:Relación entre 𝑖,𝑘,𝑠 y 𝑖,𝑘 en Python 6) 𝑐=󰇫 (𝑄−𝑛)× 𝐶 𝑠𝑖 𝑘=1 (𝑄−𝑛)×𝐶−𝑣,−𝑎, 𝑠𝑖 𝑘≠1 ∀𝑘∈𝑆,∀𝑖∈𝐼 Ilustración 15:Restricciones 6 en Python Implementación en Python y Gurobi 38 38 7) 𝑏=min{𝑐,𝑤}, ∀𝑖∈𝐼,∀𝑘∈𝑆 En este caso, GUROBI tiene una función min_ que permite escribir la restricción 7 de forma muy sencilla. De no haber sido así, la restricción hubiera sido no lineal y habría que desarrollarla de forma diferente. Ilustración 16:Restricciones 7 en Python 8) 𝑙=𝑤−𝑏 , ∀𝑖∈𝐼,𝑘∈𝑆 Ilustración 17:Restricciones 8 en Python 9) 𝑏=  ×𝑏, ∀𝑖∈𝐼,𝑘,𝑠∈𝑆,𝑘<𝑠 Esta restricción, como se ha comentado anteriormente, sería no lineal y deberá ser desarrollada de forma diferente. Habrá que crear una variable Gurobi llamada X con un valor entre 0 y 1. ⎩ ⎪ ⎪ ⎨ ⎪ ⎪ ⎧ 𝑋   =1 ∀𝑖∈𝐼,∀𝑘∈𝑆 𝑌   =1 ∀𝑖∈𝐼,∀𝑘∈𝑆 𝑤=𝑋∙𝑤 ,𝑖∈𝐼,𝑘,𝑠∈𝑆,𝑠>𝑘 𝑏=𝑌∙𝑏 ,𝑖∈𝐼,𝑘,𝑠∈𝑆,𝑠>𝑘 39 Ilustración 18:Restricciones 9 en Python 10) 𝑙=𝑤−𝑏, ∀𝑖∈𝐼,∀𝑘,𝑠∈𝑆,𝑘<𝑠 Ilustración 19::Restricciones 10 en Python 11) 𝑎= ∑𝑏 ,∀𝑖∈𝐼,𝑘∈𝑆   Ilustración 20:Restricciones 11 en Python 12) 𝑙||=0, ∀𝑘∈𝑆 Caso de estudio 46 46 Aun así, si nos referimos únicamente a la zona en la que se espera la llegada del subterráneo, la capacidad no suele variar mucho de una estación a otra. Ilustración 27:Estación de metro en Madrid Por esta razón, en los distintos experimentos tanto 𝐻 como 𝑈 se considerarán iguales para todas las estaciones. Por último, habrá varios varios datos unitarios cuyo valor puede cambiar mucho el desarrollo del modelo. Estos datos estarán recogidos en una hoja llamada “DATOS” y podremos modelarlos para simular distintas situaciones. Tabla 8:Datos prefijados 𝑛 (número máximo de vagones a reservar) y 𝑄 (número de vagones) estarán muy relacionados, ya que aumentar el número de vagones por tren dará la posibilidad de aumentar, como es lógico, el máximo número de vagones que se pueden reservar. 47 Otros valores como 𝜀 o 𝜃 dependerán del peso y la importancia que se le dé a parámetros muy importantes de la función objetivo y las restricciones. Dependiendo del objetivo del modelo estos parámetros tomarán unos valores u otros. El modelo puede buscar simplemente disminuir el riesgo de aglomeración para mejorar la seguridad de las estaciones. Si, por el contrario, la motivación del problema es liberar las estaciones con el fin de cumplir distancias de seguridad, reducir tiempos de espera y aumentar la eficiencia de las estaciones de metro estos valores deberán ser mucho más ambiciosos. Caso de estudio 48 48 49 10 EXPERIMENTACIÓN A continuación, se modificarán los datos explicados anteriormente (demanda, capacidad de trenes…) buscando resultados que aporten valor y que nos ayuden a comprender la eficacia del sistema. Demanda Para decidir tanto la demanda como la capacidad de los trenes se observará la red de metro de una gran ciudad como Londres. Esta demanda será nula en el momento en que el último tren de nuestro modelo pase por cada estación 𝑘, pues suponemos que esa demanda será satisfecha por los trenes siguientes. Ilustración 28: Demanda tras pasar servicio 8. Experimentación 50 50 La cantidad de pasajeros estará condicionada por un factor de escala. A continuación, se estudiará cuánto debe valer este factor de escala para que el modelo se aproxime lo máximo posible a la realidad. Tomando como referencia la estación 1, aproximadamente 7500 pasajeros parten desde la estación 1 durante los 60 minutos que se tienen de horizonte temporal con un factor de escala 1. Pero, ¿Es este valor lógico y proporcional al número de servicios de nuestro modelo? Para poder responder a esta pregunta se puede observar el flujo de pasajeros en diversas estaciones de Londres. Según datos del ayuntamiento de Londres (referencia), la demanda diaria de pasajeros en sus estaciones varía desde 5.000 pasajeros en estaciones de extrarradio como Queens, hasta superar los 100.000 pasajeros en la estación de London Bridge. Si se usa como referencia una estación con un alto flujo de pasajeros como esta última, la estación London Bridge tuvo un flujo de pasajeros diario de 113.606 en el año 2017. Este número dividido entre las 19h en las que el metro londinense está funcionando serían unos 6.000 pasajeros por hora. No obstante, este valor debe ser modificado por varias razones:  El modelo busca reducir los tiempos de espera en hora punta. El flujo de pasajeros en una ciudad es muy diferente a las 08:00am y por ejemplo, a las 22:00pm.  El modelo contempla una sola línea de metro. Estaciones grandes, como la que se están estudiando, suelen albergar más de una línea de metro. La estación London Bridge, por ejemplo, tiene un total de 16 andenes. Está conectado a 2 líneas de metro, Northern Line y Jubilee Line, y a otras tantas líneas de tren a nivel nacional. Dado que la gran mayoría de andenes estén destinados a viajes nacionales resulta dificil saber cuántos usuarios usan la línea de metro diariamente. Por otro lado, se observa la estación King’s Cross-Saint Pancras, en Camden (Transport For London, 2017). Esta estación tuvo un flujo de pasajeros diario de 149.150 personas, y alberga hasta 6 líneas de metro. 51 Este número de pasajeros dividido entre las 6 líneas de metro, y las 19 horas en las que el metro se encuentra activo nos da una media de 1308 pasajeros por hora y línea. Aunque este número deba ser mucho mayor si se trata de una hora concurrida, se puede concluir con total seguridad que el factor de escala 1 de nuestro modelo es demasiado alto. Con un factor de escala de 0.6 la demanda en la estación 1 para una hora rondaría los 3000 pasajeros. Un valor que se acerca más a la realidad que se quiere representar. Otro aspecto importante a decidir es la capacidad de cada tren. Para ello también el modelo de Londres servirá de gran ayuda. En Londres hay distintos tipos de trenes y todos ellos rondan las 1100 personas de capacidad. Considerando que esta capacidad es orientativa y que en numerosas ocasiones se supera, el máximo será 1200 personas. Esta capacidad estará dividida en 6 vagones de 200 pasajeros cada uno. Definición de experimentos Hay dos objetivos mínimos que deben conseguirse a través de la experimentación: 1. Hk, la capacidad de una estación k, nunca debe de ser superada. Esto dispararía el valor de la función objetivo y a nivel práctico, comprometería la seguridad de los pasajeros. 2. De forma ideal nos gustaría que toda la demanda fuera satisfecha. Sin embargo, esto dependerá de la relación entre capacidad y demanda total. 10.1.1 Primera experimentación Tabla 9: Datos iniciales para la 1ª experimentación Experimentación 52 52 Para la primera experimentación los datos que se usarán serán los mencionados arriba. Serán datos estándar pues se le dará la misma importancia tanto al riesgo de aglomeración como a la espera (véase 𝜃 y 𝜃) y el factor de escala 0.6 dará una demanda que se acerca a la realidad que se quiere representar. En este primer experimento no se podrán reservar vagones, simulando una situación en la que el modelo no surtiría efecto. De esta manera se comprobará el efecto de reservar vagones para una demanda con un factor de escala 0,6. Los resultados para este caso son los siguientes: Valor Función Objetivo: 𝜽𝟏∙∑𝒘𝒌+ 𝜽𝟐∙ ∑𝒓𝒌 𝒌𝝐𝑺𝒌∈𝑺 = 22.349 Este valor tan alto se debe a que el valor de riesgo de aglomeración máximo se ha superado en varias ocasiones. Tabla 10:Riesgo de aglomeración en 1ª experimentación Gráfico 4:Riesgo de aglomeración en 1ª experimentación RIESGO DE AGLOMERACIÓN Estación 1 Estación 2 Estación 3 Estación 4 Estación 5 Estación 6 Estación 7 Estación 8 Tren 1 0 0 0 0 0 0 0 0 Tren 2 0 0 0 0 0 0 0 0 Tren 3 0 14 25 42 8 0 0 0 Tren 4 96 36 45 94 3 0 0 0 Tren 5 20 45 72 200 0 0 0 0 Tren 6 2 0 71 83 0 0 0 0 Tren 7 35 0 12 65 0 0 0 0 Tren 8 13 6 18 200 3 0 0 0 53 Cuando el número de pasajeros esperando supera el valor de 1000 personas, que es el valor elegido como riesgo máximo, el riesgo de aglomeración toma el valor de M=200. Para un factor de escala de 0,6 la acumulación de pasajeros es la siguiente: Tabla 11:Flujo de pasajeros en 1ª experimentación Gráfico 5 :Flujo de pasajeros en 1ª experimentación Como se puede imaginar por el valor que adquiere la función objetivo, no sobrepasar este umbral máximo es una prioridad para el modelo. En el siguiente experimento se comprobará si la reserva de vagones consigue paliar esta sobrecarga de pasajeros y disminuir significativamente la función objetivo. PASAJEROS ESPERANDO Estación 1 Estación 2 Estación 3 Estación 4 Estación 5 Estación 6 Estación 7 Estación 8 Tren 1 241 295 328 296 270 275 32 0 Tren 2 193 161 176 173 168 158 8 0 Tren 3 345 482 549 653 447 321 19 0 Tren 4 973 614 670 964 416 146 13 0 Tren 5 520 668 831 1014 121 147 4 0 Tren 6 409 252 827 898 227 128 16 0 Tren 7 611 296 471 790 35 117 1 0 Tren 8 480 433 509 1226 420 286 20 0 Experimentación 54 54 10.1.2 Segunda experimentación En este segundo experimento el único dato inicial que variará será el máximo número de vagones reservables. De este modo podrá comprobarse si, para una demanda con un factor de escala 0.6, la reserva de vagones aporta valor y es capaz de descongestionar las estaciones del modelo. Tabla 12:Datos iniciales en 2ª experimentación Los resultados obtenidos son los siguientes: Valor Función Objetivo: 𝜽𝟏∙∑𝒘𝒌+ 𝜽𝟐∙ ∑𝒓𝒌 𝒌𝝐𝑺𝒌∈𝑺 = 22.331 Lo que, comparado con el valor de la función objetivo para las mismas condiciones, pero sin la posibilidad de reservar vagones supone una mejora en 18 puntos. Esta mejora se debe en gran medida a que el umbral de riesgo máximo no se ha superado en esta ocasión. Comparando el número de pasajeros esperando para ambos casos (con y sin reserva de vagones) se puede apreciar el efecto de esta reserva: 55 Gráfico 6:Máximo número de pasajeros por estación para factor de escala 0.6 En la gráfica se puede observar que en el experimento con reserva de vagones el umbral máximo no se llega a superar en ningún instante. Los vagones se han reservado de la siguiente manera: Tabla 13: Vagones disponibles en 2ª experimentación En la situación en la que la reserva de vagones estaba deshabilitada el umbral máximo se superaba en 2 ocasiones: Cuando el tren 5 llegaba a la estación 4 y cuando el último tren 8 llegaba a la 4ª estación. Para ambos casos, la reserva de vagones se antoja clave para que este límite no se sobrepase. La reserva de vagones en los servicios 3, 4 y 5 permiten que en la estación 4 el número de pasajeros esperando al quinto tren se reduzca de 1014 a 997, suficiente para que el aforo no se supere. Esta demanda debe por supuesto repartirse y ser satisfecha por otros servicios. Por ejemplo, en la estación 3 el número de pasajeros esperando al 5º tren aumenta en 190 pasajeros. VAGONES LIBRES Estación 1 Estación 2 Estación 3 Estación 4 Estación 5 Estación 6 Estación 7 Estación 8 Tren 1 26666666 Tren 2 66666666 Tren 3 2 4 6 6 6 6 6 6 Tren 4 5 5 6 6 6 6 6 6 Tren 5 56666666 Tren 6 3 3 5 66666 Tren 7 4 5 5 66666 Tren 8 66666666 Experimentación 62 62 63 11 CONCLUSIONES El mayor valor del modelo propuesto reside en la fácil implementación de las soluciones obtenidas. En modelos anteriormente mencionados como (Currie, 2010) la implementación de las soluciones al problema de congestión de las plataformas dependía de diversos factores externos que podían dificultarla. Entre otros, un cierto número de consumidores debían tomar la decisión de cambiar su horario para que el modelo obtuviera resultado. Otros modelos mencionados anteriormente (Niu & Zhou, 2013) se basan en un cambio del horario en función de la demanda, que da lugar a modelos más complejos y aplicables a instancias de pequeño tamaño. Para la reserva de vagones la única premisa necesaria sería obtener datos sobre la demanda con cierta fiabilidad. Si los datos previos son fiables, el modelo que se prpopone resulta de desarrollo sencillo y sus soluciones pueden ser puestas en práctica de forma fácil en circunstancias reales. Factores externos como horarios o la predisposición del consumidor no influirían en las soluciones a implementar. A partir de los experiemtos realizados se puede comprobar la utilidad del modelo en diversas situaciones. Resulta muy efectivo si el objetivo es evitar sobrepasar valores de riesgo que pongan en peligro al pasajero. En esencia, al reservar vagones, el modelo reparte la demanda de pasajeros entre los distintos trenes que se detienen en las estaciones. Si el flujo de pasajeros en una estación toma valores muy elevados o de riesgo, la reserva de vagones garantizará que los trenes entrantes tengan la capacidad suficiente para aliviar la demanda. Un ejemplo de este caso serían los Experimentos 1 y 2. Gracias a que los trenes mantienen varios de sus vagones cerrados el número de pasajeros esperando nunca llega a superar la capacidad de las estaciones. Sin esta reserva, por el contrario, alguna de las estasciones habrían superado el aforo máximo en distintos momentos. Además, esta misma casuística puede ser usada para disminuir la acumulación de pasajeros aun cuando no suponen un riesgo. Es decir, el modelo es capaz de repartir la demanda de forma que ninguna estación sufra una acumulación de pasajeros, y por ende unos tiempos de espera mucho mayores que las demás. Aun así, el modelo sufre también ciertas limitaciones. Existen diversos modelos (Xu, et al., 2016) que contemplan la posibilidad de una demanda incierta, es decir, de una situación inusual que dispara la demanda a valores atípicos. La reserva de vagones tal como se ha planteado no contempla más que el caso determinista y sería necesario modificar el modelo propuesto para afrontar una situación de demanda aleatoria. Conclusiones 64 64 Otro aspecto a tener en cuenta son las estaciones con un flujo de pasajeros bajo, dado que el modelo propuesto se basa en equilibrar la demanda a lo largo de la línea para evitar aglomeraciones, en el caso de que la demanda sea muy baja, los pasajeros en esas estaciones podrían verse perjudicados en lo que respecta sus tiempos de espera. Volviendo al ejemplo de la red de transporte subterráneo en Londres, existen estaciones cuyo flujo diario está entorno a los 1000 pasajeros. Si el modelo considera que en estas estaciones no existe riesgo de aglomeración podría no habilitar vagones, y por tanto un aumento en los tiempos de espera de los pasajeros esperando en la estación. En la mayoría de grandes ciudades, las estaciones con un flujo menor de pasajeros se suelen encontrar en el extrarradio o periferia de la ciudad. Impedir a un pasajero del extrarradio que suba a bordo de un tren para evitar aglomeraciones en zonas más concurridad en la ciudad puede ocasionar problemas de injusticia o exclusión social. Para concluir, la reserva de vagones puede ser un elemento muy interesante como solución a la aglomeración en estaciones de ferrocarril de grandes ciudades. Su fácil implementación y adaptabilidad hacen que sea una opción a tener en cuenta. Como se ha comentado, la estrategia de reserva de vagones presenta ciertas limitaciones que dificultan el control de los tiempos de espera o la respuesta antes situaciones remotas. A pesar de ello, se ha mostrado como una solución válida en ciertas ocasiones. Otro aspecto interesante es la posible combinación del mecanismo de reserva con otras estrategias utilizadas para mejorar la experiencia de los usuarios, tales como Stop-Skipping o Short-Turning. 65 12 BIBLIOGRAFÍA ABC, 2018. El éxito de Inditex: al mal tiempo, un buen algoritmo, s.l.: ABC. Barrena, E., Canca , D., Coelho, L. & Laporte, G., 2014. Single-line rail rapid transit timetabling under dynamic passenger demand. Transportation Research Part B: Methodological, Volumen 70, pp. 134-150 . Cadarso, L., Marín, Á. & Maroti, G., 2013. Recovery of disruptions in rapid transit networks. Transportation Research Part E Logistics and Transportation Review , 53(1), p. 15–33. Canca, D., Barrena, E. & Algaba , E., 2014. Design and analysis of demand-adapted railway timetables. Journal of Advanced Transportation, 48(2), pp. 119-137. Chapman, L., 2007. Transport and climate change: a review. Journal of Transport Geography, 15(5), pp. Pages 354-367. Currie, G., 2010. Quick and Effective Solution to Rail Overcrowding: Free Early Bird Ticket Experience in Melbourne, Australia. Transportation Research Record, Volumen 2146, pp. 35-42. El País, 2021. Transición Ecológica lanza una guía para que los ayuntamientos creen sus zonas de bajas emisiones. EL PAÍS, 19 Noviembre, p. 2. freejournal.org, 2020. [En línea]. Jiang, Z. y otros, 2018. Reinforcement learning approach for coordinated passenger inflow control of urban rail transit in peak hours. Transportation Research Part C: Emerging Technologies, Volumen 88, pp. 1-16. Montañés, É., 2018. La población crece solo en las grandes ciudades. ABC. Niu, H. & Zhou, X., 2013. Optimizing urban rail timetable under time-dependent demand and oversaturated. Transportation Research Part C: Emerging Technologies, Volumen 36, pp. 212-230. Roser, M., 2013. Future Population Growth. Our World In Data. Shi, J., 2020. Dynamic train capacity allocation for an overcrowded metro line: An effective passenger flow control approach. the National Natural Science Foundation of China, p. 35. Shi, Z., Zian, Z., Ran, J. & Jiaer, L., 2020. The association between domestic train transportation and novel coronavirus (2019-nCoV) outbreak in China from 2019 to 2020: A data-driven correlational report. Travel Medicine and Infectious Disease: Elsevier BV, Volumen 33. Bibliografía 66 66 Telegraph UK, 2017. telegraph.co.uk. [En línea] Available at: https://www.telegraph.co.uk/travel/destinations/europe/unitedkingdom/england/london/articles/London-Underground-150-fascinating-Tube-facts/ [Último acceso: 21 Octubre 2021]. Transport For London, 2017. London Underground Performance Reports, Londres: s.n. Xu, X.-j., Liu, J., Lin, H.-y. & Yiang, M., 2016. Capacity-oriented passenger flow control under uncertain demand: Algorithm development and real-world case study. Transportation Research Part E: Logistics and Transportation Review, Volumen 87, pp. 130-148. Yang , H. & Tang, Y., 2018. Managing rail transit peak-hour congestion with a fare-reward scheme. Transportation Research Part B: Methodological, 110(C), pp. 122-136.