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

Simulatore dell'ATP Tour 2024 #123

Closed GabrieleDegioanni closed 1 week ago

GabrieleDegioanni commented 1 month ago

Studente proponente

s282617 Degioanni Gabriele

Titolo della proposta

Simulatore dell'ATP Tour 2024

Descrizione del problema proposto

L'obiettivo del programma è quello di simulare realisticamente l'intero ATP Tour 2024: l'insieme di tornei di tennis di massimo livello organizzati dall'ATP. Sulla base dei dati raccolti nel 2023 relativi a ciascun giocatore e a ciascun torneo e attraverso la simulazione di ogni punto di ogni partita di ogni torneo, si vogliono decretare la classifica finale, i guadagni e le statistiche aggiornate. Per raggiungere lo scopo è altresì necessario occuparsi della creazione dei tabelloni dei tornei seguendo le diverse regole di accesso ed evitando la partecipazione ad eventi tenuti negli stessi giorni.

Descrizione della rilevanza gestionale del problema

Il problema è interessante dal punto di vista gestionale per vari aspetti: in primis, l'organizzazione di più di 60 tornei, l'iscrizione dei giocatori rispettando tutti i vincoli di idoneità e la creazione dei tabelloni in modo da avere le partite con più visibilità nelle fasi finali sono esigenze reali che coinvolgono migliaia di lavoratori; in secondo luogo, per le squadre che si occupano della gestione dei giocatori sono ormai imprescindibili i dati relativi ad ogni fondamentale per conoscere i punti di forza e i punti deboli propri ed altrui; infine, la previsione dei risultati sportivi che si potrebbero ottenere può essere utile per stimare sia i guadagni provenienti dal campo sia quelli dovuti al valore commerciale del giocatore (sponsor e media).

Descrizione dei data-set per la valutazione

I dati sono interamente tratti dal sito ufficiale dell'ATP (https://www.atptour.com/en/rankings/singles) e sono stati raccolti da Infosys, partner dei tornei ed una delle più grandi compagnie di data analysis al mondo (per maggiori informazioni: https://www.infosys.com/atp/tennis-platform.html). Non avendo accesso ai database dell'organizzazione, l'inserimento dei dati in tabelle è stato effettuato attraverso fogli di calcolo facilmente importabili su DBeaver. I data-set sono due: uno relativo ai giocatori e l'altro ai tornei. Il primo ha come chiave primaria il nome del giocatore e contiene sia informazioni personali (età, nazionalità e migliore posizione in classifica ottenuta in carriera) sia statistiche di gioco relative al 2023 (posizione in classifica a fine tour, punti ATP ottenuti, percentuale di prime in campo, percentuale di punti vinti con prima in campo, percentuale di punti vinti con seconda in campo, numero di ace, percentuale di ace, numero di doppi falli, percentuale di doppi falli, percentuale di punti vinti al servizio, percentuale di punti vinti in risposta sulla prima, percentuale di punti vinti in risposta sulla seconda, percentuale di punti vinti). Il secondo ha come chiave primaria il nome del torneo e contiene informazioni sul tipo di torneo (Slam, Master 1000, Atp500, Atp250 o AtpFinals), sulla superficie (cemento, erba o terra rossa), le date di inizio e di fine e il montepremi complessivo.

Descrizione preliminare degli algoritmi coinvolti

Il software sarà realizzato in linguaggio Python utilizzando i pattern MVC, DAO e ORM. In primis, serviranno algoritmi per l'estrazione dai database e la memorizzazione dei dati. Per la simulazione, invece, serviranno algoritmi per determinare la vittoria di punti, game, set, partite e tornei. I punti saranno simulati interamente a partire dalle percentuali contenute nel data-set, effettuando estrazioni diverse a seconda della situazione (es. se la prima non è "entrata" si dovrà estrarre per determinare se "entra" la seconda o se si commette doppio fallo). L'algoritmo per simulare i game dovrà tenere il punteggio e determinare se il game è stato vinto (con particolare attenzione ai vantaggi) e da chi. L'algoritmo per simulare i set dovrà tenere il conto dei game e determinare se il set è stato vinto e da chi. Nel caso in cui il set non fosse concluso dovrà iniziare un nuovo game cambiando battitore. Servirà anche tenere in considerazione il caso particolare del tie-break. A seconda del torneo la partita sarà conclusa quando un giocatore vince 2 oppure 3 set. I due giocatori di ciascuna partita saranno determinati dal tabellone, che inizialmente prevede l'abbinamento casuale tra una "testa di serie" (primi 32 posti in classifica) e un altro giocatore. Servirà, dunque, un algoritmo per l'organizzazione e la gestione del tabellone. Durante la simulazione di ciascun torneo, inoltre, bisognerà tenere traccia delle statistiche dei giocatori, dei punti ottenuti e dei guadagni fatti per poterli restituire una volta simulato tutto il tour. Infine, serviranno algoritmi per gestire gli input degli utenti e gli output visualizzati a schermo.

Descrizione preliminare delle funzionalità previste per l’applicazione software

Avviando l'applicazione l'utente potrà scegliere tra 4 funzionalità: