Priorità funzione se

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Chemicalbasket
Messaggi: 4
Iscritto il: lunedì 14 ottobre 2019, 22:23

Priorità funzione se

Messaggio da Chemicalbasket »

Buongiorno, da diverso tempo mi sto dilettando con un tool per un giochino automobilistico. Funziona così: nella parte alta del foglio c'è una tabella in cui sono registrati i tempi su giro di 3 piloti che girano con pista libera (con 3 strategie diverse, ma questo dettaglio non è importante). Il mio obiettivo è provare a simulare una gara utilizzando questi tempi a pista libera. Sotto questa tabella ce ne sono altre 3, nella prima stabilisco le posizioni dei piloti al termine del primo giro, nella seconda stabilisco la differenza di tempo minima per poter effettuare il sorpasso, i distacchi al termine del primo giro e distacchi minimi nei giri successivi e nella terza simulo gara, mettendo il giro, il tempo su giro, il tempo gara e la posizione alla fine di quel giro. Per poter effettuare un sorpasso, un pilota dovrà fare un tempo che, sommato al distacco dal pilota che lo precede e alla differenza di tempo minima per poter effettuare il sorpasso, dovrà essere minore o uguale a quello del pilota che deve superare. Se ad esempio ha un distacco di 0.100 secondi e la differenza di tempo minima per poter effettuare il sorpasso è di 0.500 secondi, dovrà girare almeno 0.600 secondi più veloce del pilota che lo precede, altrimenti si dovrà accodare. Un pilota, quindi, potrà girare con lo stesso tempo effettuato a pista libera solo se è in prima posizione, se potrà effettuare un sorpasso, se è molto distaccato o se il pilota che lo precede è veloce come o più di lui, altrimenti si dovrà accodare con il distacco stabilito in tabella. Il mio problema nasce proprio qui, il pilota in prima posizione girerà come se avesse pista libera, il secondo in funzione del primo e il terzo in funzione del secondo. Con le stringhe che ho formulato, questa simulazione funziona solo se ho 2 piloti, se ne metto 3 o più mi da errore (probabilmente perché il calcolo avviene simultaneamente e non con la sequenza primo, secondo, terzo).
Utilizzo windows 10 e open office 4.1.5, allego il foglio di calcolo.

Grazie in anticipo!
Allegati
sim. gara.ods
Argomento spostato da Discussioni generali e Presentazioni.
(19.49 KiB) Scaricato 104 volte
Chemicalbasket - Openoffice 4.1.5 su Windows 10
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Priorità funzione se

Messaggio da unlucky83 »

Ciao, ho aperto il file e devo farti notare una cosa. Perchè hai bisogno di riportare in D33:D35 le posizioni al primo giro manualmente quando si potrebbe guardare le celle E6 I6 M6? Io qui metterei delle formule così poi quando vuoi fare nuove simulazioni cambi solo i tempi della prima tabella. Infatti nel tuo esempio al primo giro è più veloce strategia2 ma te nella seconda tabella lo hai indicato come terzo. Queste cose pregiudicano tutte le formule successive...sempre se la logica è diversa e quindi dovresti spiegarmela meglio

Il giochino mi sembra interessante, però sistemerei un pò di cose prima di affrontare il problema delle formule inserite nella tabella 4.
In tabella 4 una cosa da fare sarà sicuramente scrivere formule più semplici di come le hai pensate te...per esempio in C46:

Codice: Seleziona tutto

=SE(D33=1;E6;SE(E(D33<>1;D34=1);I6+F38*(D33-1);SE(E(D33<>1;D35=1);M6+F38*(D33-1))))
ti faccio notare che quando D33=1 è falso, non c'è bisogno che usi la funzione E per specificare che deve essere D33<>1. Una formula più lineare è:

Codice: Seleziona tutto

=SE(D33=1;E6;SE(D34=1;I6+F38*(D33-1);M6+F38*(D33-1)))
Ma questa formula è concettualmente sbagliata se guardiamo il primo rigo di tabella 1.
Se Ta,g1 è tempo di a al giro1=95,589 (3*) Sta dietro al secondo, ma il distacco è superiore a 0.1 quindi non si accoda e il tempo effettivo è 95,589
Se Tb,g1 è tempo di b al giro1=94,319 (2*) Sta dietro al primo, ma il distacco è superiore a 0.1 quindi non si accoda e il tempo effettivo è 94,319
Se Tc,g1 è tempo di c al giro1=93,690 (1*) viaggia libero quindi tempo effettivo 93,690
Impostando in D33:D35 la sequenza 3 2 1 esce
Ta,g1 =93,890 (3*)
Tb,g1 =93,790 (2*)
Tc,g1 =93,690 (1*)

Quindi chiariscimi prima la logica di giro 1, perchè di sicuro sono io che non l'ho capita...visto che vuoi fare un giochino immagino che vuoi qualcosa di non statico bensì dinamico e probabilmente ho frainteso l'utilità di tabella 2 e il primo rigo di tabella 1. Grazie

