[X3] Le Miniere: funzioni per il calcolo della produttività

Discussioni generali sui giochi della Egosoft, tra cui X-BTF, XT, X², X³, X³TC, X³AP.

Moderator: Moderatori per il Forum Italiano

Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

[X3] Le Miniere: funzioni per il calcolo della produttività

Post by Mietitore »

Ormai da un po’ di tempo, frequentando il vasto universo di X3, mi sono reso conto che c’è grande interesse, oltre che nei confronti del gioco in quanto tale, anche nei confronti di tutto un corollario di cose che diventano loro stesse divertenti come l’esperienza video-ludica stessa.

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’ :gruebel:
----------------------------------------------------------------------------------

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. :P

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)
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
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.

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). :D

[ 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". :D


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
Last edited by Mietitore on Thu, 10. Apr 08, 15:59, edited 72 times in total.
Black@Hawk
Moderator (Italiano)
Moderator (Italiano)
Posts: 8635
Joined: Sat, 8. Apr 06, 17:41
x3tc

Post by Black@Hawk »

Abbiamo appena finito di riordinare i tre Forum.....non puoi continuare così!!!
Se prosegui di questo passo dovremo aprire un topic solo per le tue guide!!!
:lol:
Complimenti.
Se può servirti per qualche verifica dei conti, puoi dare un'occhiata a questo topic e quelli correlati.
Come vedi, è un problema che si protrae da parecchio tempo. :wink:
Intanto, lo aggiungo alle altre guide.
Image
Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

Post by Mietitore »

Come vedi, è un problema che si protrae da parecchio tempo.
Speriamo che ora sia meno "problema" e più "risolto" :)
Se prosegui di questo passo dovremo aprire un topic solo per le tue guide!!!
magaaaaaari :D Scherzo! :lol:

Grazie dei complimenti!!!
nadyir
Posts: 1366
Joined: Sun, 4. Mar 07, 16:58
x4

Post by nadyir »

Grande Mietitore! mi hai praticamente letto nel pensiero, cercavo proprio il modo di calcolare la produttività delle miniere!!! :D

adesso mancano solo le altre stazioni e stiamo a posto! ehehehh! :P :lol:
aska
Posts: 388
Joined: Thu, 9. Sep 04, 00:26
x3

Post by aska »

Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

Post by Mietitore »

@aska
I due link sembrano più orientati a complessi, stazioni o loop e probabilmente sono anche lavori molto più complicati e ben fatti di questo. :roll:
Il mio intento, in effetti, è molto più modesto: consentire, con una calcolatrice in mano (o con carta e penna), il calcolo della produttività di una miniera data la rendita di asteroide.
E poi una discussione di matematica è sempre un bel passatempo... no? :P

@nadyir
Per quel tipo di dati non c'e' bisogno di tante formule o altro... sono dati fissi che dipendono dal tipo di stazione e basta. E' sufficiente trovare da qualche parte una tabella o un sito adatto.
Nei link di aska mi pare di aver capito che puoi trovare il modo per calcolare in automatico come bilanciare un Complesso in base agli elementi che desideri aggiungervi.
aska
Posts: 388
Joined: Thu, 9. Sep 04, 00:26
x3

Post by aska »

Si Mietitore, guarda hai fatto un bellissimo lavoro :!:
Non volevo sminuirlo in alcun modo. Poi credo che lavori come il tuo servano da base per costruire le tabelle che ho proposto nel link.
Però devi ammettere che spesso i dati che tu proponi vengono cercati per bilanciare un complesso oppure per capire quanto potrebbe rendere una miniera ( cosa che tu puoi ricavare dai complex calculator settando 1 miniera per 1 ora) era solo in questo senso che mettevo i link. Come integrazione, tutto qui.... :oops:
Complimenti ancora, comunque, persone come te sono indispensabili, anzi sarebbe auspicabile che tutti riuscissimo ad analizzare così profondamente le dinamiche del gioco!

a.
Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

Post by Mietitore »

@aska

Ahia!
C'e' stato un malinteso :)

Hai detto cose sicuramente giuste e, devo ammetterlo, non conoscevo l'esistenza dei programmi di calcolo automatico, sennò magari non mi veniva l'ispirazione... :oops:

