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

PropostaTesiLucaFaieta #94

Closed LucaFaieta closed 1 year ago

LucaFaieta commented 1 year ago

Studente proponente

s271378 Luca Faieta

Titolo della proposta

Ottimizzazione viaggi aerei USA

Descrizione del problema proposto

Data una lista di aeroporti americani e i rispettivi voli in partenza trovare la combinazione con meno scali per collegare due aeroporti scelti dall'utente attraverso dei menù a tendina, con tutti i controlli del caso sulla compatibilità tra i voli. Possibilità anche di mostrare tutti i voli che partono da un dato aeroporto o vi arrivano.

Descrizione della rilevanza gestionale del problema

E' un problema di ottimizzazione di un percorso a livello logistico che permette di programmare al meglio viaggi e allo stesso modo spedizioni per una ipotetica azienda in modo da risparmiare tempo e risorse alla stessa; utile anche per programmare viaggi in base alle date delle soluzioni proposte.

Descrizione dei data-set per la valutazione

Il dataset proposto è "extflightdelays" utilizzato anche durante il corso reperibile su Kaggle: https://www.kaggle.com/usdot/flight-delays/data. Che contiene informazioni su aeroporti,compagnie aeree e voli negli USA nel 2015. Il dataset è costituito da tre tabelle: flights, airports,airlines.

La tabella "Flights" contiene tutte le informazioni riguardanti i voli: ID come chiave primaria, airline_ID che identifica la compagnia aerea e permette la join con la tabella "airlines",l'identificativo del volo "Flight_Number", l'identificativo dell'aereo "Tail_Number", codice degli aeroporti di arrivo e partenza "Destination_Airport_ID" e "Origin_Airport_ID", data con orario di partenza e arrivo "Scheduled_Departure_Date" e "Arrival_Date", ritardo in arrivo e in partenza "Arrival_Delay" e "Departure_Delay", tempo trascorso in volo "Elapsed_Time", distanza percorsa "Distance".

La tabella "Airlines" contiene tutte le informazioni relative agli aeroporti presenti nella base dati: Un identificativo numerico come chiave primaria "Id", codice identificativo alfabetico dell'aeroporto "IATA Code", nome dell'aeroporto "Airport", la città dove è ubicato l'aeroporto "City", lo stato in cui si trova la città "State", la nazione "Country", latitudine e longitudine "Latitude" e "Longitude" e la timezone "Timezone_Offset".

La tabella "Airlines" contiene le informazioni sulle compagnie aeree presenti nel database: codice identificativo numerico come chiave primaria "Id", codice identificativo alfabetico "IATA Code" e nome della compagnia "Airline".

Descrizione preliminare degli algoritmi coinvolti

Creazione di un grafo non orientato per rappresentare lo schema degli aeroporti partendo da i dati presenti nel data set. Utilizzo di dati inseriti da parte dell'utente all'interno del programma. Algoritmo ricorsivo per la ricerca della soluzione ottima del problema proposto. Gestione del tempo per la compatibilità dei voli.

Descrizione preliminare delle funzionalità previste per l’applicazione software

L'utente si troverà davanti due menù a tendina da cui selezionare una città, una di partenza e una di arrivo, di fianco ad ogni menù ci sarà un bottone che permetterà di mostrare tutti i voli in arrivo se città è di arrivo o quelli in partenza se la città è di partenza, ci sarà anche un altro bottone che se selezionati sia la citta di partenza che quella di arrivo farà partire la ricerca del percorso migliore per collegare le due città e per finire un tasto reset. Tutti i risultati compariranno in un campo sotto i vari bottoni e menù e comprenderanno i vari voli con rispettive date di partenza e arrivo senza utilizzo del ritardo in quanto non mi sembra utile in questo specifico caso.

fulcorno commented 1 year ago

La proposta mi sembra eccessivamente semplice, e troppo simile agli esercizi già svolti durante il corso. In particolare, l'utilizzo di un algoritmo ricorsivo non mi sembra per nulla utile, perché il problema si può risolvere in modo molto più efficiente con algoritmi polinomiali come quello di Dijkstra per il calcolo dei cammini minimi.

Il data-set può andare bene, ma è necessario proporre un problema più articolato (ed originale), che vada al di là di quanto si fa in una esercitazione di laboratorio.

LucaFaieta commented 1 year ago

Se invece simulassi un ipotetico operatore della IATA con il compito di valutare le diverse compagnie in base al ritardo accumulato sui voli dove l'utente seleziona un aeroporto di partenza e uno di arrivo e il programma faccia fare all'operatore più voli possibili all'operatore che andrà a valutare ogni compagnia utilizzata tramite un punteggio basato sulla precisone del volo e alla fine la valutazione verrà stampata a schermo?