Giut0 / TrainDelay-project

Progetto per il corso ICON2223

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TrainDelay-project

Progetto finale per il corso ICON2223 Uniba

Obiettivo 🎯

Creazione di un sistema di ricerca treni per la pianificazione automatica di itinerari, inoltre incorpora un modello di intelligenza artificiale per offrire predizioni del probabile ritardo di un determinato treno.

Documentazione completa: Report

Requisiti πŸ“œ

  • Prolog, per la gestione e l'interrogazione nella knowledge base dei treni;
  • Python, per eseguire l'applicazione.

Installazione πŸ”©

Avendo python installato sulla propria macchina:

  1. Installazione Prolog:

    • Windows: swi-prolog
    • Linux:
      sudo add-apt-repository ppa:swi-prolog/stable
      sudo apt install swi-prolog
  2. Clona il repository:

    git clone https://github.com/Giut0/TrainDelay-project.git
    cd TrainDelay-project/
  3. Creazione ambiente virtuale (opzionale):

    python -m venv .my_env
    
    # Attiva l'ambiente virtuale (su Windows)
    .my_env\Scripts\activate
    
    # Attiva l'ambiente virtuale (su macOS e Linux)
    source .my_env/bin/activate
  4. Installazione dipendenze:

    pip install -r requirements.txt
  5. Esecuzione applicazione:

    python3 app.py

Utilizzo πŸ’ͺ

Eseguendo app.py apparirΓ  l'interfaccia utente a riga di comando:

[?] Scegli una opzione:
  > πŸš„ Cerca treno tra due stazioni
    πŸ“ Cerca itinerario
    πŸšͺ Uscire

Possibili opzioni βš™οΈ

  1. Cerca treno tra due stazioni: Inserendo il nome di due stazioni e l'orario di partenza il sistema troverΓ  tutti i treni disponibili tra le stazioni scelte e dopo l'orario selezionato;
  2. Cerca itinerario: Inserendo la stazione di partenza e la stazione di arrivo il sistema troverΓ  l'itinerario migliore in base al minor numero di stazioni del percorso;
  3. Uscire: Termine del programma.

Origine dei dati πŸ—ƒοΈ

I dati necessari per la realizzazione di questo sistema, in particolare per la costruzione della knowledge base, sono stati recuperati attraverso l'interrogazione alle API fornite da viaggiatreno.it per la schedule dei treni e sabas per i dati relativi alle stazioni.

Organizzazione repository πŸ“

TrainDelay-project/
|
β”œβ”€β”€ data_preparation/
β”‚   └── data_pre-processing.ipynb
|
β”œβ”€β”€ data_retrive/
β”‚   └── scrape_train_data.py
β”‚
β”œβ”€β”€ dataset/
β”‚   β”œβ”€β”€ stations.csv
β”‚   β”œβ”€β”€ trains.csv
β”‚   β”œβ”€β”€ trains_refined_classification.csv
β”‚   β”œβ”€β”€ trains_refined_regression.csv
β”‚   └── new_test_dataset.csv
β”‚
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ Report.tex
β”‚   β”œβ”€β”€ Report.pdf
β”‚   └── ...
β”‚
β”œβ”€β”€ graphs/
β”‚   β”œβ”€β”€ generate_station_graph.py
β”‚   └── station_graph.gexf
β”‚
β”œβ”€β”€ knowledge_base/
β”‚   β”œβ”€β”€ trenitalia_schedule.pl
β”‚   β”œβ”€β”€ stations.pl
β”‚   β”œβ”€β”€ rules.pl
β”‚   β”œβ”€β”€ generate_station_kb.py
β”‚   β”œβ”€β”€ generate_train_kb.py
β”‚   └── knowledge_engine.py
|
β”œβ”€β”€ machine_learning/
β”‚   β”œβ”€β”€ classification.ipynb
β”‚   β”œβ”€β”€ regression.ipynb
β”‚   └── train_delay_clf_v2.pkl
β”‚
β”œβ”€β”€ app.py
β”œβ”€β”€ options.py
β”œβ”€β”€ utils.py
β”œβ”€β”€ README.md
β”œβ”€β”€ LICENSE
└── requirements.txt

About

Progetto per il corso ICON2223

License:MIT License


Languages

Language:Prolog 79.9%Language:Jupyter Notebook 19.0%Language:Python 1.1%