In fin dei conti l'utilità di queste cose è spesso molto minore rispetto a quanto sia divertente il parlarne fine a se stesso.

Scusa se mi sono espresso male prima, non intendevo reclamare giustizia ;)
(k)
Posts: 3690
Joined: Sun, 18. Jun 06, 14:23
x4

Post by (k) »

cavolo... volevo uno scontro all' ultimo sangue... XD

Cmq sono d' accordo, discuterne è divertente... E poi come dico sempre io: e' più divertente usare qualcosa di già fatto, o tentare di creare qualcosa per i fatti propri?
"anche se rimbalzano, non sono di gomma!" (manuale di pronto soccorso, capitolo sui bambini)
aska
Posts: 388
Joined: Thu, 9. Sep 04, 00:26
x3

Post by aska »

(k) wrote:cavolo... volevo uno scontro all' ultimo sangue... XD
No K, quale scontro? Lo sai che sono buono io.... :roll:
User avatar
Marvho
Posts: 4934
Joined: Mon, 4. Oct 04, 14:33
x4

Post by Marvho »

buona la seconda .. complimenti mietitore :)
What?
Garga-Potter
Posts: 781
Joined: Fri, 4. Aug 06, 14:50
x3tc

Post by Garga-Potter »

Avevo letto da qualche parte (nelle guide inglesi?) la formula per calcolare il tempo in cui venivano prodotti i minerali in base alla rendita delle miniere...

devo cercarla ma appena la trovo metto il link: forse così si può migliorare il calcolo di mietitore (nb: complimenti e grazie!)
- Never argue with an idiot: he will first take you to his level and then crash you with his experience!
- If you live in a village and never met his fool... start to worry!
- Good Bye, and thanks for all the fish.
Garga-Potter
Posts: 781
Joined: Fri, 4. Aug 06, 14:50
x3tc

Post by Garga-Potter »

trovato qualcosa di simile...
T= tempo per un ciclo
Y= rendimento dell'asteroide
K=96 per le miniere di silicio
K=24 per le miniere di minerale

T = ( (25 * K) / (Y + 1) ) + 1

spero possa aiutare
Last edited by Garga-Potter on Fri, 28. Mar 08, 16:38, edited 1 time in total.
- Never argue with an idiot: he will first take you to his level and then crash you with his experience!
- If you live in a village and never met his fool... start to worry!
- Good Bye, and thanks for all the fish.
Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

Post by Mietitore »

Per il mio personalissimo modo di pensare e calcolare il bilancio di risorse necessarie per rendere autosufficiente un complesso è più facile riferirsi all'unità di tempo, ma ovviamente dipende dalla forma mentis di ognuno di noi.

In effetti è vero che è proprio il tempo di ciclo a variare in base alla rendita della miniera, mentre il numero di prodotti è fisso e dipende a sua volta dalla rendita.

Ma facciamo un ragionamento, giusto per esercizio teorico:

:gruebel:

Supponiamo di non avere una tabella con i dati di ogni miniera per ogni rendita.

Se l'interesse è sapere quanto la miniera ci metterà a produrre un dato numero di prodotti (ossia il tempo del ciclo), la cosa sarà impossibile, perchè il numero di prodotti di un certo tipo di miniera varia "a scatti" e non in maniera riconducibile a una relazione tipo quelle di questo topic.

Concludendo, o ci si regola sulla relazione tra rendita e prodotti al minuto o su tabelle.

Non so se mi sono spiegato bene... e soprattutto se ho detto una cosa giusta. :D
Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

Post by Mietitore »

Garga-Potter wrote:trovato qualcosa di simile...
T= tempo per un ciclo
Y= rendimento dell'asteroide
K=96 per le miniere di silicio
K=24 per le miniere di minerale

T = ( (Y + 1) / (25 * K) ) + 1

spero possa aiutare
Devo controllare...

T = ( (Y + 1) / (25 * K) ) + 1

La formula qua sopra dice in sostanza che T è direttamente proporzionale a Y e inversamente proporzionale a K.

Quindi il Ciclo è proporzionale alla Rendita,

ossia più cresce la rendita più cresce il tempo di ciclo,

ma, almeno dai campionamenti che ho fatto, emerge un dato diverso

infatti ad esempio campionando la Miniera M risulta che