Sarebbe di aiuto un allegato in cui:
in foglio 1 mi metti i risultati manualmente per i primi due/tre giri quando in tabella 2 le posizioni sono 1 2 3
in foglio 2 mi metti i risultati manualmente per i primi due/tre giri quando in tabella 2 le posizioni sono 2 1 3
in foglio 3 mi metti i risultati manualmente per i primi due/tre giri quando in tabella 2 le posizioni sono 3 1 2
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Chemicalbasket
Messaggi: 4
Iscritto il: lunedì 14 ottobre 2019, 22:23

Re: Priorità funzione se

Messaggio da Chemicalbasket »

Ciao unlucky83,
innanzitutto grazie dell'interessamento. La tua osservazione su C46, H46 e N46 è giusta ed ho già provveduto a correggere il tool. Come ho già scritto, questo foglio di calcolo è un tool di studio per la strategia migliore da applicare in una gara. Può capitare di avere un pilota che è più forte in qualifica che in gara e viceversa oppure può capitare che un pilota sbagli il giro di qualifica. In questi casi può succedere che pur avendo una strategia più aggressiva (con gomme più morbide e con un minor carico di benzina) un pilota debba partire dalle retrovie e avere davanti piloti più lenti. A seconda del tracciato su cui ci troviamo, questo può essere un problema più o meno grande, tutto dipende dalla difficoltà dei sorpassi su quello specifico circuito. Questo per dare un significato alla tabella 2. Come dici tu, il primo giro è una forzatura perché può capitare che un pilota giri addirittura più velocemente di quando ha pista libera, però ai fini della scelta di una determinata strategia è un problema piuttosto irrilevante. Inoltre, se scrivo 1 su D33, D34 e D35 ho la possibilità di simulare una gara nella quale tutti i piloti partono dalla stessa linea. Ti allego, come mi hai chiesto, i fogli con i 3 giri inseriti manualmente.
A presto!
Allegati
3 giri fatti manualmente.ods
(15.76 KiB) Scaricato 89 volte
Chemicalbasket - Openoffice 4.1.5 su Windows 10
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Priorità funzione se

Messaggio da unlucky83 »

Chemicalbasket ha scritto: Può capitare di avere un pilota che è più forte in qualifica che in gara e viceversa oppure può capitare che un pilota sbagli il giro di qualifica.
Ciò spiega perchè nell'esempio di Foglio3 la vettura di strategia0 riesce a compiere il primo giro in 94,519 quando tra i suoi tempi a giro libero il migliore è stato 95,4783454545455. Praticamente è andata di molto più veloce in gara.
il primo giro è una forzatura perché può capitare che un pilota giri addirittura più velocemente di quando ha pista libera, però ai fini della scelta di una determinata strategia è un problema piuttosto irrilevante.
Capito, quindi hai pensato di fissare il tempo della vettura che sarà prima, poi le altre si accodano per forza a 0.1s. Mi fido quando dici che è irrilevante :)
Inoltre, se scrivo 1 su D33, D34 e D35 ho la possibilità di simulare una gara nella quale tutti i piloti partono dalla stessa linea.
Questo punto che non è giusto: è la posizione sullo start a inizio gara o è la posizione assunta al termine del primo giro? Secondo me non può avere due significati.
Per chiarezza logica non ti converrebbe chiamarli come posizioni allo start e poi ti calcoli la posizione assunta al termine del primo giro nell'ultima tabella.
A seconda del tracciato su cui ci troviamo, questo può essere un problema più o meno grande, tutto dipende dalla difficoltà dei sorpassi su quello specifico circuito. Questo per dare un significato alla tabella 2.
Mi pare un ragionamento corretto. Difficoltà di sorpasso del tracciato -> Differenza di tempo minima per effettuare il sorpasso [s]
tipo di pista -> Distacchi minimi nei giri successi

Quindi a parte dei dubbi rimanenti sul significato di tabella 1 della simulazione di gara, mi pare chiaro la logica che vorresti seguire per gestire gli altri giri. Dopotutto il primo giro ti sta bene così e il problema sono le formule per i giri successivi.
Ci penso e ti faccio sapere perchè la soluzione non sembra semplice..
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Chemicalbasket
Messaggi: 4
Iscritto il: lunedì 14 ottobre 2019, 22:23

Re: Priorità funzione se

Messaggio da Chemicalbasket »

Ciao unlucky,
la tabella 1 è ottenuta con i tempi della qualifica, è una simulazione di giri a pista libera calcolati in base a questi tempi, alle gomme e alla benzina.
Per ovviare alla forzatura dei tempi sul giro 1, è sufficiente aumentare tutti i tempi del primo giro di 5 secondi (ad esempio). Infatti i tempi della tabella 1 sono tutti su giro lanciato, invece la partenza al giro 1 avviene da fermo.
La questione, dell'ordine di partenza è solo una curiosità. In tabella decido l'ordine e il distacco al termine del primo giro, al pilota in prima posizione faccio fare il tempo da tabella 1 (più 5 secondi) e gli altri a seguire, ma se metto 1 su tutti ovviamente tutti faranno il tempo da tabella 1 (più 5 secondi).
Chemicalbasket - Openoffice 4.1.5 su Windows 10
Rispondi