Minecraft Farm AI

Last modified: 2018-06-12 00:20:39

Il progetto

Realizzare un programma che consigli, dati determinati parametri, usando Genetic Algorithms, il modo piú conveniente di coltivare un campo su Minecraft

Come funziona

Al programma vengono fornite le seguenti informazioni:

Il programma consiglia quanti blocchi dedicare a ogni tipo di coltivazione per ottenere la maggior quantitá di cibo possibile. Questo programma in particolare consiglia quanti dedicarne ai semi, alle carote e alle patate, e per farlo usa Genetic Algorithms (cosa sono).

L'algoritmo

Individuo: una possibile soluzione, in questo caso un gruppo di tre numeri (che rappresentano la quantitá di blocchi da dedicare a ogni tipo di coltivazione).
Popolazione: gruppo di individui.
Punteggio: quantitá di cibo che si ottiene.

Vengono generate 600 popolazioni da 1000 individui casuali. Per ognuna di queste popolazioni trovo l'individuo con punteggio maggiore.

Faccio evolvere i 600 individui iniziali:
Sottopongo i tre parametri a piccole variazioni provando a vedere se é possibile migliorare ulteriormente il punteggio dell'individuo.

Dei 600 individui sottoposti a evoluzione scelgo il migliore.


Questi grafici sono stati generati dopo una esecuzione del programma, riportano sull'asse x il numero dell'individuo e sull'asse y il punteggio.
Si puó notare la differenza tra l'accuratezza di ricerca degli individui migliori della prima fase (generazione random dei 600.000 individui iniziali) e quella della seconda fase (evoluzione dei 600 individui migliori):
l'evoluzione permette di accrescere notevolmente e rapidamente il punteggio.

Il secondo grafico inoltre risponde alla domanda: perché ho bisogno di cosí tanti individui iniziali (600) da evolvere? Non basta sceglierne uno e farlo evolvere?
Nel grafico i punti piú in basso corrispondono agli individui prima dell'evoluzione, il punteggio si alza finché l'evoluzione non é completata. Peró non tutti gli individui arrivano allo stesso punteggio: se ci si limita a pochi individui si rischia di ignorare individui con punteggi migliori.
In termini matematici, se si descrive una funzione che ha come input i nostri parametri e output il nostro punteggio si rischia di rimanere bloccati a massimi relativi, ignorando il massimo assoluto.

🌙 Modalità notte