TdP-prove-finali / Introduzione

Istruzioni e documentazione per la proposta e lo svolgimento delle prove finali relative al corso di Tecniche di Programmazione.
http://bit.ly/tecn-progr
Apache License 2.0
4 stars 13 forks source link

USA Travel Planner #92

Closed Campa27 closed 1 year ago

Campa27 commented 1 year ago

Studente proponente

s260448 Campana Riccardo

Titolo della proposta

USA Travel Planner

Descrizione del problema proposto

Programmare un viaggio richiede sempre molto tempo, perchè ci si vuole assicurare di poter ottenere l’esperienza migliore in relazione al budget personale. Solitamente, la ricerca dura più settimane per osservare l’oscillazione dei prezzi e si cerca di prenotare il più presto possibile per mantenere il costo totale basso. L’obiettivo di questa applicazione è offrire all’utente una lista di voli e sistemazioni che rispettino i vincoli inseriti per poter rendere semplice, intuitiva e veloce la prenotazione di un viaggio simulato nel primo quarto del 2022. Oltre alla ricerca ottimizzata di un volo aereo, se la città di destinazione è una delle 6 metropoli supportate, l’applicazione permette anche la ricerca ottimizzata di una sistemazione AirBnB secondo le preferenze dell’utente

Descrizione della rilevanza gestionale del problema

L’interesse dal punto di vista gestionale si trova nel min-maxing parametrico che rispetti i vincoli inseriti dall’utente, oltre che nella semplificazione e automatizzazione di un processo che altrimenti sarebbe lungo e tedioso. Fornendo il data set adatto, con prezzi previsti tramite algoritmi statistici e voli programmati per il futuro, l’applicazione potrebbe potrebbe essere a tutti gli effetti operativa per la scelta delle opzioni migliori, indirizzando l’utente e risparmiandogli ore di ricerca. In caso di dati dinamici, come sono effettivamente i prezzi di voli e hotel, sarebbe anche interessante usare l’applicazione per studiare le tendenze e individuare il momento migliore per l’acquisto

Descrizione dei data-set per la valutazione

Una rappresentazione della struttura del data-set che ho creato è presente in allegato.

