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

Simulazione di una stagione di F1 gestendo lo sviluppo tecnico di una scuderia #118

Closed TheLostUchica closed 5 months ago

TheLostUchica commented 6 months ago

Studente proponente

s281965 Lapadula Mario Francesco Pio

Titolo della proposta

Simulazione di una stagione di F1 gestendo lo sviluppo tecnico di una scuderia

Descrizione del problema proposto

L’applicazione permette di indossare i panni di una scuderia di F1 e simulare una stagione avendo la possibilità di investire una somma di denaro limitata in 6 diversi reparti tecnici. E’ inoltre possibile cambiare i piloti della propria squadra prima dell’inizio della stagione.

Tramite un numero elevato di simulazioni si potrà capire quale sarà la miglior coppia di piloti e il miglior piano di investimenti per massimizzare il risultato del team.

Descrizione della rilevanza gestionale del problema

In F1 è in vigore un regolamento che impone una somma di denaro massima per lo sviluppo della vettura per garantire parità di condizioni di partenza tra i vari team; diventa importantissimo la scelta e il bilanciamento tra i vari investimenti.

La sfida gestionale consiste nell’ottimizzazione di una strategia di investimento nei vari settori tecnici, verificando quanto ogni diversa combinazione di asset possa apportare cambiamenti sul rendimento finale.

E’ fondamentale valutare l’investimento in relazione alle caratteristiche del team scelto nella simulazione, in quanto potrebbe essere poco efficace andare ad investire tanto su un reparto in cui si è già abbastanza competitivi.

Significativa è anche la scelta dei due piloti per massimizzare il rendimento del team.

Descrizione dei data-set per la valutazione

L’applicazione fa uso di diversi dataset: -statistiche qualitative dei piloti aggiornate all’estate 2022 rilasciate dal videogioco F1 2022, prodotto da Codemaster e EA con la licenza ufficiale della F1; -statistiche tecniche sui circuiti di gara dal sito https://tracks.f1setup.it/; -statistiche tecniche delle scuderie provenienti dal videogioco F1 2022 prodotto da Codemaster e EA con la licenza ufficiale della F1; -statistiche qualitative sullo staff tecnico di ogni team raccolte dal videogioco F1 Manager 2022, che detiene la licenza ufficiale della F1; -statistiche su ogni circuito riguardo alla probabilità che si verifichino situazioni particolari (es. pioggia, incidenti, ecc...); -risultati dei weekend di gara dal 2014 in poi (anno in cui è entrato in vigore l’attuale macro-regolamento tecnico con l’introduzione dei motori v6) disponibili all’indirizzo http://ergast.com/mrd/db.Il database è rilasciato con licenza “Attribution-NonCommercial-ShareAlike 3.0 Unported Licence”.

Descrizione preliminare degli algoritmi coinvolti

Il principale algoritmo coinvolto è una simulazione a eventi discreti.

L’intera stagione sarà divisa in eventi chiamati ‘Weekend’ che a loro volta saranno divisi in ‘Qualifica’ e ‘Gara’. Ci sarà un ‘Weekend’ per ogni appuntamento nel calendario della stagione.

All’inizio di ogni weekend di gara verranno calcolati gli indici di prestazione delle vetture dei vari team in base ai dati tecnici disponibili nel database e correlate alle caratteristiche della pista che ospiterà il weekend di gara.

Esempio: sul tracciato di Montecarlo, che presenta un rapporto bassissimo rettilinei/curve e soprattutto molte curve strette, saranno più competitive le vetture che presentano un buon livello di aerodinamica e/o telaio, mentre non peserà granché il dato sulla qualità del reparto motoristico.

Dopodiché saranno calcolate anche le prestazioni dei piloti in base alla pista. Esempio: un pilota, con alti valori di gestione gomma su una pista con un alto consumo gomme, avrà un’alta prestazione.

Dopo aver calibrato le prestazioni di vetture e piloti in base al circuito si procede con la simulazione delle qualifiche divise nelle sessioni Q1, Q2, Q3, che andranno a stabilire la griglia di partenza per la gara. Nella simulazione della qualifica verranno prese in considerazione le prestazioni aggiornate dei team e alcune caratteristiche dei piloti legate alla velocità sul giro secco.

Finita la simulazione delle qualifiche, inizia la simulazione della gara. La prima fase di gara è la partenza, momento in cui c’è un’alta possibilità per un pilota di compiere e/o subire un sorpasso, come anche di fare un incidente. Dopo la partenza la gara procede in maniera lineare: in ogni giro i piloti segnano un tempo in base alle proprie statistiche combinate con fattori randomici. Se il distacco tra due piloti è inferiore a 0.5 secondi, si simulerà il tentativo di sorpasso. Durante la gara possono verificarsi eventi particolari, come incidenti, problemi tecnici, problemi al pit stop e pioggia. La probabilità di questi eventi è legata al tracciato che ospita la gara e a caratteristiche tecniche delle scuderie (es. affidabilità e qualità della pit crew), oltre che a variabili aleatorie. Alla fine della gara si stila l’ordine di arrivo e si assegnano i punteggi.

Alla fine di ogni ‘Weekend’ la classifica verrà aggiornata. Questo iter continuerà fino al fine della stagione di gara in corso.

A quel punto verrà stilata la classifica finale per i piloti e per i costruttori (vale a dire quella delle scuderie).

Descrizione preliminare delle funzionalità previste per l’applicazione software

L’utente potrà scegliere se simulare la stagione assumendo le vesti di una scuderia o se simularla senza apportare alcun cambiamento.

Potrà scegliere la scuderia da gestire da un menu a tendina e potrà inserire l’importo da investire in ognuno dei 6 reparti tecnici in campi di testo dedicati. L’utente dovrà rimanere entro la somma massima di 140 milioni di dollari, imposta dal nuovo regolamento di F1, che se non rispettata impedirà l’avvio della simulazione.

Cliccando su una checkbox potrà attivare la possibilità di cambiare i piloti della propria scuderia con quelli di altre scuderie. Per selezionare il pilota da aggiungere al team sarà disponibile un menu a tendina popolato con tutti i piloti del circus.

Una volta completato l’inserimento dei dati potrà avviare la simulazione tramite un pulsante dedicato.

Completata la simulazione verranno stampati in due campi testuali separati la classifica piloti e la classifica costruttori. Inoltre, tramite un pulsante si potrà stampare l’ordine di arrivo di una qualsiasi gara della stagione scelta selezionandola da un menu a tendina che verrà abilitato solo quando la simulazione sarà completata.

Nel caso di mancato inserimento dei dati o errori non sarà possibile avviare la simulazione.

L’utente potrà liberare le caselle di testo con un pulsante ‘Cancella’ per ritentare la simulazione con nuovi dati.

fulcorno commented 5 months ago

L'ambito applicativo è adeguato e gli aspetti algoritmici sono corretti. Aggiungerei solo la possibilità di visionare lo "storico" delle simulazioni fatte (modificando i parametri, salviamo i risultati ottenuti, e mostriamo una tabella con le simulazioni eseguite, in modo da facilitare il confronto). Con questa precisazione, la proposta è accettata.