Saltar al contenido

Optimizador de Rutas de Recolección

Aplicación web que calcula la ruta de menor distancia para una flota de camiones de recolección, respetando capacidad de carga, jornada laboral y distancias reales de carretera.

DjangoPostgreSQLGoogle OR-ToolsOSRMLeafletTabulator.jsDocker
← Volver a Proyectos
Figura 1. Mapa con las rutas calculadas para 7 camiones y sus puntos de recolección
RolProyecto profesional para una organización de cooperación internacional
TipoAnálisis espacial / optimización de rutas
FocoGestión de residuos y logística de recolección
DatosPuntos de recolección · Red vial OSM · Flota de camiones
Año2026
EstadoEn producción, con datos reales de operación
01

Overview

Una aplicación web que optimiza rutas de recolección de residuos para una flota de camiones: calcula automáticamente qué camión visita qué puntos y en qué orden, respetando restricciones duras de capacidad, jornada laboral y viajes múltiples por camión. Corre sobre un servidor de ruteo y de mapas propios, sin depender de proveedores externos, con una arquitectura multi-proyecto donde cada organización opera su propio espacio aislado de puntos, flota y resultados. Es el mismo tipo de problema que resuelven UPS, Amazon o las apps de delivery para sus flotas todos los días, aplicado acá a la recolección de residuos.

02

El problema

Encontrar la mejor ruta de recolección implica mucho más que el camino más corto entre puntos. Cada camión tiene capacidad limitada, sale desde un plantel fijo, y puede hacer varios viajes de descarga en el día, todo dentro de una jornada laboral. Es una variante del VRP (capacitada, con múltiples viajes por vehículo y límite de jornada), y calcularla con precisión matemática es prácticamente imposible a esta escala: es un problema NP-difícil. El reto real fue construir una heurística confiable que respete las restricciones que sí importan en la operación, y que avise con claridad cuando el trabajo del día no cabe en la flota disponible, en vez de fallar en silencio o entregar una ruta que nadie puede ejecutar.

03

Datos

Puntos de recolección

Tabular → espacial

Dirección o coordenadas y peso, cargados por el operador

Red vial de OpenStreetMap

Espacial

Base del motor de ruteo propio, para distancias reales de carretera

Límites administrativos INEC

Espacial

Mapa de calor por cantón/distrito

04

Método

1
Carga de puntos y flota: tabla editable, importación desde Excel/CSV, geocodificación por dirección
2
Matriz de distancias reales por carretera, calculada por un servidor de ruteo propio (OSRM) sobre datos de OpenStreetMap, no en línea recta
3
Modelo de optimización con Google OR-Tools, ajustado para que cada camión pueda hacer varios viajes de descarga sin perder las restricciones de capacidad y jornada
4
Manejo de casos sin solución exacta: cuando la flota no alcanza, el sistema recalcula para repartir el trabajo de forma más equilibrada, en vez de fallar sin explicación
5
Simulación hora por hora de cada ruta (llegada, parada, descarga, regreso al plantel), para que el tiempo mostrado coincida con el que usó el propio optimizador
6
Mapa interactivo con edición manual (arrastrar paradas, fijar un punto a un camión) que recalcula solo lo necesario, sin perder el resto del plan
7
Exportación a Google Maps/Waze, GPX, KML, Shapefile
05

Retos técnicos

El camión que gastaba tiempo sin moverse

La primera versión del modelo tenía un defecto sutil en cómo calculaba el tiempo de los camiones sin puntos asignados, lo que volvía imposibles casos que en la realidad sí cabían. Un caso real de 22 puntos con 7 camiones no encontraba solución hasta corregirlo. Hoy existe una prueba de regresión que falla exactamente si el error vuelve a aparecer.

Cuando la flota no alcanza

Con pocos camiones disponibles, la primera versión ignoraba el límite de jornada y apilaba todo en el camión más barato en distancia, dejando otras unidades sin usar. La solución fue un segundo modo de cálculo que reparte el exceso entre toda la flota. En un caso real, la jornada máxima pasó de concentrarse en un solo camión a repartirse de forma pareja entre todos los disponibles, atendiendo la misma cantidad de paradas.

Sin depender de terceros

El ruteo corre en un servidor OSRM propio, con datos de OpenStreetMap de Costa Rica, sin depender del servicio público compartido ni de sus límites de peticiones. El mapa de fondo usa la misma base de datos que el motor de ruteo, así que lo que el mapa dibuja y lo que el sistema calcula son exactamente las mismas calles.

Todo corre en un VPS propio con Docker, HTTPS automático vía Caddy y respaldos programados de la base de datos.

06

Tecnologías

DjangoPostgreSQLGoogle OR-ToolsOSRMLeafletTabulator.jsDocker
07

Próximos pasos

Días de recolección configurables por punto (hoy es por camión y por proyecto completo), una página de ayuda con manual descargable, y un portal de proyectos hermanos (tren, energía) sobre el mismo dominio.

← Volver a Proyectos