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 blackLa funzione di valutazione è l'opposto di white. Per un semplice esempio, l'oggetto blackLa 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top