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

Proposta prova finale: Assistenza hotspot Wi-Fi pubblici della città di New York #17

Closed eugenioeerrigo closed 5 years ago

eugenioeerrigo commented 5 years ago

Studente proponente

s223412 Errigo Eugenio Simone

Titolo della proposta

Assistenza hotspot Wi-Fi pubblici della città di New York

Descrizione del problema proposto

Si intende creare un’applicazione JavaFX da usare in ambito industriale, in grado di ricercare il cammino di costo minimo all’interno di un grafo che rappresenta le distanze di intervento tra gli hotspot pubblici della città di New York. In particolare, l’azienda è incaricata dai fornitori del servizio Wi-Fi pubblico, interessati alla riparazione/sostituzione di tutti gli hotspot, del rinnovamento della linea. Il manager può ottenere delle stime sul tempo di lavoro, in modo da pianificare i turni, rispetto al tempo disponibile e ai percorsi che lo minimizzano.

Descrizione della rilevanza gestionale del problema

Oggigiorno in azienda vengono usati numerosi software per la pianificazione. Il problema di controllo logistico mira ad ottimizzare i tempi e a migliorare il servizio, riducendone i costi. La pianificazione dei turni è un problema realmente affrontato nella gestione di un’azienda che, però, ha bisogno di numerosi parametri “umani”. L’applicazione produce una stima quanto più veritiera possibile, che, integrata con l’esperienza e con le competenze, fornisce un’ottima approssimazione.

Descrizione dei data-set per la valutazione

Il data-set “NYC Wi-Fi hotspot location” contiene i dati reali sulla distribuzione degli hotspot nella città di New York. I dati sono aggiornati ad Ottobre 2018 e sono resi disponibili da NYC Open data sul sito www.kaggle.com. Il database è costituito da una sola tabella, con molteplici campi: l’hotspot è identificato da un id e SSID, dalla sua posizione (latitudine e longitudine, città, distretto), il nome del provider, il tipo di servizio, e molteplici altri dati non utili ai nostri fini. Il dataset è in formato CSV (Comma-Separated Values).

Descrizione preliminare degli algoritmi coinvolti

L’applicazione implementa un algoritmo ricorsivo con lo scopo di trovare il cammino ottimale, ossia la sequenza di riparazioni che minimizza la distanza da percorrere per raggiungere tutti gli hotspot del quartiere. Il problema proposto è una applicazione del Travelling Salesman Problem. Il grafo rappresenta la mappatura degli hotspot (vertici), ed un arco collega due hotspot se il peso dell’arco è minore della disponibilità del tecnico di spostarsi (input utente). Vengono effettuati controlli sulla coerenza e integrità dei dati, con la presenza di messaggi di errore in caso di fallimento. L’applicazione è implementata secondo il pattern MVC (Model-View-Controller).

Descrizione preliminare delle funzionalità previste per l’applicazione software

L’applicazione JavaFX permette all’utente di relazionarsi con un’interfaccia grafica, tramite cui scegliere il provider a cui fornire assistenza ed un distretto di New York. Infine, è possibile impostare la distanza massima (in metri) tra i luoghi di intervento (hotspot). Il risultato ottenuto sarà visibile sulla stessa interfaccia e conterrà l’elenco ottimale di hotspot da attraversare, con delle stime sulla distanza e sul tempo. Inoltre, in caso di errore, l’utente è in grado di avere un feedback su quanto accaduto.

fulcorno commented 5 years ago

Ho due dubbi su questa proposta:

  1. come si decide "quali" sono i router che necessitano riparazione? è un dato generato casualmente? oppure esiste uno storico di guasti realmente avvenuti?

  2. con il criterio "il tecnico si sposta solo di piccole distanze", si rischia di avere un grafo fortemente disconnesso. Se ho 3 guasti in 3 punti diversi dalla città, è estremamente improbabile che essi siano più vicini della distanza minima impostata (a meno che tale distanza minima sia molto grande, il che renderebbe il grafo molto denso ed i tempi di elaborazione inaccettabili).

eugenioeerrigo commented 5 years ago

Buongiorno, l'intento della proposta è realizzare un cammino di costo minimo (distanza minima, in linea d'aria) per il tecnico all'interno di un distretto e per un provider specifico (dati in input), il che rende il grafo costruito meno denso e i dati più gestibili. Ad esempio, all'interno di un distretto di estensione 280 metri quadri (Queens) il tecnico potrebbe doversi muovere fino a 25 km, il che è accettabile. Se poi si vuole avere una stima sul tempo, si potrebbe impostare una velocità media del tecnico per spostarsi e il tempo di riparazione (a cui può essere aggiunta una variabilità) ; in questo modo, si riesce a quantificare il numero di tecnici necessari o il numero di giorni di lavoro. La distanza inserita in input è quella massima, per punti molto vicini è più semplice per il tecnico effettuare le riparazioni ed è ragionevole che questa distanza non sia mai impostata molto piccola (almeno 1km). Per quanto riguarda la scelta dei router da riparare, io avevo pensato fossero tutti da sostituire in un distretto e per un provider, ma si può facilmente decidere di inserire la scelta della probabilità di guasto in input, in modo da ridurre i tempi di elaborazione.

fulcorno commented 5 years ago

ok, capisco il tuo ragionamento sulla distanza, quando dici che vuoi sostituire "tutti" i router. Mi pare più interessante il caso in cui si debbano sostituire un sosttoinsieme (probabilistico) di router. In tal caso, le porzioni di grafo potrebbero essere disconnesse, e quindi occorre risolvere due TSP distinti sulla prima e sulla seconda parte (la complessità è minore, ovvio il programma si complica un po'). Direi che si può procedere con queste ultime precisazioni: