2009-02-03 9 views
32

Sono interessato a costruire un motore di Texas Hold 'Em AI in Java. Questo è un progetto a lungo termine, in cui prevedo di investire almeno due anni. Sono ancora al college, non ho ancora costruito niente di ambizioso e voglio affrontare un problema che manterrà il mio interesse a lungo termine. Sono nuovo nel campo dell'IA. Dalla mia classe di strutture dati al college, conosco blocchi elementari come BFS e DFS, backtracking, DP, alberi, grafici, ecc. Sto imparando regex, sto studiando per SCJP e SCJD e tra poco prenderò un (denso)) corso di statistiche.Costruire un Texas Hold'em che gioca AI .. dal graffio

Domande:

-Dove posso iniziare? Quali libri dovrei scegliere? Su quale tipo di AI funziona il gioco di poker? Da quale progetto open source posso prendere una pagina? Qualche buona risorsa di intelligenza artificiale in Java? Mi interessa anche imparare il Lisp, Jatha è buono?

+10

hai riusciti a sviluppare nulla ? Sono passati 2 anni ... –

risposta

5

Le IA di poker sono notoriamente difficili da ottenere perché gli umani scommettono in modo imprevedibile. Di solito è diviso in due parti.

1) Calcola le probabilità che la tua mano sia la vincente.

2) Formulare strategia di scommesse in base a 1.

Mi consiglia di iniziare con un sacco di statistiche di lettura per la parte 1. Sembra facile a prima vista, ma in realtà è molto complicato (e sbagliare sarà condannerebbe la tua intelligenza artificiale). Quindi passare agli algoritmi genetici per la parte 2. Le strategie di scommesse sono per lo più algoritmi genetici. Si adattano in base al successo e ai fallimenti del passato + qualche randomizzazione per non diventare prevedibili.

-1

Un risultato interessante che ho sentito è che se limiti le opzioni di scommessa a foldare, check e all-in, puoi scrivere un AI che vince uno contro uno con probabilità almeno del 49% e 49,5% se è (IIRC) non andare per primo.

Non so che questa AI è più facile da scrivere di quella che sa quanto puntare, ma è uno spunto di riflessione: scegliere gli importi per scommettere solo i conti per l'1,5% della probabilità di vincita.

1

Ho scritto un AI Hold'Em nel mio studente. Non era particolarmente avanzato, ho usato una macchina Q-Value che ha attraversato un certo numero di stati e aggiornato i valori di Q per ogni stato.

Ho trovato il progetto AI Poker dell'Università di Alberta una fonte inestimabile di informazioni per evitare le insidie.

Come un poster sopra afferma, il primo passo è quello di inchiodare in un paio di regole del poker determinabili - il poker one-on-one può essere sviluppato in modo programmatico.

Una trappola in cui sono caduto non stava costruendo in riconfigurabilità all'inizio. Ad esempio essere in grado di cambiare il grado di apprendimento/gioco.

Sarei interessato a sapere come si ottiene mandarmi una mail all'indirizzo stevekeogh gmail.com

2

Inoltre, lasciando algoritmo genetico di regolare i pesi della rete neurale, che determina la logica di decisione. Questo approccio è molto adatto per il poker AI.

Ho creato la mia IA come questa. All'inizio, ho creato circa 1000 giocatori, che non sapevano affatto come giocare. In base alla loro fortuna iniziale durante le mani, la loro forma fisica è stata ponderata e la nuova generazione creata. I nuovi "cervelli" giocavano meglio della precedente generazione.

Alla fine, le persone migliori hanno giocato molto bene.

+4

Hai pubblicato i tuoi risultati ovunque? –

+0

Quando dici il migliore giocato molto bene, intendi contro le altre IA o contro gli umani? Penserei che un algoritmo genetico si comporterebbe male. Il poker riguarda la comprensione dei tuoi avversari, non delle probabilità. A meno che il tuo algoritmo genetico non includa informazioni sulla distanza dal pulsante durante le scommesse, troverei il tuo risultato sospetto. – jmucchiello

+1