a Y = 5 corrisponde T = 1.41 (101 secondi)
a Y = 6 corrisponde T = 1:26 (86 secondi)
a Y = 7 corrisponde T = 1:16 (76 secondi)

in questo caso quindi T e Y sarebbero inversamente proporzionali (aumentando Y cala T)

Credo però che la proporzionalità tra questi due dati NON esista affatto

infatti per la stessa tipologia di miniera

a Y = 9 corrisponde T = 1.01 (61 secondi)
a Y = 10 corrisponde T = 1.50 (110 secondi)

stavolta T e Y sono in proporzionalità diretta (aumentando Y aumenta T)

Questo rende impossibile rappresentare il rapporto tra T e Y con un'equazione di primo grado come quella che riferisci (notare che K, pur dipendente dal tipo di miniera, è una costante e quindi l'equazione è lineare)...

Questa è la prima impressione ma magari mi sbaglio... :gruebel:
Last edited by Mietitore on Fri, 28. Mar 08, 16:38, edited 1 time in total.
Garga-Potter
Posts: 781
Joined: Fri, 4. Aug 06, 14:50
x3tc

Post by Garga-Potter »

Il punto è proprio che il numero di prodotti per ciclo è costante... per ogni data miniera, ovviamente. Quindi adesso in base al tempo impiegato per ciclo si riesce a stabilire qual è il numero di prodotti per unità di tempo!

Ho corretto la formula che avevo inavvertitamente "rovesciato"

Ammetto che non ho verificato la formula...

EDIT:

formula corretta... avevo notato anch'io l'incongruità e quindi ho rifatto il reverse engineering della formula trovata online...

Adesso all'aumentare del rendimento diminuisce il tempo... correttamente
- Never argue with an idiot: he will first take you to his level and then crash you with his experience!
- If you live in a village and never met his fool... start to worry!
- Good Bye, and thanks for all the fish.
Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

Post by Mietitore »

Avevo già risposto a formula "cappottata"... beh lo stesso discorso vale per la versione corretta: si tratta sempre di un'equazione di primo grado (e quindi lineare).

I dati campionati però non sono lineari.

La spiegazione è la stessa ma devi invertire il discorso di proporzionalita inversa con diretta e vicecersa :)

Dai un'occhiata alla pagina precedente ;)
Garga-Potter
Posts: 781
Joined: Fri, 4. Aug 06, 14:50
x3tc

Post by Garga-Potter »

ho recuperato il linik esatto...

http://forum.egosoft.com/viewtopic.php?t=110986

la non linearità è dovuta al "multiplier"... e anche agli arrotondamenti
- Never argue with an idiot: he will first take you to his level and then crash you with his experience!
- If you live in a village and never met his fool... start to worry!
- Good Bye, and thanks for all the fish.
Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

Post by Mietitore »

mmmmhhhh :gruebel:

Teoricamente né un multiplier inteso come moltiplicazione né un arrotondamento dovrebbero cambiare un'equazione lineare in non lineare,

casomai potrebbero solo modificare il coefficiente angolare della retta sul piano o l'offset della stessa rispetto all'origine.

Ci do un'occhiata stanotte... :D
Mietitore
Posts: 428
Joined: Wed, 2. Jan 08, 14:05
x3

Post by Mietitore »

Eccomi qua.

Spulciamo il topic Inglese... ;)

Per quel poco che capisco di inglese "tecnico", questo topic è una analisi del codice che regola il tempo di ciclo delle miniere e sul fatto che due miniere con Rendite X e Y producano separatamente più di quanto non produca una miniera con Rendita=X+Y... fatto curioso che sembra dire: l'unione fa la forza.

Credo che questa sia la frase chiave...
For example, yields 12 and 14 produce almost as much as one yield 27. Four yield 8 mines produce almost as much as one yield 35 mine
Quindi nella tabella fa vedere che al crescere dello Yield ci sia un dato, chiamato Fab_equiv, che cresce non linearmente (ma tipo "parabola" per intenderci).

L'equazione

Basic_cycletime = rounddown( BASETIME / (Yield + 1) ) + 1 seconds

che poi è quella che dici tu, non serve per calcolare il ciclo di una determinata miniera ma per rendere equiparabili tutte le miniere e poterle studiare.


