Transmilenio Router
Alcance del proyecto: pathfinding óptimo sobre toda la red BRT de TransMilenio con una interfaz de lenguaje natural. Contexto: bogotanos perdiendo horas por apps de enrutamiento deficientes. Problema central: 141 estaciones, lógica de transferencias, y una interfaz de consulta que no requiere un formulario. Estado: v2 en funcionamiento.
El Desafío
Los datos son públicos. Las estaciones, las rutas, la información del servicio, todo accesible. El verdadero obstáculo es el feed GTFS. Sin él el grafo se construye a mano, lo cual es frágil y consume mucho tiempo. El GTFS no es solo un formato de datos, es la base que hace posible un análisis serio: tiempos de viaje reales, frecuencias de servicio, lógica de transferencias, datos de accesibilidad. Todo lo interesante de este proyecto escala con la calidad de ese insumo.
El Enfoque
Python era la elección obvia para trabajo con datos, operaciones de grafos, prototipado de NLP y análisis estadístico. La decisión más importante fue cómo modelar el sistema en sí. Cuando me encontré con el algoritmo de Dijkstra reconocí la red de inmediato: un gran conjunto de nodos y aristas interconectados donde la búsqueda del camino óptimo es un problema resuelto si el grafo está modelado correctamente. Otras apps de enrutamiento parecen manejarlo de otra manera, lo que explica por qué fallan en casos extremos, particularmente cuando un usuario ya está dentro del sistema y necesita navegar entre servicios. Esa brecha es donde comienza este proyecto.
Lo Que Se Construyó
La v1 es un programa enfocado y sólido: toma un origen y un destino, ejecuta Dijkstra sobre el grafo y retorna información de ruta estructurada y útil. Sin extras, sin ruido. La v2 agrega la capa de NLP: entrada en lenguaje natural, coincidencia difusa de nombres de estaciones que tiene en cuenta las muchas formas en que alguien podría escribir el nombre de una estación en el español bogotano real, y retorna el resultado óptimo correcto independientemente de la variación ortográfica.
El Resultado
El resultado es una CLI que en la práctica supera a las apps de enrutamiento actuales en los casos que más importan. La arquitectura también abre posibilidades significativas: soporte multilingüe, capas de accesibilidad para usuarios con discapacidades, y migración a interfaces más amigables que presenten la información de rutas de forma simple y clara sin sacrificar precisión.
Lo Que Haría Diferente
Empezar con el feed GTFS. Con él el análisis se vuelve completo: horarios reales, modelos de regresión lineal para estimación de tiempos de viaje, datos de volumen de pasajeros por estación y hora para identificar puntos de congestión que afectan la eficiencia del servicio. La red también necesita mantenerse actualizada porque TransMilenio actualiza y cambia las rutas regularmente, lo que hace que un grafo construido manualmente sea propenso a quedar desactualizado. La capa de datos es la base. Todo lo demás se construye sobre ella.