Metodología de estimación de bajada en buses
Esta sección describe la metodología utilizada para estimar el punto de bajada de una etapa de viaje en bus. La estimación se basa en la trayectoria GPS del bus, la ubicación de subida y la siguiente transacción de la misma persona usuaria dentro del día.
La lógica general consiste en recorrer la trayectoria GPS del bus desde el punto de subida hacia adelante, buscando el punto GPS que minimiza un índice de tiempo generalizado. Este índice combina el tiempo transcurrido dentro del vehículo y la distancia caminable desde un posible punto de bajada hasta la siguiente transacción de la persona usuaria.
1. Determinación del GPS de subida
Primero se identifica el GPS asociado a la subida de la persona usuaria. Este punto corresponde al registro GPS del bus más coherente con el momento y ubicación de la validación o subida.
A partir de este GPS de subida se inicia la búsqueda hacia adelante en la trayectoria del vehículo.
Conceptualmente:
gps_subida = GPS del bus asociado a la transacción de subida
trayectoria_bus = secuencia ordenada de GPS del vehículo
La trayectoria se encuentra ordenada temporalmente, por lo que el algoritmo recorre los registros GPS posteriores al GPS de subida.
2. Búsqueda del punto probable de bajada
Una vez determinado el GPS de subida, se recorre la trayectoria del bus GPS a GPS. Para cada punto GPS candidato se calcula la distancia entre ese punto y la siguiente transacción de la persona usuaria.
La siguiente transacción puede representar una nueva subida, por ejemplo en otro bus, metro o tren. Bajo el supuesto de continuidad del viaje, el punto de bajada de la etapa actual debería estar cerca del lugar donde ocurre la siguiente transacción, considerando una distancia caminable razonable.
En este proceso se utiliza una distancia caminable máxima de:
distancia_caminable_maxima = 500 metros
Es decir, solo se consideran candidatos de bajada ubicados a 500 metros o menos de la siguiente transacción.
3. Índice de tiempo generalizado
Para cada GPS candidato de bajada se calcula un índice de tiempo generalizado. Este índice busca balancear dos componentes:
- El tiempo de viaje acumulado en el bus.
- El tiempo equivalente de caminata desde el punto candidato de bajada hasta la siguiente transacción.
La fórmula utilizada es:
indice = (distancia_a_siguiente_transaccion / velocidad_caminata) * penalizacion_caminata
+ tiempo_gps_candidato
Donde:
velocidad_caminata = 1.5 m/s
penalizacion_caminata = 2.5
Por lo tanto:
indice = (distancia_a_siguiente_transaccion / 1.5) * 2.5
+ tiempo_gps_candidato
El algoritmo selecciona como bajada estimada el GPS candidato que tenga el menor índice, siempre que cumpla las condiciones de consistencia espacial y temporal.
4. Caso con siguiente transacción disponible
Cuando existe una siguiente transacción de la misma persona usuaria, el algoritmo utiliza esa transacción como referencia espacial y temporal para estimar la bajada.
Para cada GPS posterior al GPS de subida:
- Se calcula la distancia entre el GPS candidato y la ubicación de la siguiente transacción.
- Se calcula el tiempo estimado de caminata entre ambos puntos.
- Se calcula el tiempo disponible para el transbordo.
- Se verifica que la persona usuaria tenga tiempo suficiente para caminar desde el punto candidato hasta la siguiente transacción.
- Se exige que la distancia esté dentro del umbral caminable.
- Se selecciona el GPS que minimiza el índice de tiempo generalizado.
La condición temporal principal es:
tiempo_transbordo - tiempo_caminata > 0
Esto significa que el tiempo entre el GPS candidato de bajada y la siguiente transacción debe ser suficiente para caminar desde el punto de bajada estimado hasta el punto donde ocurre la siguiente validación.
5. Caso de última transacción del día
Cuando la etapa corresponde a la última transacción del día, no existe una siguiente transacción real para calcular un tiempo de transbordo.
En este caso, la metodología utiliza como referencia la primera transacción del día, pero solo para evaluar distancia espacial. No se puede calcular una condición de consistencia temporal de transbordo.
Por lo tanto, el algoritmo:
- Recorre los GPS posteriores al GPS de subida.
- Calcula la distancia entre cada GPS candidato y la ubicación de referencia.
- Calcula el índice de tiempo generalizado.
- Considera solo puntos dentro de la distancia caminable máxima.
- Selecciona el GPS con menor índice.
En este caso no se aplica la condición:
tiempo_transbordo - tiempo_caminata > 0
porque no existe una siguiente transacción posterior que permita estimar el tiempo real disponible para caminar.
6. Condición de término de búsqueda
La búsqueda sobre la trayectoria del bus no continúa indefinidamente. El algoritmo se detiene cuando se cumple alguna de las siguientes condiciones:
tiempo_gps_candidato - tiempo_gps_subida > 2 horas
Es decir, si han pasado más de dos horas desde el GPS de subida, se detiene la búsqueda.
En el caso con siguiente transacción disponible, también se detiene si el tiempo de transbordo se vuelve negativo:
tiempo_transbordo < 0
Esto ocurre cuando el GPS candidato ya se encuentra temporalmente después de la siguiente transacción, por lo que no puede representar una bajada válida anterior al nuevo evento de viaje.
7. Distancia recorrida en vehículo
Durante el recorrido de la trayectoria GPS, el algoritmo acumula la distancia recorrida por el bus entre puntos GPS consecutivos.
Esta distancia acumulada permite estimar la distancia recorrida en vehículo entre la subida y la bajada seleccionada.
Conceptualmente:
distancia_en_vehiculo_acumulada += distancia(gps_actual, gps_siguiente)
Cuando un GPS candidato pasa a ser el mejor candidato de bajada, se guarda la distancia acumulada hasta ese punto:
distancia_en_vehiculo_recorrida = distancia_en_vehiculo_acumulada
Este valor puede utilizarse como estimación de la distancia de la etapa sobre la trayectoria recorrida por el vehículo.
Pseudocódigo de estimación de bajada
Entrada:
gps_subida
trayectoria_bus
siguiente_transaccion
existe_siguiente_transaccion
distancia_caminable_maxima = 500 metros
velocidad_caminata = 1.5 m/s
penalizacion_caminata = 2.5
tiempo_maximo_busqueda = 2 horas
Inicializar:
indice_minimo = infinito
distancia_minima = infinito
gps_bajada = no_encontrado
distancia_en_vehiculo_acumulada = 0
distancia_en_vehiculo_recorrida = 0
Recorrer cada gps_candidato desde gps_subida hasta el final de la trayectoria_bus:
distancia_a_siguiente = distancia_2d(
ubicacion_siguiente_transaccion,
ubicacion_gps_candidato
)
indice = (distancia_a_siguiente / velocidad_caminata) * penalizacion_caminata
+ tiempo_gps_candidato
gps_siguiente = GPS posterior a gps_candidato
Si gps_siguiente existe:
distancia_en_vehiculo_acumulada += distancia_2d(
ubicacion_gps_candidato,
ubicacion_gps_siguiente
)
Si existe_siguiente_transaccion:
tiempo_transbordo = tiempo_siguiente_transaccion - tiempo_gps_candidato
tiempo_caminata = distancia_a_siguiente / velocidad_caminata
Si indice < indice_minimo
Y distancia_a_siguiente <= distancia_caminable_maxima
Y tiempo_transbordo - tiempo_caminata > 0:
gps_bajada = gps_candidato
indice_minimo = indice
distancia_minima = distancia_a_siguiente
distancia_en_vehiculo_recorrida = distancia_en_vehiculo_acumulada
Si tiempo_gps_candidato - tiempo_gps_subida > tiempo_maximo_busqueda
O tiempo_transbordo < 0:
detener búsqueda
Si no existe_siguiente_transaccion:
Si indice < indice_minimo
Y distancia_a_siguiente <= distancia_caminable_maxima:
gps_bajada = gps_candidato
indice_minimo = indice
distancia_minima = distancia_a_siguiente
distancia_en_vehiculo_recorrida = distancia_en_vehiculo_acumulada
Si tiempo_gps_candidato - tiempo_gps_subida > tiempo_maximo_busqueda:
detener búsqueda
Salida:
gps_bajada
distancia_minima
indice_minimo
distancia_en_vehiculo_recorrida
Interpretación metodológica
El punto de bajada estimado corresponde al GPS del bus que mejor equilibra la cercanía espacial con la siguiente transacción y la factibilidad temporal de que la persona usuaria haya caminado desde ese punto hasta la siguiente validación.
La distancia caminable máxima de 500 metros funciona como restricción espacial. Esto evita seleccionar puntos de bajada demasiado alejados de la siguiente transacción.
La condición temporal del transbordo evita seleccionar puntos del bus que, aunque estén espacialmente cerca de la siguiente transacción, no dejan tiempo suficiente para que la persona usuaria camine hasta el siguiente punto de validación.
El índice de tiempo generalizado penaliza la caminata, asignándole un peso mayor que el tiempo en vehículo. Esto refleja que, en la práctica, una persona usuaria no necesariamente elige el punto espacialmente más cercano, sino un punto que resulta razonable considerando el avance del bus, el tiempo disponible y la conexión con la siguiente etapa.