Infatti, come i campionamenti mostrano, quando il tempo di ciclo di una determinata miniera diventa inferiore a un minuto, con un espediente (aumento di risorse necessarie e della relativa produzione) il ciclo viene "riallungato".

Frase chiave:
Code:

Multiplier = rounddown( 59.9 / Basic_cycletime ) + 1
Cycletime = Multiplier * Basic_cycletime
...
The purpose of the Multiplier is to prevent the cycle time to be shorter than 60 seconds.
In definitiva l'equazione T = ( (25 * K) / (Y + 1) ) + 1 è solo il primo passaggio per calcolare il tempo di ciclo di una Miniera.


------ ° ------ ° ------ ° ------ ° ------ ° ------ ° ------ ° ------

Ecco L'ESPEDIENTE che rende non lineare il rapporto:

Codice
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


Proviamo a decodificare riga per riga:

INIZIALIZZAZIONE DELLE COSTANTI.
There is a BASETIME, which is 2400 seconds (40 minutes) for Silicon and 600 seconds (10 minutes) for Ore. Fab_size is 2 for M, and 5 for L.
Si stabilisce che a seconda del tipo di miniera vi sia un primo coefficiente chiamato BASETIME pari a 2400 per Silicon e 600 per Ore (usato nella prima riga di codice) e un secondo coefficiente chiamato Fab_size che è pari a 2 per miniere M e 5 per miniere L (usato nell'ultima riga).

Inoltre facendo la proporzione 2400 : 600 = 96: 24 = 4 : 1 si capisce il dato da te giustamente citato:

K=96 per le miniere di silicio
K=24 per le miniere di minerale

per cui la parte (25 * K) della equazione diventa 2400 per Silicio e 600 per Minerale (appunto il basetime).

Nota: non si capisce il perchè la riduzione ai minimi termini non sia stata completa visti che (25*K) con K = 24 o 96 è uguale a (600*K) con K = a 1 o 4 (coefficienti più "eleganti").

riga 1.
Basic_cycletime = rounddown( BASETIME / (Yield + 1) ) + 1 seconds
Solo a questo punto si può fare la prima equazione (la famosa T = ( Basetime / (Y + 1) ) + 1) del codice e determinare il Basic_cycletime che verrà utilizzato nei passaggi seguenti.

riga 2.
Multiplier = rounddown( 59.9 / Basic_cycletime ) + 1
Si imposta una nuova variabile, dipendente dal Basic_cycletime sopra definito, chiamata Multiplier che fa si che il tempo di ciclo non cada mai sotto i 60 secondi. I motivi di questo passaggio sono oscuri, ma sembrano più un fatto di stile piuttosto che una cosa fondamentale.
Unico motivo: non si vuole far produrre alcuna miniera in meno di un minuto.
Notare che in questa riga di codice e in quella prima appare una funzione (rounddown) che è stata precedentemente implementata o che è gia compresa nel linguaggio utilizzato. Dovrebbe trattarsi di un arrotondamento.

riga 3.
Cycletime = Multiplier * Basic_cycletime
Ecco finalmente il tempo di ciclo che vediamo nelle "informazioni" della miniera nel gioco!

riga 4.
Products per cycle = Multiplier * Fab_size
Finalmente ricaviamo i prodotti per tempo di ciclo.

------ ° ------ ° ------ ° ------ ° ------ ° ------ ° ------ ° ------

Riassumendo:

data una miniera, per ricavare i prodotti per tempo di ciclo (N.B.: non per unitò di tempo!) sono necessari 4 passaggi che presuppongono lo sviluppo di una funzione predefinita (rounddown) e la conoscenza di una costante (BASETIME).

Praticamente, per conoscere questo dato, o si ha una tabella o si fa prima ad installare una miniera e a guardarne i dettagli. :lol:

Quella parte di codice serve per impostare la nuova quantità di risorse e la nuova capacità produttiva quando il tempo di ciclo, che altrimenti andrebbe sotto i 60 secondi, viene reincrementato al crescere della Rendita.

Questo affinchè si mantenga una giusta logica secondo la quale "all'aumentare della rendita, la capacità produttiva per unità di tempo aumenta".

Non so se ho interpretato bene la cosa. :oops:

Discussione molto interessante comunque: GRAZIE Garga-Potter! :)

Return to “L'Universo della Trilogia di X”