Per quanto riguarda la ricerca dei voli, ho utilizzato dati presi dall’ Airline Origin and Destination Survey (DB1B), un data-set fornito direttamente dal United States Department of Transportation (al link https://www.transtats.bts.gov/DatabaseInfo.asp?QO_VQ=EFI&DB_URL=) che raccoglie informazioni sul 10% dei voli con aeroporto di partenza e aeroporto di atterraggio negli USA dal 1993 ad oggi. Date le dimensioni, ho estratto le informazioni relative al primo quarto del 2022, per poter avere una rappresentazione realistica di tratte e prezzi.

La tabella Coupon contiene circa 9 milioni di righe e contiene le informazioni su origine e destinazione dei voli. Queste sono le colonne che ho deciso di utilizzare tra quelle offerte dalla fonte.

Campo Significato
ItinID Itinerary ID
OriginAirportID Origin Airport, Airport ID. An identification number assigned by US DOT to identify a unique airport. Use this field for airport analysis across a range of years because an airport can change its airport code and airport codes can be reused.
OriginAirportSeqID Origin Airport, Airport Sequence ID. An identification number assigned by US DOT to identify a unique airport at a given point of time. Airport attributes, such as airport name or coordinates, may change over time.
Quarter Quarter (1-4)
Origin Origin Airport Code
OriginStateFips Origin Airport, State FIPS Code
OriginState Origin Airport, State Code
OriginStateName Origin State Name
DestAirportID Destination Airport, Airport ID. An identification number assigned by US DOT to identify a unique airport. Use this field for airport analysis across a range of years because an airport can change its airport code and airport codes can be reused.
DestAirportSeqID Destination Airport, Airport Sequence ID. An identification number assigned by US DOT to identify a unique airport at a given point of time. Airport attributes, such as airport name or coordinates, may change over time.
Dest Destination Airport Code
DestStateFips Destination Airport, State FIPS Code
DestState Destination Airport, State Code
DestStateName Destination State Name

La tabella Ticket, facente parte dello stesso data-set originale di Coupon, contiene quasi 4 milioni di righe e la sua utilità è rappresentata dalle informazioni sui prezzi dei biglietti aerei. Queste sono le colonne che ho deciso di utilizzare tra quelle offerte dalla fonte.

Campo Significato
ItinID Itinerary ID
FarePerMile Itinerary Fare Per Miles Flown in Dollars (ItinFare/MilesFlown).
Passengers Number of Passengers
ItinFare Itinerary Fare Per Person
Distance Itinerary Distance (Including Ground Transport)

La tabella Airport è utile per la corrispondenza aeroporti-città. Ho estratto la tabella airports dal database dell’esercitazione exflightdelays svolta durante il corso, che contiene circa 300 righe. Queste sono le colonne che ho deciso di utilizzare tra quelle offerte dalla fonte.

Campo Significato
ID Id dell’aeroporto
IATA_CODE Codice IATA dell’aeroporto
AIRPORT Nome dell’aeroporto
CITY Città dove si trova l’aeroporto
STATE Stato dove si trova l’aeroporto

Per quanto riguarda la tabella Airbnb, data l’impossibilità di reperire un data-set soddisfacente sull’interità degli USA, ho optato per una più vasta offerta di alloggi a discapito del numero di città supportate. Le città supportate sono 6 tra le più grandi degli Stati Uniti: New York, Los Angeles, San Francisco, Washington D.C., Chicago e Boston. Le informazioni relative agli AirBnB provengono da Kaggle (al link: https://www.kaggle.com/datasets/rudymizrahi/airbnb-listings-in-major-us-cities-deloitte-ml?select=train.csv). L’utente ha partecipato a una competizione il cui obiettivo è prevedere il costo di diverse offerte presenti su AirBnB nelle maggiori città statunitensi. Data la natura di studio e di previsione della colonna log_price, i valori non possono essere ritenuti reali, ma sono abbastanza realistici da permettere l’utilizzo per la mia applicazione. La tabella contiene circa 230 mila righe.

Campo Significato
id listing id
log_price natural logarithm of the predicted price
property_type property_type
accomodates number of people the property can accomodate
city city
name name of the listing
number_of_reviews number of reviews
reviews_score_rating rating of the listing calculated from the reviews

Descrizione preliminare degli algoritmi coinvolti

Intendo creare un grafo semplice orientato e pesato con gli aeroporti come vertici e i voli come archi, utilizzando il costo del volo per il peso. Il passo successivo sarà creare uno o più algoritmi di visita ricorsivi per raggiungere la destinazione, mirati all’ottenere il volo o una lista di essi che rispetti i parametri inseriti e sia la soluzione migliore. Se la destinazione fa parte delle 6 città supportate, un successivo algoritmo ricorsivo scorrerà la lista degli AirBnB presenti nella città di arrivo e sarà utilizzato per la ricerca dell’hotel più adatto alla richiesta.

Descrizione preliminare delle funzionalità previste per l’applicazione software

Agli occhi dell’utente, l’interfaccia offrirà la scelta di una città di partenza e una di arrivo, seguita da un’area dove inserire il costo massimo del viaggio e una successiva area dove specificare il numero massimo di scali. In una tabella sottostante sarà visualizzato il risultato, formato da uno o più voli. Sarà specificato che le funzionalità riguardanti gli AirBnB sono supportate solo se la città di arrivo fa parte delle 6 presenti nel database. In caso la città di arrivo sia una di quelle supportate, l’interfaccia abiliterà i campi successivi, dove inserire le preferenze sulla sistemazioni da ricercare. Saranno proposti vincoli sul prezzo, sul tipo di proprietà, sulla quantità di persone che può ospitare la casa, sul numero di recensioni e sul rating del locale. Una successiva tabella mostrerà le sistemazioni risultato della ricerca.

struttura data-set

fulcorno commented 1 year ago

va bene, la proposta è approvata