Non hai capito. GA non ha funzionato affatto, le reti neurali lo hanno fatto. GA era solo per evolvere le reti (aggiustando i pesi) in base al loro successo. Ho giocato contro il miglior individuo ed è stato abbastanza buono. Non c'era schema rilevabile nella sua logica. Ho anche rilevato 500k mani da un cliente di poker e ho realizzato modelli di alcuni dei migliori giocatori (con reti neurali). Il migliore individuo ha battuto anche questi. Il BB medio era di circa 1,5 dopo un milione di mani. – nhaa123

2

Come già raccomandato, il libro Theory of Poker è una fonte di informazioni davvero preziosa per giocare e per costruire un'IA. Probabilmente dovresti comprarlo perché non costa molto.

Il gruppo di ricerca dell'Università di Alberta rappresenta lo stato dell'arte al momento, anche se di tanto in tanto presentano una rigida concorrenza. (Non tutti i bot del poker e la ricerca dell'IA sul campo sono pubblici a causa della tentazione di usare i propri risultati su internet poker, anche se è vietato.)

Per prima cosa dovresti decidere che tipo di poker hai intenzione di affrontare per primo. il hold'em di due giocatori è praticamente risolto, anche se i migliori umani continuano a lottare con le migliori IA disponibili. L'intelligenza artificiale ha i principali vantaggi rispetto agli esseri umani avendo una memoria senza precedenti e impeccabile delle mani passate, un'analisi impeccabile dei modelli basati su questo e poiché sono macchine, non si inclinano come fanno quasi tutti gli umani occasionalmente.

Fixed Hold'em è probabilmente il più facile da decifrare, quindi potresti voler iniziare con 1-1 fixed hold'em e poi decidere cosa vuoi fare dopo.

Ecco alcuni aspetti che cambiano la strategia corretta (e il vostro AI):

  • un cash game è diverso da un torneo di -Il numero di giocatori prende le decisioni differenti.
  • Hold'em non è il solo poker. Omaha, Stud e altri esistono e sono ampiamente riprodotti .
  • Il limite fisso è diverso da Pot Limit, che è diverso dal limite .
  • Per battere il meglio è necessario coprire un sacco di cose molto sottili a cui i migliori giocatori pensano quando giocano. Per battere un gioco amatoriale a bassa posta, nessuna di queste cose conta.

Se si decide di andare per No Limit Hold'em, si potrebbe voler controllare tre serie di libri Harrington on Hold'em e un libro No Limit Poker - Teoria e pratica. Avendo letto molti libri sul poker, posso dire che questi libri combinati con Theory of Poker sono abbastanza.

0

Giusto per aggiungere ai link sopra, una delle cose importanti da implementare sarebbe http://en.wikipedia.org/wiki/Kelly_criterion che aiuterà a capire la dimensione ottimale delle scommesse date le probabilità previste in una serie di scommesse. Con gli umani ci potrebbero essere degli errori nel giudicare delle probabilità, ma se il tuo programma di intelligenza artificiale può sputare le probabilità normalizzate previste in base a qualunque algoritmo, allora questa tecnica di dimensionamento delle scommesse che bilancia sia il rischio sia la ricompensa per il giocatore di vantaggio sarebbe un buon prezzo soluzione.

2

Non sono sicuro di quale sia il gioco esatto a cui sei interessato, ma l'approccio tipico è quello di creare una versione astratta del gioco più piccola, risolvere il gioco più piccolo e mappare le situazioni di gioco reali al gioco astratto per generare consigli. La maggior parte dei documenti accademici tralascia i dettagli di questo processo a favore della presentazione dei risultati sulla convergenza, lo sfruttamento e i risultati della competizione.

Tuttavia, esistono alcune basi di codice disponibili pubblicamente che presentano un'implementazione completa. Uno dei migliori è Omen Fell:

http://www.deducer.org/pmwiki/pmwiki.php?n=Main.ArtificialIntelligencePoker

Questo è un bot completa strategia di base che utilizza il gioco fittizio per ottimizzare la strategia per il gioco astratto. È un buon punto di partenza perché è abbastanza semplice, completo e rappresenta una buona presentazione dell'approccio di gioco astratto.

Se siete interessati a sviluppare il poker AI, vorrei suggerire la lettura di tutto, da 2007 e dal gruppo del poker UA e gli studenti di Tuomas Sandholm:

http://www.cs.cmu.edu/~sandholm/

http://poker.cs.ualberta.ca/publications.html