Proyectos Producto · Optimización
RouteOpt
Optimización de rutas y jornadas para empresas de servicios que se mueven a pie y en transporte público.
- Papel
- Creador · motor, producto y despliegue
- Año
- 2025–2026
- Herramientas
- Python · Flask · Next.js · Mapbox · GTFS Madrid · SQLite · AWS
- Estado
- En línea · beta abierta
El problema
En una empresa de limpieza, cada operario recorre varios centros al día a pie, en metro o en autobús. La planificación se hacía a mano en Excel: quién va a dónde, en qué orden y en qué horario. El resultado eran trayectos cruzados, horas muertas entre servicios y una plantilla difícil de dimensionar.
La solución
RouteOpt asigna cada parada al operario adecuado y ordena su jornada minimizando desplazamientos, respetando horarios y duración de cada servicio.
- Motor en Python con heurísticas de enrutamiento y una matriz de tiempos multimodal de Madrid (a pie, metro y autobús) construida con los datos abiertos del transporte público (GTFS).
- Panel web en Next.js con mapas: operarios, ubicaciones, comparador de planes y usuarios con datos aislados por empresa.
- Ingeniería de producto: pruebas de contrato entre el panel y el motor, matriz de riesgos priorizada, manual de operaciones con vuelta atrás y despliegue en AWS.
Resultado medido
Corrida de referencia (marzo de 2026) contra la planificación real de la empresa, con 971 paradas:
| Indicador | Plan anterior | Con RouteOpt |
|---|---|---|
| Productividad (tiempo de trabajo / total) | 90,8 % | 93,6 % |
| Horas muertas por semana | 160,8 h | 109,2 h |
| Paradas sin asignar | — | 0 |
Las versiones posteriores del motor siguieron mejorando sobre esa referencia.
La demostración
Arriba tienes un optimizador reducido escrito para esta página: reparte las paradas, ordena cada ruta por vecino más próximo y la mejora con 2-opt; cada tramo elige entre ir a pie o en metro. No es el motor original, pero sigue la misma lógica. Prueba a cambiar el número de paradas y de operarios.