Communitygithub.com

ajay-0010/traffic-ai-system

Das Verkehrs-KI-System sagt Verkehrsaufkommen mithilfe von XGBoost voraus und optimiert Routen mit Dijkstras Algorithmus. Es integriert maschinelles Lernen in eine graphentbasierte Routen-Engine mit einem FastAPI-Backend und einer Streamlit-Frontend für Echtzeitvorhersagen und interaktive Kartenvisualisierung und demonstriert Full-Stack-ML- und Systemdesign-Fähigkeiten.

Was ist traffic-ai-system?

Das Traffic-AI-System (ajay-0010/traffic-ai-system) ist eine vollständige Full-Stack-Anwendung, die modernste Techniken des maschinellen Lernens mit klassischen Algorithmen zur Routenoptimierung kombiniert. Es nutzt XGBoost, um das Verkehrsaufkommen auf Straßenabschnitten in Echtzeit vorherzusagen, und integriert diese Vorhersagen nahtlos in Dijkstras Algorithmus, um die effizientesten Routen zu berechnen. Das System besteht aus einer FastAPI-basierten REST-API für die Logik und Modellinferenz sowie einer interaktiven Streamlit-Oberfläche, die Vorhersageergebnisse und optimierte Routen auf einer Karte visualisiert. Entwickelt für Studierende, Forscher und Ingenieure, demonstriert dieses Projekt die praktische Integration von ML-Modellen in einem End-to-End-System und kann als Referenz für Verkehrsprognosen, Routenplanung und Echtzeit-Dashboards dienen. Es unterstützt die Ausführung auf lokalen Maschinen oder in Cloud-Umgebungen und zeigt bewährte Verfahren für modularen Code und Systemdesign.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add ajay-0010/traffic-ai-system

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht traffic-ai-system?

Das Verkehrs-KI-System sagt das Verkehrsaufkommen mithilfe von XGBoost voraus und optimiert Routen mit Dijkstras Algorithmus. Es integriert maschinelles Lernen in eine graphentbasierte Routen-Engine mit einem FastAPI-Backend und einer Streamlit-Frontend für Echtzeitvorhersagen und interaktive Kartenvisualisierung und demonstriert Full-Stack-ML- und Systemdesign-Fähigkeiten.

Funktionen

  • Verkehrsvorhersage: Verwendet ein vortrainiertes XGBoost-Modell, um die Verkehrsdichte auf Straßenabschnitten basierend auf historischen Daten vorherzusagen.
  • Routenoptimierung: Wendet Dijkstras Algorithmus auf den vorhergesagten Verkehrsgraphen an, um die optimale Route mit der geringsten Fahrzeit zu finden.
  • Echtzeitschnittstelle: Bietet eine REST-API über FastAPI für Programmierzugriff.
  • Interaktive Visualisierung: Streamlit-basierte Frontend zeigt den Verkehrsgraphen, Vorhersagen und optimierte Routen auf einer Karte an.
  • Modulares Design: Code ist in Datenerfassung, Modelltraining, API und Frontend getrennt, was die Wartbarkeit und Erweiterbarkeit verbessert.

Architektur

┌─────────────┐    ┌──────────────┐    ┌──────────────┐
│  Streamlit  │◄──►│   FastAPI    │◄──►│ XGBoost-Modell│
│  Frontend   │    │   Backend    │    │ & Graph-Daten │
└─────────────┘    └──────────────┘    └──────────────┘

Verwendung

Voraussetzungen

  • Python 3.9+
  • Virtuelle Umgebung (empfohlen)

Installation

  1. Repository klonen:
git clone https://github.com/ajay-0010/traffic-ai-system
cd traffic-ai-system
  1. Abhängigkeiten installieren:
pip install -r requirements.txt
  1. Modell und Daten vorbereiten (siehe Abschnitt Setup).

Lokales Ausführen

FastAPI-Server starten:

cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000

Streamlit-Frontend starten:

cd frontend
streamlit run app.py

Öffnen Sie http://localhost:8501 im Browser, um auf die Benutzeroberfläche zuzugreifen.

API-Endpunkte

  • GET /predict?lat=<latitude1>&lon=<longitude1>&lat=<latitude2>&lon=<longitude2> - Sagt die Verkehrsdichte für eine gegebene Kante im Graphen voraus.
  • GET /route?start=<node_id>&end=<node_id> - Gibt die optimierte Route zwischen zwei Knoten zurück.
  • GET /health - Zustandsprüfung des Servers.

Beispielworkflow

  1. Senden Sie eine Route von Knoten A nach Knoten B über den API-Endpunkt /route.
  2. Das Backend ruft das XGBoost-Modell auf, um die Verkehrsdichte für alle relevanten Kanten vorherzusagen.
  3. Die Vorhersagen werden verwendet, um die Kantengewichte (Fahrzeit) zu aktualisieren.
  4. Dijkstras Algorithmus findet den Pfad mit den minimalen Kosten.
  5. Die optimierte Route wird als JSON an den Client zurückgegeben.
  6. Das Streamlit-Frontend zeigt die Route auf einer Karte zusammen mit den Vorhersagedetails an.

Anpassung

Sie können das XGBoost-Modell mit Ihren eigenen Daten neu trainieren. Bearbeiten Sie dazu das Notebook notebooks/train_xgboost.ipynb und führen Sie es aus. Ersetzen Sie dann die Datei model/xgboost_traffic_model.pkl durch Ihr trainiertes Modell.

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe die Datei LICENSE für Details.

Verwandte Skills