Giochino alla Age Of Empire

Giochini matematici elementari ma non olimpici.
Rispondi
Avatar utente
urano88
Messaggi: 39
Iscritto il: 08 mag 2006, 19:16
Località: Brescia/Padova

Giochino alla Age Of Empire

Messaggio da urano88 »

Vogliamo ottimizzare il tempo di produzione di una determinata risorsa di cui vogliamo estrarre n unità u. Indico con s l'unità temporale, non consideriamo frazioni di s, l'estrazione si considera completata all'istante xs per cui è resa disponibile una quantità di risorsa maggiore o uguale a nu.

Inizialmente non abbiamo scorte e disponiamo di un solo lavoratore che estrae 1u/s.
Possiamo addestrare altri lavoratori usando 100u (che dobbiamo avere già disponibili) in maniera istantanea.

:arrow: Vi sono degli n per cui sia conveniente arrestare l'addestramento anche se si ha una quantità di risorsa maggiore di 100u, per poi riprenderlo in seguito?

:arrow: Vi sono degli n per cui sia conveniente non arrestare mai l'addestramento?

:arrow: E' possibile elaborare una strategia generale?

:arrow: Come cambiano le precedenti risposte se l'addestramento, oltre alle 100u richiede anche 10s ?

Mi scuso se un problema simile è già stato proposto :oops:
[i]"Non siate mai i primi, cercate di essere secondi"[/i] - Enrico Fermi
Avatar utente
urano88
Messaggi: 39
Iscritto il: 08 mag 2006, 19:16
Località: Brescia/Padova

Messaggio da urano88 »

Troppo difficile?

:? Proviamo a semplificare un po' il problema modificando le regole :D

Supponiamo che un'agenzia ci metta a disposizione fin dall'istante iniziale gli L lavoratori che decidiamo di impiegare per l'estrazione, ma per ogni lavoratore assunto dovremo all'agenzia 100u a lavoro ultimato.

:arrow: Dato un certo n, quanti lavoratori ci converrà decidere di prendere dall'agenzia per minimizzare il tempo necessario a raggiungere una quantità di risorsa pari a n+100L unità?

Questo non dovrebbe essere troppo difficile :roll:
[i]"Non siate mai i primi, cercate di essere secondi"[/i] - Enrico Fermi
Avatar utente
Haile
Messaggi: 515
Iscritto il: 30 mag 2008, 14:29
Località: Bergamo

Re: Giochino alla Age Of Empire

Messaggio da Haile »

:arrow: Vi sono degli n per cui sia conveniente arrestare l'addestramento anche se si ha una quantità di risorsa maggiore di 100u, per poi riprenderlo in seguito?
:arrow: Vi sono degli n per cui sia conveniente non arrestare mai l'addestramento?
Se si arresta l'addestramento di nuova "forza lavoro", va arrestato fino a quando non abbiamo raggiunto la quota di risorse che volevamo raggiungere.

Se devo arrivare a, poniamo, 1000 unità immagazzinate, e la mia strategia è quella di farlo con 5 lavoratori, li devo addestrare immediatamente, non appena ho disponibili le 100 risorse, in modo da sfruttarli il più a lungo possibile. Ad esempio, dovendo arrivare a 1000, se decido di farlo con 5 lavoratori, non ha senso farne 4 e poi, quando sono a 900, fare il quinto. Ne faccio 5 subito (appena ho le risorse per farli) e li sfrutto per arrivare a 1000.

Detto questo, gli n (numero risorse da ottenere) per i quali devo ad un certo punto addestrare l'addestramento sono praticamente tutti... visto che se non smetto mai di addestrare operai non raggiungerò mai la quota di risorse richiesta.
:arrow: E' possibile elaborare una strategia generale?
Hum... poniamo di dover arrivare ad una quantità $ $n$ $ di risorse. Se scelgo di farlo con 1 lavoratore, il tempo necessario sarà la quantità di risorse da ottenere per la sua velocità di estrazione (1): $ $t_r = \frac{n}{1}$ $.

Se decido di farlo con 2 operai, come ho scritto sopra mi conviene addestrare il secondo appena il primo ha raccolto 100 risorse, e poi sfruttare la doppia velocità di estrazione. Se decido di farne 3, aspetto che il primo faccia 100 risorse, addestro il secondo, e poi aspetto che i due operai che ho arrivino a 100 risorse per fare il terzo.

Qual'è il tempo necessario per fare $ $k$ $ operai (tenendo conto che uno l'abbiamo già)?

Per fare il secondo servono unità di tempo:

$ $100~u$ $


Per fare il terzo sono in due a raccogliere risorse, ci metto (100 per il primo più):

$ $50~u$ $

quindi per 3 operai

$ $100 + \frac{100}{2}$ $


in generale per fare $ $k$ $ operai mi serve un tempo pari a:

$ $t = \sum_{i=1}^{k-1} \bigg( \frac{100}{i} \bigg) $ $

Torniamo al tempo necessario per arrivare a $ $n$ $ risorse. Se un operai è da solo: $ $1000~u$ $. Se sono in due ci mettono la metà, ma per fare il secondo mi servono 100 u, quindi $ $\frac{1000}{2} + 100 ~ u$ $. Se decido di farne 3 per arrivare ad $ $n$ $:

$ $\frac{1000}{3} + 100 + 50 + 33.33~u$ $

In generale, posto costo un lavoratore = 100, velocità produzione un lavoratore = 1, per arrivare ad $ $n$ $ risorse scegliendo di utilizzare $ $k$ $ lavoratori, ci vorrà un tempo pari a

$ $ \boxed{\frac{n}{k} + \sum_{i=1}^{k-1} \bigg( \frac{100}{i} \bigg)}$ $

Ora non so se è possibile minimizzare questa funzione per k con un n noto... qualche suggerimento?
[i]
Mathematical proofs are like diamonds: hard and clear.

[/i]
Avatar utente
Haile
Messaggi: 515
Iscritto il: 30 mag 2008, 14:29
Località: Bergamo

Messaggio da Haile »

Un esempio numerico calcolato con Derive usando la formula boxata sopra.

Produzione di un lavoratore per unità di tempo = 1 risorsa
Costo reclutamento altro lavoratore = 100 risorse

Supponendo che tutti i lavoratori che si vuole fare vengano creati all'inizio e poi lasciati lavorare.

Obiettivo: 1000 risorse

$ \begin{tabular}{cc} lavoratori utilizzati & tempo necessario \\ 1 & 1000 \\ 2 & 600 \\ 3 & 483.33 \\ 4 & 433.33 \\ 5 & 408.33 \\ 6 & 395 \\ 7 & 387.86 \\ 8 & 384.29 \\ 9 & \rightarrow 382.90 \leftarrow \\ 10 & \rightarrow 382.90 \leftarrow \\ 11 & 383.81 \\ 12 & 385.32 \\ 13 & 387.24 \\ 14 & 389.44 \\ 15 & 391.822 \\ \end{tabular} $

Abbiamo un minimo per 9-10 lavoratori, poi i tempi ricominciano a salire...

Credo sia possibile trovare il numero k di lavoratori tale da minimizzare i tempi per la raccolta di una quantità generica di risorse n.
[i]
Mathematical proofs are like diamonds: hard and clear.

[/i]
Rispondi