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

Planner logistico per ritiro e consegna di buste leggere con droni #46

Closed marcopulita closed 4 years ago

marcopulita commented 4 years ago

Studente proponente

s242664 Marco Pulita

Titolo della proposta

Planner logistico per ritiro e consegna di buste leggere con droni

Descrizione del problema proposto

Implementazione di un pianificatore per il ritiro e la consegna di buste leggere tra clienti di una piccola città tramite l'uso di droni. Ogni drone è equipaggiato con un portadocumenti automatico che ritira presso il cliente A una busta di un formato specifico, la registra tramite QRCODE e si avvia per la consegna. La pianificazione dei ritiri e delle consegne e' gestita dalla centrale che invia le coordinate di ritiro e consegna al singolo drone. In tempo reale lo scheduler della centrale, conoscendo la posizione dei singoli droni, assegna ai droni in modo ottimale gli ordini di ritiro e consegna basandosi sulla posizione del drone e sulla percentuale di batteria restante. Ogni drone ha un'autonomia delle batterie tale da percorrere 50km, consuma quindi il 2% di batteria ogni km. La città ha un raggio di 25km e la società di spedizioni ha la sua sede nel centro della città. Il drone può accettare nuovi ordini di lavoro solo se l'autonomia della batteria stimata a consegna completata è almeno del 30%, in caso contrario deve fare rientro e può riprendere le attività il giorno successivo. Le consegne vengono programmate ogni 30 minuti dalle 9 alle 17 (16 time slot totali). Se un drone non ha consegne in programma per il time slot successivo, dopo aver atteso fermo nel punto dell'ultima consegna del time slot corrente, riceve l'ordine di ritorno in sede ma a differenza del drone con batteria scarica, se la batteria permette ancora consegne può essere riutilizzato pianificando la consegna successiva dalla sede. Si possono aggiungere o rimuovere droni (ad esempio se necessitano di riparazione) Per semplicità il tempo di percorrenza non viene considerato e le posizioni sono gestite come dati discreti aggiornati ad ogni time slot di 30 minuti.

Descrizione della rilevanza gestionale del problema

L'applicazione che si vuole implementare soddisfa uno dei più classici problemi di logistica, la consegna. Qui il vincolo del "carburante" (consumo della batteria) si aggiunge alla ricerca del cammino ottimo ed e' molto stringente, il drone infatti non può fare rifornimento in modo agevole. Bisognerà quindi studiare un algoritmo dinamico che gestisca le consegne su zona, a cluster, basandosi su cammino più breve e durata della batteria.

Descrizione dei data-set per la valutazione

Il dataset puo' essere costruito da zero, consisterà principalmente in una serie di coordinate geografiche relative ai punti di ritiro e consegna. Avremo dati di controllo quali le informazioni sui droni inclusa la loro posizione (che per semplicità viene gestita come dato discreto, un grafo)

Descrizione preliminare degli algoritmi coinvolti

L'applicazione farà uso di grafi per la gestione delle posizioni. Andrà studiato un algoritmo per la ricerca del cammino ottimale nei grafi che si adatti alla dinamicità del problema; si possono infatti ricevere ordini di ritiro in qualunque time slot della giornata e il percorso ottimale va quindi ricalcolato ogni 30 minuti. Il funzionamento dell'applicazione viene valutato con dataset di simulazione (ordini di consegna).

Descrizione preliminare delle funzionalità previste per l’applicazione software

L'applicazione sarà principalmente una dashboard di monitoraggio in cui sarà possibile visualizzare il percorso effettuato dal drone, la % di batteria rimanente e il percorso programmato ancora da completare. Sarà possibile aggiungere nuovi droni, rimuoverli per manutenzione ed inserire la programmazione delle consegne.

fulcorno commented 4 years ago

Il problema è rilevante e la parte algoritmica è convincente. La criticità principale è la creazione di un data-set di ordini di consegna che sia convincente e realistico (e riesca anche a modellare il fatto che nuovi ordini arrivano ogni mezz'ora). Quali sono le fonti dati da cui puoi attingere? generarli "a caso" non mi sembra una buona idea, perché non permette all'algoritmo di lavorare in condizioni realistiche. Risolto questo dubbio sul data-set, la proposta può essere accettata.

marcopulita commented 4 years ago

Buongiorno Prof, Avrei trovato questo dataset ad uso pubblico: https://hifld-geoplatform.opendata.arcgis.com/datasets/01e20444878040278d4d99d0bbe95654_0/data?orderBy=LAST_PICKUP&page=34&selectedAttribute=FEATURE_ID L'unico dubbio e' che relativo ad US quindi l'area sarebbe molto vasta non compatibile con l'uso di droni. Avrei 2 possibili soluzioni: 1) adattare le coordinate geografiche rapportandole piu' in piccolo e "pescare random dal dataset un certo numero di richieste per la simulazione" 2) riadattare il problema per la spedizione di pacchi tramite vettore aereo, ma in questo caso il problema andrebbe rivisto e perderebbe la dinamicita' della rielaborazione delle consegne ogni 30 minuti. Io sarei propenso a riadattare le coordinate geografiche proporzionalmnete. Cosa ne pensa?

fulcorno commented 4 years ago

ci vedo una terza possibilità (se i dati lo permettono): estrarre un sottoinsieme dei dati relativo ad una sola città (o contea, o range di coordinate), che siano analoghe all'area copribile con i droni. Bisogna però verificare se con questo "taglio" ci sono ancora dati sufficienti per rendre l'algoritmo funzionante. Altrimenti concorto con te sulla soluzione 1.

marcopulita commented 4 years ago

Buonasera Prof, ho appena verificato e per quanto si possa estrarre un buon insieme di dati, ad esempio su Atlanta (280 ritiri), Dallas (250) o Houston (450) questi sono tutti concentrati nelle ore serali (dalle 5 alle 7). Per avere a disposizione tutte le fasce orarie e' necessario lavorare su tutto il dataset. Preparero' un riadattamento proporzionale e valuteremo se possa andare bene.

Grazie Buona serata Marco Pulita

marcopulita commented 4 years ago

Ho un'altra opzione. Cosa ne pensa se gli ordini di ritiro venissero pescati a caso ad ogni time slot dal dataset relativo ad una specifica citta'? Ipotizzando una delle 3 citta' con maggiori ritiri, si avrebbe un dataset reale con 250-450 ritiri possibili e la casualita' nell'ordine di arrivo sarebbe anche abbastanza realistica. Chiaramente l'insieme degli ordini di ritiro sarebbe una lista da cui verrebbero di volta in volta rimossi gli elementi usati.

fulcorno commented 4 years ago

Potrebbe andare bene una combinazione dei tuoi ultimi 2 suggerimenti:

Con queste precisazioni, la proposta è accettata.