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 di tesi 283738 #105

Closed MichiDM closed 1 year ago

MichiDM commented 1 year ago

Studente proponente

s283738 Della Mura Michele

Titolo della proposta

Simulatore incidenti stradali

Descrizione del problema proposto

I sinistri sono eventi che richiedono una rapida risposta da parte delle unità di soccorso per fornire assistenza medica tempestiva alle vittime coinvolte. Tutto ciò richiede una serie di azioni coordinate, come: la valutazione della gravità e la localizzazione delle ambulanze più vicine all’ incidente, il calcolo del percorso ottimale per raggiungere il luogo del sinistro e il coordinamento delle risorse disponibili. Il progetto vuole quindi affrontare il problema di gestione di allocazione di veicoli di soccorso negli ospedali situati nei diversi quartieri della città di Los Angeles attraverso una simulazione di un pronto intervento di ambulanze al verificarsi di incidenti stradali.

Descrizione della rilevanza gestionale del problema

L'obiettivo principale è quello di creare un ambiente simulato che permetta, attraverso l’analisi dei risultati di output, di osservare il numero di persone soccorse in funzione dei parametri di input impostati dall’utente: il numero di distretti che ha un ospedale e il numero di ambulanze per ospedale. Dal punto di vista gestionale risolvere questo problema è di grande importanza per le strutture ospedaliere e per la stessa città di Los Angeles. Infatti, per le prime permette di stimare all’incirca quante ambulanze devono avere per poter riuscire a garantire il loro servizio a più persone possibili; per la città americana permette di valutare il numero ottimale di quartieri che devono avere un ospedale (ipotizzo che un quartiere possa avere al massimo un ospedale).

Descrizione dei data-set per la valutazione

Il database riflette gli incidenti di collisione stradale nella città di Los Angeles a partire dal 2010 fino al 2023. In particolare il data-set utilizzato è costituito da una tabella che contiene 594000 righe, dove ogni riga rappresenta un incidente stradale. Ogni incidente è poi rappresentato da distinte caratteristiche, identificate dai nomi delle diverse colonne. Nel progetto in esame vengono utilizzate le seguenti colonne: Date Reported, Area ID, Area Name, Victim Age, Victim Sex, Premise Description, Location.

Il data-set è disponibile al seguente link: data.lacity.org/Public-Safety/Traffic-Collision-Data-from-2010-to-Present/d5tf-ez2w

Descrizione preliminare degli algoritmi coinvolti

Gli algoritmi coinvolti sono un algoritmo di simulazione e un algoritmo sulla ricerca di cammini minimi tra un nodo sorgente ed uno di destinazione all’interno di un grafo, cioè l’algoritmo di Dijkstra. La simulazione è impostata come segue:

  1. Inizialmente tutte le ambulanze si trovano nell’ospedale del distretto di appartenenza. L’utente imposta un valore come parametro di ingresso per i distretti che devono avere un ospedale (e quindi una/delle ambulanza/e). Se ad esempio immette il valore 3, i distretti con “Area ID” pari ad 1, 2, 3 hanno gli ospedali.

  2. Successivamente al verificarsi di un evento interviene la croce rossa disponibile dell'ospedale del distretto più vicino al luogo dell’incidente. Nello specifico:

Il tempo di percorrenza viene poi calcolato attraverso i km di distanza tra il nodo sorgente e il nodo destinazione e la velocità dell’ambulanza, che è in funzione delle condizioni di traffico stradale: 40 km/h in condizioni di ingorgo; 70 km/h altrimenti. La presenza di traffico è un dato scelto dall’utente in input attraverso l’inserimento di un numero da 0 a 1 che rappresenta la probabilità che l’ingorgo stradale si verifichi.

  1. Ogni evento è rappresentato da un codice di emergenza diverso. Il codice è rosso quando la vittima risulta essere una persona con età minore di 18 o maggiore di 70 anni. In ogni altro caso il codice risulta giallo. Per codici rossi l’ambulanza deve arrivare entro i 10 minuti rispetto alla data in cui è avvenuto l’incidente (colonna “Reported Date”) mentre per codici gialli entro i 20 minuti. Se ciò non accade, la vittima si considera deceduta. Viceversa se la croce rossa arriva in tempo sul luogo, per prestare soccorso al ferito impiega 15 minuti per codici rossi e 30 minuti per codici gialli.

  2. Infine il veicolo di soccorso deve tornare all’ospedale di appartenenza per permettere alla vittima stradale di avere cure più specifiche. Il tempo di percorrenza per tornare al nodo di partenza è pari allo stesso tempo calcolato al punto 2. Ritornato al vertice sorgente il veicolo risulta libero per soccorrere altre vittime.

Descrizione preliminare delle funzionalità previste per l'applicazione software

  1. All’avvio del programma viene richiesto all’utente di scegliere da un menù a tendina un numero da 2010 a 2022 che rappresenta l’anno in cui si vuole considerare gli incidenti stradali (non considero i dati del 2023 poiché è l’anno in corso).

  2. Successivamente è possibile cliccare sul pulsante “Crea città”. Il bottone crea un grafo con i vertici che rappresentano i ventuno distretti della città (rappresentati dalle colonne “Area ID” e “Area Name”) di quell’anno considerato mentre il peso degli archi non orientati rappresenta la distanza in km tra un distretto ed un altro. La distanza è calcolata attraverso la latitudine e la longitudine propria di ogni distretto, che si trova nella colonna “Location”. Dato che la latitudine e la longitudine nel database non rappresentano le coordinate del quartiere della città ma rappresentano la strada specifica di quel distretto dove è avvenuto l’incidente, posso:

    • calcolare la media di tutti i valori di latitudine e di longitudine di quegli incidenti che appartengono allo stesso distretto (stesso valore nella colonna “Area ID”);
    • impostare il valore mediano come coordinate geografiche del distretto.
  3. Dopo la creazione del grafo viene richiesto all’utente di immettere i parametri della simulazione:

  1. In seguito cliccando sul bottone “Simula” è possibile lanciare la simulazione. In output saranno visibili in un’ area di testo il numero di persone salvate, i tipi di struttura o luoghi in cui si sono verificati gli incidenti (colonna “Premise Description”) e il numero totale di sinistri che si sono verificati in quell’arco temporale.
fulcorno commented 1 year ago

La proposta è accettata. Non mi piace solamente il posizionamento iniziale di ospedali ed ambulanze (piuttosto che assegnare i distretti di ID 1,2,3 avrebbe più senso scegliere 3 distretti casualmente, specificando il numero totale di ospedali ed in numero totale di ambulanze, per esempio.)