Due alis minimax che giocano l'uno contro l'altro
Domanda
Sto cercando di giocare i miei giocatori di scacchi Minimax Ai.
Ero un po 'confuso su un dettaglio di implementazione.
Chiamiamo black
Il mio primo giocatore di scacchi Minimax Ai che gioca per primo.
white
è l'altra ai minimax che va seconda.
La mia domanda è sul giro. Dovrebbero black
massimizzare e white
minimizzare O Dovrebbero solo provare a massimizzare quando ai rispettivi giri, con la funzione di valutazione capovolta?
Ho pensato a due modi per farlo. Ho la sensazione che stiano facendo la stessa cosa, ma non ero sicuro che io abbia ragione o che le due soluzioni stiano effettivamente facendo qualcosa di diverso.
Prima soluzione:
Istanziare un oggetto minimaxai per black
e white
separatamente. Assicurati che black
La funzione di valutazione è l'opposto di white
. Per un semplice esempio, l'oggetto black
La funzione di valutazione è
number of black pieces on board - number of whites on board
.
Il white
L'oggetto avrà una funzione di valutazione opposta number of white pieces on board - number of blacks on board
.
Ora, quando ogni oggetto si alterna per chiamare lo stesso get_next_move
metodo, saranno entrambi i maximizing player
dell'algoritmo minimax.
Seconda soluzione:
Istanziare un oggetto Minimax AI ai
per essere usato da entrambi i black
e il white
Mentre alternano le curve. black
e white
avrà la stessa funzione di valutazione
number of white pieces on board - number of blacks on board
Supponendo white
va sempre prima negli scacchi, quando white
chiamate ai.get_next_move
Con un numero di turno uniforme, verrà dato il maximizing player
ruolo. D'altra parte, quando black
chiamate ai.get_next_move
Con un numero di svolta dispari, verrà dato il minimizing player
ruolo.
(Questo è quello che ho finora)
Penso che entrambi dovrebbero comportare lo stesso comportamento, ma è più un sentimento che un'opinione istruita. Per favore fatemi sapere se il mio sentimento è effettivamente corretto o no. Un processo di ragionamento semi-formale sarà il benvenuto!
Nessuna soluzione corretta