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?