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

Applicazione Java per la creazione di un itinerario su strada in giro per l'Italia #117

Closed Auroraleone closed 8 months ago

Auroraleone commented 8 months ago

Studente proponente

s285107 Leone Aurora

Titolo della proposta

Applicazione Java per la creazione di un itinerario su strada in giro per l'Italia

Descrizione del problema proposto

L'obiettivo principale è sviluppare un'applicazione dedicata alla pianificazione di viaggi su strada in Italia, offrendo agli utenti un modo efficiente per organizzare gite in giornata o lunghe vacanze in giro per le principali città del Paese. Gli utenti potranno selezionare la città di partenza, definire un budget, stabilire il numero massimo di giorni disponibili, indicare la durata desiderata del soggiorno in ciascuna città e specificare la data e l'orario di partenza. Inoltre, avranno l'opzione di concentrarsi su una regione specifica, preferire una zona geografica dell'Italia (nord, sud, centro) o esplorare l'intera nazione. L'utente potrà anche personalizzare ulteriormente l'itinerario, indicando se desidera includere località di mare o di montagna nel suo viaggio. L'applicazione calcolerà automaticamente un itinerario ottimizzato, tenendo conto di tutte le preferenze dell'utente. L'obiettivo è massimizzare il numero di città visitabili, sempre rispettando i filtri impostati dall'utente. Un'altra versione consente all'utente invece di scegliere le città che desidera visitare e l'applicazione calcolerà la soluzione migliore che minimizza la spesa.

Descrizione della rilevanza gestionale del problema

L'obiettivo è di creare itinerari turistici ottimali basati sulle preferenze individuali dell'utente, rendendo questa applicazione altamente adatta sia per tour operator e agenzie di viaggio specializzate nella progettazione di itinerari personalizzati. Potrebbe essere l'applicazione perfetta per gli appassionati di viaggi on the road. Quest'ultima categoria di viaggiatori potrebbe trovare in questa app un prezioso alleato, specialmente quando si tratta di decidere quali luoghi visitare. Questa applicazione è particolarmente ideale per gite di qualche giorno, offrendo l'opportunità di scoprire ulteriormente il territorio italiano. La sua capacità di offrire suggerimenti dettagliati può sicuramente incentivare il turismo interno, fornendo agli utenti idee chiare su dove andare, contribuendo a scoprire le più belle città italiane.

Descrizione dei data-set per la valutazione

Non avendo trovato online i database necessari, l'idea è di crearlo utilizzando i dati raccolti da varie fonti attendibili. Il database sarà diviso in due tabelle, così strutturate:

TABELLA PERCORSI:

TABELLA CITTÀ:

Per ottenere i dati sui costi e i tempi di viaggio stimati, utilizzeremo fonti affidabili come https://www.autostrade.it/it/pedaggio e https://www.viamichelin.com/. Queste fonti forniranno le informazioni necessarie per alimentare il database in modo accurato.

L'obiettivo è di includere le principali città per ogni regione, circa cinque per ciascuna di esse, in modo da coprire ampiamente l'intero territorio italiano. In questo modo, gli utenti potranno creare itinerari anche all'interno delle singole regioni, ampliando così le opzioni di viaggio. Rendendo così l'applicazione adatta anche per organizzare brevi gite nella propria regione.

Descrizione preliminare degli algoritmi coinvolti

L'applicazione parte dalla raccolta dei dati inseriti dall'utente e li utilizza per creare un grafo pesato. Ogni vertice di questo grafo rappresenta una città, mentre gli archi tra i vertici rappresentano i collegamenti stradali tra le città, con il loro peso che corrisponde al costo del percorso da percorrere. Il grafo comprende la città di partenza specificata dall'utente e tutte le città che soddisfano i filtri impostati dall'utente.

Una volta creato il grafo, l'applicazione utilizza un algoritmo ricorsivo per determinare l'itinerario ottimale. Quest'ultimo deve rispettare tutte le preferenze dell'utente e massimizzare il numero di città da visitare. Esistono due modalità di utilizzo dell'applicazione, che sono spiegate di seguito.

Nella prima, l'applicazione suggerisce all'utente le città da visitare, considerando tutte le città nel database che soddisfano i filtri impostati, calcola la combinazione ottima. In questa versione, una volta ottenuta la combinazione ottima, l'applicazione offre inoltre la possibilità di rimuovere alcune città dal percorso, ad esempio perché l'utente le ha già visitate o per semplice preferenze personali. In questo caso, l'algoritmo verrà nuovamente applicato al grafo ridotto, consentendo all'utente di calcolare una nuova soluzione ottimale senza le città non desiderate.

Nella seconda versione, l'utente ha il controllo completo e può selezionare manualmente le città da visitare. L'algoritmo troverà quindi la combinazione di città che minimizza i costi di viaggio, identificando gli itinerari più economici e indicherà all'utente i giorni necessari per completarlo.

In entrambe le versioni, all'utente verrà mostrato l'itinerario completo e per ogni città alcune attrazioni consigliate.

Descrizione preliminare delle funzionalità previste per l’applicazione software

L'applicazione richiede all'utente di fornire una serie di dettagli essenziali per la creazione di un itinerario di viaggio su misura:

L'applicazione genererà un itinerario di viaggio in grado di soddisfare tutte le preferenze e i requisiti dell'utente, massimizzando il numero di città visitate. Inoltre, per ciascuna città inclusa nell'itinerario, l'applicazione fornirà una lista di attrazioni principali. Se l'utente non è interessato a visitare alcune delle città consigliate, avrà la possibilità di escluderle dall'itinerario e far riprogettare un nuovo piano, consentendo così all'utente di personalizzare completamente il proprio viaggio.

In alternativa, l'applicazione supporterà anche la creazione di itinerari basati sulla scelta dell'utente, consentendo di selezionare una serie di città preferite. In questo caso, l'applicazione calcolerà il tempo e il costo necessari per percorrere il percorso selezionato dall'utente.

fulcorno commented 8 months ago

Il dominio applicativo è pertinente e gli algoritmi proposti sono in linea con i requisiti, quindi la proposta è accettata. In particolare mi pare interessante la funzionalità di "cancellare delle città" per personalizzare/raffinare il percorso.

Farei attenzione alla complessità della ricorsione, con molte città potrebbe essere non fattibile.

Inoltre credo che si possano ridurre le funzionalità dell'applicazione, concentrandosi su quelle maggiormente centrali. Inutile disperdere troppe energie con funzioni secondarie.

Auroraleone commented 4 months ago

Inizialmente, avevo concepito l'idea di non porre limiti al numero di regioni che l'utente potesse visitare, consentendo teoricamente di attraversare l'intera nazione. Tuttavia, ho riscontrato delle difficoltà nell'implementare una soluzione che non sovraccarichi l'applicazione quando l'utente decide di includere un numero eccessivo di regioni nel suo percorso. Pertanto, la mia proposta sarebbe quella di limitare il numero di regioni a 4 o 5, al fine di non sovraccaricare l'applicazione. Inoltre, avevo inizialmente ipotizzato la presenza di almeno 5 città per ogni regione nel mio progetto. Tuttavia, durante la fase di creazione manuale del database, ho constatato che ciò richiedeva un notevole investimento di tempo. Attualmente, il database contiene 3 o 4 città per regione. Vorrei sapere se tale numero possa andare bene ugualmente, con l'intenzione di ampliarlo nel caso avessi ancora tempo a sufficienza.