E' per gioco infatti che, ispirato da un post di poco tempo fa dove si chiedeva tra l’altro come si poteva sapere la produttività di una miniera prima di installarla, la mia curiosità è cresciuta fino a portarmi a svolgere questo “piccolo” studio a proposito de
LE MINIERE E IL CALCOLO DELLA LORO PRODUTTIVITA’

----------------------------------------------------------------------------------
Premessa
Prima di tutto l'intento: consentire a chiunque abbia una calcolatrice alla mano (ma anche carta e penna vanno bene vista la semplicità dei calcoli) di prevedere quanti prodotti una miniera sfornerà sapendo la Rendita dell'asteroide sul quale intendiamo costruirla. Altri hanno già sviluppato discorsi approfonditi e meglio articolati relativamente a Stazioni, Complessi e Loop.
Qui si parla solo di miniere.
Lungi da me l’idea di attribuire a quello che segue l’importanza e l’infallibilità di quello che prima ho chiamato in modo inappropriato “studio”, dopo tutto di sicuro non ho scoperto le equazioni di Maxwell, che solo a nominarle mi fanno venire ricordi da brivido!
Le Equazioni del Mietitore, già dal nome, suonano un po' diverse.

Di seguito verranno esposti i due "percorsi" che hanno portato alle equazioni:
1. sperimentale - campionamento in gioco --> dati --> grafico --> equazioni più vicine possibili ai grafici;
2. analizzando il codice - lettura codice --> interpretazione --> adattamento --> equazione (di Garga-Potter).
Il secondo dei due percorsi si è sviluppato posteriormente rispetto alla pubblicazione del topic, a seguito di numerosi interventi, ma soprattutto grazie alla intensa collaborazione di Garga-Potter con il quale, con grande piacere personale (e gran noia di tutti gli altri...), ho avuto un confronto in "punta di algebra". L'equazione definitiva l'ha dedotta lui: se vi interessa tutta la "gestazione" che ha condotto al risultato vi invito a leggere i numerosi reply al post principale.
Altrimenti, se volete essere sbrigativi e saltare direttamente al calcolo in questione, andate alla fine del post, copiatevi tabella ed equazione, prendete carta e penna e... buon divertimento.
IL METODO SPERIMENTALE
------------------------------------
Campionamenti e Analisi
Dunque: ho deciso di campionare, giocando, le varie tipologie di miniera sia di Minerale sia di Silicio per cercare, una volta accumulata una certa quantità di dati, di capire quale relazione c’è tra la “Rendita” (che forse sarebbe stato meglio tradurre "Rendimento") di un asteroide dedotta dalla scansione dello stesso e la potenziale produttività nell’unità di tempo.
Visto che la maggior parte dei cicli delle Stazioni è di un minuto e che comunque ogni produzione è facilmente riconducibile a quella unità di tempo, per comodità, comparabilità ed esportabilità del dato ho deciso di fare riferimento al “minuto” (alias 60 secondi).
Non ho effettuato in verità moltissimi campionamenti, anche per motivi di tempo, ma già dopo poco è emerso, come del resto era prevedibile, che il rapporto tra Rendita e Produttività è lineare, ossia rappresentato sul piano cartesiano da una retta. Di conseguenza quella da cercare doveva essere una equazione di primo grado.
Nell’immagine seguente (se cliccate sul thumbnail troverete la stessa in dimensione originale) ho riportato i risultati dei campionamenti per le miniere con rendita da 1 a 10 e i relativi grafici che rappresentano il rapporto tra questa e la produttività.
[ external image ]
Come previsto il rapporto è rappresentato da rette sul piano. La formula per questa tipologia di grafico deve quindi essere del tipo
Y = nX + c
Considerando quindi Y = produttività e X = rendita, empiricamente (ossia facendo vari tentativi), ho tentato di capire che valore attribuire a “n” e a “c” per avvicinarmi il più possibile alla rappresentazione che i grafici mi restituivano immettendo i dati dei campionamenti.
Ho creato e utilizzato quattro fogli di calcolo per poter immediatamente confrontare i dati reali con le previsioni delle formule che tentavo. Le seguenti immagini ne mostrano un paio di esempi:
Miniera M
[ external image ]
Miniera di Silicio L
[ external image ]
Risultati
Dopo alcune ore di sonno perso, ho individuato le seguenti formule che ho rodato con alcuni tentativi che ne hanno confermato la buona precisione. Ho cercato di ridurre le derive che si creano tra dato reale e dato previsto al minimo. Queste derive nascono probabilmente dal numero di campionamenti che, ovviamente, se fosse stato maggiore avrebbe fornito miglior precisione.
Nonostante ciò le formule si possono ritenere abbastanza precise… soprattutto poiché destinate al gioco.
Sono giunto a queste conclusioni per il calcolo della produttività. Notate bene che il risultato, come detto prima, è espresso in unità prodotte al minuto:
MINIERA M
Produttività = 0,19 x Rendita + 0,2
Per maggior precisione tenete conto del fatto che la parte decimale ,19 è periodica.
La deriva di questa formula di previsione è rappresentata da una funzione sinusoidale di tipo X*sen(X) e, rispetto al dato reale, è da considerarsi trascurabile poiché oscilla tra +0,15 e –0,25 unità di prodotto al minuto. Ad esempio, su un valore di produzione di 12 unità al minuto avremo un errore di circa 0,25 unità (pari al 2,8%).
MINIERA L
Produttività = 0.47 x Rendita + 0.4
Questo è il caso che per motivi di tempo ho potuto approfondire meno, ma almeno per Rendite non eccessive la deriva sembra trascurabile. Appena avrò un po’ di tempo proverò a perfezionare il calcolo.
MINIERA DI SILICIO M
Produttività = 0.05 x Rendita + 0.05
Qui la deriva sembra addirittura assente, almeno per valori di Rendita non eccessivi.
MINIERA DI SILICIO L
Produttività = 0.125 x Rendita + 0.12
Per maggior precisione tenete conto del fatto che la parte decimale ,125 è periodica.
Anche in questo caso la deriva è pressoché nulla.
FORMULE SEMPLIFICATE
Per semplicità, ma con leggero discapito per la precisione, si possono usare le seguenti formule, più "memorizzabili":
1. MINIERA M --> Produttività = 0,2 x Rendita + 0,2
2. MINIERA L --> Produttività = 0.45 x Rendita + 0,45
3. MINIERA SILICIO M --> Produttività = 0.5 x Rendita + 0.5 (...uguale all'originale)
3. MINIERA SILICIO L --> Produttività = 0.12 x Rendita + 0.12
Esempi
Facciamo ora alcuni esempi pratici esplicativi:
ESEMPIO 1:
dato un asteroide con rendita Minerale = 15 applicando le formule avrò
Con miniera M > formula Produttività = 0,19 x Rendita + 0,2
Produttività al minuto = 0.19 x 15 + 0,2 = 3,08 minerali +/- 0.15 (deriva)
Con miniera L > formula Produttività = 0.47 x Rendita + 0.4
Produttività al minuto = 0.47 x 15 + 0.4 = 7.45 minerali
Risultato: con buona approssimazione su questo asteroide stimeremo la produttività per una miniera M in 3 Minerali al minuto e per una miniera L in 7.45 Minerali al minuto.
ESEMPIO 2:
dato un asteroide con rendita Silicio = 23 applicando la formule avrò
Con miniera silicio M > formula Produttività = 0.05 x Rendita + 0.05
Produttività al minuto = 0.05 x 23 + 0.05 = 1,2 wafers
Con miniera silicio L > formula Produttività = 0.125 x Rendita + 0.12
Produttività al minuto = 0.125 x 23 + 0.12 = 2.99 wafers
Risultato: con buona approssimazione su questo asteroide stimeremo la produttività per una miniera silicio M in 1,2 Wafers di Silicio al minuto e per una miniera silicio L in 3 Wafers di Silicio al minuto.
ANALISI DEL CODICE (lavoro congiunto di Garga-Potter & Mietitore)
----------------------------------------------------------------------------------------
Per questa parte del topic userò il plurale per descrivere i vari passaggi, non perchè mi sono venute le manie di grandezza e mi sono messo ad usare il pluralis majestatis, ma solo perchè il tutto nasce dalla collaborazione tra me e Garga-Potter, anzi, senza di lui che è la mente dell'equazione, mi sarei inchiodato al metodo "empirico".
Proverò a riassumere tutti i passaggi che hanno condotto al risultato: se non vi piace la matematica vi consiglio di limitarvi a copiare la tabella e l'equazione che, malgrado l'aspetto, è di semplicissima soluzione e risolvibile in 30 secondi con carta e penna.
Script e parametri
Partendo direttamente dal frammento di codice che regola il comportamento delle miniere in X3 (preso dal post linkato nei reply il cui autore jlehtone, mod inglese , ringraziamo sentitamente)
il primo problema nasce dalla conoscenza di due costanti senza le quali non si possono sviluppare le equazioni alla prima e quarta riga di codice, ossia BASETIME e Fab_size.Basic_cycletime = rounddown( BASETIME / (Yield + 1) ) + 1 seconds
Multiplier = rounddown( 59.9 / Basic_cycletime ) + 1
Cycletime = Multiplier * Basic_cycletime
Products per cycle = Multiplier * Fab_size
Per semplificazione abbiamo posto K = BASETIME e J = Fab_size.
Queste parametri dipendono dal tipo di miniera che si sta analizzando (Minerale o Silicio) e dalla grandezza della struttura (M o L).
Nella tabella seguente trovate i valori a seconda della tipologia e della grandezza della miniera della quale calcolare la produttività al minuto:
[ external image ]
Grazie al codice quindi riusciamo a definire il tempo di ciclo della miniera (T) e il numero dei prodotti che la stessa genera per ogni ciclo (P).
I passaggi
A questo punto i prodotti per unità di tempo (un minuto) sono ricavabili dalla semplice relazione
Pm = 60 * P / T
dalla quale sostituendo si ha
Pm = 60 * Multiplier * J / Multiplier * T
e semplificando
Pm = 60 * J / T
Ora, guardando la prima riga di codice sostituiamo a T l'espressione che ne restituisce il valore, con int = rounddown = arrotondamento al basso
Pm = 60 * J / ( int ( 600 * K / R + 1) + 1
Finalmente: la formula
Semplificando definitivamente e soprattutto adattando i coefficienti della tabella (per abbellire la formula) si ottiene
la formula definitiva per calcolare i prodotti al minuto di una data miniera in base alla rendita dell'asteroide sul quale è installata (c.d. Formula di Garga-Potter).

[ external image ]
Sostituendo a J e K i valori nella tabella di cui sopra e a R la rendita dell'asteroide si otterranno le unità prodotte ogni minuto (Pm).
Esempi
ESEMPIO 1: Vogliamo calcolare quanto una Miniera M produrrà al minuto in un asteroide con Rendita=15
In questo caso si ha K = 600, J = 120 (dalla tabella) e R=15
Prima facciamo l'operazione tra parentesi K / (R+1) = 600 / 16 = 37.5
calcoliamo int(37.5)+1 = 37 + 1 = 38
e infine facciamo J / 38 = 120 / 38 = 3.15 minerale / minuto
ESEMPIO 2: Vogliamo calcolare quanto una Miniera di Silicio L produrrà al minuto in un asteroide con Rendita=10
In questo caso si ha K = 2400, J = 300 (dalla tabella) e R=10
Prima facciamo l'operazione tra parentesi K / (R+1) = 2400 / 11 = 218.181818
calcoliamo int(218.181818)+1 = 218 + 1 = 219
e infine facciamo J / 219 = 300 / 219 = 1.369 wafers / minuto
ESEMPIO 3: Vogliamo calcolare quanto una Miniera L produrrà al minuto in un asteroide con Rendita=100
In questo caso si ha K = 600, J = 300 (dalla tabella) e R=100
Prima facciamo l'operazione tra parentesi K / (R+1) = 600 / 101 = 5.94
calcoliamo int(5.94)+1 = 5 + 1 = 6
e infine facciamo J / 6 = 300 / 6 = 50 minerale / minuto
Facile no?
ALTRI RISULTATI E TABELLE COMPARATIVE
-----------------------------------------------------------
I seguenti ulteriori risultati dell'analisi del codice fatta su questa topic li trovate sul questo post http://forum.egosoft.com/viewtopic.php?t=204085 contenente le tabelle comparative delle Miniere.
In sostanza si sono ricavate altre equazioni, usate per creare le tabelle nel post indicato dal quale potrete scaricarle. in queste formule i parametri corrispondono a quelli della formula per ricavare la capacità produttiva per unità di tempo.
Eccole:
1. formula ricavata dal codice che restituisce il Tempo di Ciclo in secondi
T = ( int ( 59,9 / ( int( K/(R+1) ) +1 ) ) +1 ) * ( int ( K/(R+1) ) +1 )
2. formula ricavata dal codice e bilanciata che restituisce i prodotti per ciclo di produzione
P = ( int ( 59,9 / ( int( K/(R+1) ) +1 ) ) +1 ) * J / 60
3. formula ricavata dai campionamenti che restituisce le celle di energia consumate per ciclo di produzione
E = P * K / 100
CASI LIMITE
------------------
Questo capitolo analizza due casi limite:
1. l'installazione di miniere su asteroidi a Rendita = 0;
2. l'installazione di miniere su asteroidi con risorsa sbagliata.
Miniere su asteroidi a Rendita = 0
I campionamenti sono stati fatti ne settore Sentiero Selvaggio
[ external image ]
Individuato un asteroide con Rendita = 0 vi ho installato una Miniera di Silicio M i cui dettagli sono i seguenti
[ external image ]
Osservazioni
E' possibile installare una miniera su un asteroide con Rendita = 0.
Essa produrrà 2 Wafers di Silicio in 40:01 al costo di 48 Celle di Energia.
Percorso Matematico
Considerate le equazioni del capitolo precedente e l'equazione di Garga-Potter
con R=0, K=2400, e J=120 si ha
Pm = 0.05
ossia la capacità produttiva è scarsissima, ma esiste.
I risultati matematici sono:
Durata ciclo produttivo= T = 2401 sec = 40:01
Prodotti per ciclo = P = 2 Wafers di Silicio
Consumo celle per ciclo = E = 48 Celle di Energia
il che corrisponde ai dati sperimentali.
Miniere su asteroidi con risorsa sbagliata
Ho inoltre installato una Miniera M su un altro asteroide di Silicio con Rendita = 23 per vedere l’effetto dell’installazione della miniera su un asteroide sbagliato.
I dettagli sono i seguenti
[ external image ]
Osservazioni
E' possibile installare una miniera su un asteroide sbagliando il tipo di risorsa.
Dal confronto del dato sperimentale con quello matematico (di cui risparmio i passaggi) si deduce che questa miniera produrrà l'equivalente di una miniera installata su un asteroide di giusta risorsa ma con Rendita = 0.
CONCLUSIONI
------------------------
I dati emersi dai campionamenti e ricavati dalle equazioni sperimentali coincidono con quelli delle equazioni tratta dal codice, eccetto che per la "deriva" che, è ovvio, in queste ultime NON ESISTE AFFATTO.
Non vi è dubbio, quindi, che le equazioni ricavate direttamente dal codice, anche se un po' più complicate da svolgere, siano più precise, eleganti e corrette e che alla luce della loro esistenza avrei potuto addirittura cancellare le altre quattro equazioni empiriche che comunque, vista la maggior semplicità e l'assenza di parametri che le caratterizza, lascio a disposizione dei "meno matematici".

X-MINE CALCULATOR
------------------------
Il X-Mine Calculator è il risultato di tutti i discorsi fatti in questo topic, senza i quali peraltro non si sarebbe arrivati a questa perfetta sintesi di cui Garga-Potter è l'autore materiale e principale.
Lo trovate su questo topic
http://forum.egosoft.com/viewtopic.php?t=204164
Ringrazio
Garga-Potter
Hugoz
BlackRazor
DannyD
Bizzy
Uno speciale ringraziamento a
jorganos (german forum)
Mietitore

Ultima modifica: 10/04/2008 h.1716.00