Este proyecto lo desarrollé para investigar y experimentar con agentes inteligentes que buscan rutas óptimas en mapas urbanos reales, usando datos de OpenStreetMap (OSM) y herramientas de Python.
Diseñé una aplicación web que permite encontrar la mejor ruta entre dos puntos del distrito de San Isidro (Lima), considerando la red vial real extraída de OSM. El sistema usa algoritmos clásicos como Dijkstra y A*, y muestra el resultado en un mapa interactivo.
- Extracción de datos: Utilizo OSMnx para descargar la red vial de San Isidro y la guardo como grafo dirigido.
- Búsqueda de rutas: Implementé los algoritmos de Dijkstra y A* con NetworkX.
- Visualización: La ruta óptima se muestra en un mapa de OpenStreetMap usando Folium.
- Interfaz web: Todo se maneja desde una app Flask sencilla y fácil de usar.
agent/
osm_data.py # Extracción y carga del grafo OSMnx
search_agent.py # Algoritmos de búsqueda
web/
app_web.py # Aplicación Flask
static/style.css # Estilos
templates/index.html # Interfaz web
data/
san_isidro.graphml # Grafo real de San Isidro
tests/
test_search.py # Pruebas automáticas
- Instala las dependencias:
pip install -r requirements.txt - Descarga el grafo (ya incluido en
data/san_isidro.graphml). - Ejecuta la app web:
python web/app_web.py - Abre tu navegador en http://localhost:5000 y prueba rutas usando coordenadas o IDs de nodos.
Si quieres probar el proyecto en cualquier máquina sin instalar dependencias manualmente, puedes usar Docker:
docker build -t urban-route-agent .
docker run -p 5000:5000 urban-route-agentEsto levantará la app en http://localhost:5000
- Flask
- OSMnx
- NetworkX
- Folium
- scikit-learn