Fitness Funzionalità alternative in Algoritmi genetici per l'IA del gioco

3

Ho creato un AI Gomoku (5 di fila) usando la potatura Alpha-Beta. Si sposta su un livello non troppo stupido. Prima lasciatemi descrivere la funzione di gradazione dell'algoritmo Alpha-Beta. Quando riceve una scheda come input, prima trova tutte le ripetizioni di pietre e le dà un punteggio in base alla sua utilità come una minaccia. E restituirà la somma di tutti i punteggi di ripetizione.

Ma il problema è che ho deciso esplicitamente i punteggi (4 in totale), e non sembrano le scelte migliori. Quindi ho deciso di implementare un algoritmo genetico per generare questi punteggi. Ciascuno dei geni sarà uno dei 4 punteggi. Ad esempio, il cromosoma dei punteggi codificati potrebbe essere: [5, 40000,10000000,50000]

Tuttavia, poiché sto utilizzando l'algoritmo genetico per creare i punteggi della funzione di classificazione, non sono sicuro di come implementare la funzione di fitness genetico. Così, invece, ho pensato a quanto segue:

Invece di usare una funzione fitness, mi limito a unire il processo di selezione insieme: se ho 2 cromosomi, A e B, e devo selezionarne uno, simulerò un gioco usando entrambi i cromosomi A e B in ogni AI, e seleziona il cromosoma che vince.

1.È una valida alternativa alla funzione Fitness?

2. A causa delle caratteristiche dell'algoritmo Alpha-Beta, devo dare il punteggio massimo alla condizione di vincita, che nella maggior parte dei casi è impostata su infinito. Tuttavia, poiché non posso usare Infinity, ho semplicemente usato un numero assurdamente grande. Devo anche aggiungere questo punteggio al cromosoma? O perché è insignificante e non modifica i valori della funzione di classificazione, lascialo come costante?

    
posta Dashadower 28.11.2017 - 16:15
fonte

1 risposta

3

Dichiarazione di non responsabilità: non ho esperienza pratica con gli algoritmi genetici ma un po 'di interesse ...

Quindi la tua strategia è quella di accoppiare gli individui e farli competere gli uni contro gli altri. Eliminare i perdenti e allevare il resto? Direi che questo è un approccio ragionevole in teoria. Ho solo alcune prenotazioni / suggerimenti:

  • L'eliminazione singola potrebbe non darti una buona impressione della forza di un individuo. Se la potenza di elaborazione lo consente, puoi eseguire più turni di gare usando abbinamento svizzero . Il vantaggio del sistema di abbinamento svizzero è che ottieni una classifica sempre più accurata dei candidati senza doverli confrontare con tutti.
  • L'uso di soli 4 cromosomi con gamme così grandi mi sembra che richiederebbe una grande popolazione iniziale o un numero relativamente basso di valori potenziali. Istintivamente mi aspetterei un algoritmo che utilizzasse punteggi calcolati da più cromosomi più semplici per andare meglio. Per esempio: 4 * 24 cromosomi con ciascun gruppo di 24 cromosomi che rappresentano la rappresentazione binaria di un punteggio. Oppure potresti fare 4 * 6 cromosomi con ogni gruppo di 6 cromosomi come rappresentazione binaria di un numero e il punteggio calcolato come 2^number . Probabilmente c'è un punto debole tra la dimensione della popolazione, la complessità del gene e la risoluzione del punteggio.

Altre informazioni sul sistema dei tornei svizzeri

  • Ogni round i concorrenti accoppiati vengono sottoposti a una serie di giochi. Questo numero spetta a te. Il migliore dei tre è comune.
  • Ogni abbinamento può generare un vincitore (che ottiene 3 punti) o un pareggio (entrambi ottengono 1 punto)
  • Nelle partite svizzere successive ogni partecipante è stato abbinato a qualcuno a cui non hanno mai giocato contro ed è il più vicino possibile al proprio punteggio.

In questo modo non dovrebbe importare troppo se ottieni qualche pareggio. Se comunque tutto ciò che ottieni è in pareggio hai un problema ...

    
risposta data 28.11.2017 - 17:42
fonte

Leggi altre domande sui tag