2012-06-14 3 views
6

Attualmente sto lavorando a un'implementazione di un gioco di carte trick-and-draw a 2 giocatori, simile a 66 o Schnapsen. Fondamentalmente è necessario raccogliere punti vincendo trucchi e mentre ci sono carte nel mazzo, entrambi i giocatori pescano una carta dopo ogni round.Monte Carlo Tree Search o altri algoritmi per un gioco di carte stocastico?

Sono al punto di programmare una buona intelligenza artificiale per il gioco che non imbroglia, ma calcola realmente le mosse migliori usando solo le informazioni che ha nello stato di gioco dato. Sono bloccato decidendo quale algoritmo o logica sarebbe il migliore da usare. Ho deciso contro algoritmi come la potatura di Alpha-Beta perché ci sono troppe informazioni nascoste soprattutto all'inizio del gioco. Ho letto molte cose interessanti sulla ricerca dell'albero Monte Carlo e sulla relativa ricerca UCT, ma poiché il gioco ha elementi stocastici, l'albero da cercare dovrebbe diventare enorme in breve tempo.

Quale algoritmo o approccio sarebbe il migliore da usare?

risposta

1

MCTS sarà sicuramente migliore. Indipendentemente da quale sceglierai, dovrai trattare informazioni incomplete che rappresentano il problema centrale qui.

1

Here 's un collegamento a un'applicazione di UCT a Klondike Solitaire. MCTS è una soluzione perfetta per il problema poiché può gestire bene la stocasticità.

È possibile osservare il metodo sparse descritto all'interno della carta per limitare la larghezza dell'albero.

+0

Grazie per il link, non sapevo di questo articolo! L'unica cosa che non mi è chiara è come dovrei gestire un oggetto di stato del gioco. All'inizio è abbastanza ovvio, dato che entrambi i giocatori hanno 5 carte, quindi il giocatore iniziale ha solo 5 azioni tra cui scegliere. L'altro giocatore può rispondere con _deck size - 5_ actions. Ma poi non so davvero come gestire gli stati dopo il primo turno. Se sono corretto, dopo il primo round quando entrambi i giocatori hanno pescato delle carte dal mazzo, il giocatore vincente può effettuare _deck size + 4 azioni_ carte inutilizzate. O il mio intero atteggiamento è sbagliato? –

+0

Non so esattamente come va il gioco. Ma uno stato dovrebbe contenere tutte le informazioni determinate. Se hai solo una pila con carte nascoste da cui attingere, lo stato dovrebbe probabilmente racchiudere le mani del giocatore e tutte le carte rivelate (anche se scartate). Quindi sai quali carte vengono lasciate in pila e potresti estrarle successivamente. Le azioni sono tutte le azioni possibili. Ma come nel documento, puoi semplicemente scrivere un simulatore per il gioco (scritto in C, Java, ...) che in qualche modo produce l'elenco delle azioni possibili e tiene traccia dello stato del gioco. – ziggystar