Poker KI, realitätsnah?

Status
Nicht offen für weitere Antworten.

Doktor Ruff

Mitglied
Moin,

ich habe mal ein relativ simples Pokerspiel in Java gebastelt und will nun die noch stupide KI etwas aufpeppen (bisher geht der Computerspieler jeden Einsatz mit und kann seine Karten nicht einschätzen).

Ich hatte mir zwei Lösungsansätze zurecht gelegt:

1. Die KI berechnet lediglich die Wahrscheinlichkeiten wie hoch seine Gewinnchancen sind. Das macht den Computerspieler allerdings zu vorhersehbar. Aber vom Programmieraufwand ist das die schnellste Lösung würde ich schätzen.

2. Der KI werden alle jemals gespielten Spiele zur Verfügung gestellt und aus den Erfahrungswerten (z. B. wie oft diese Hand gewonnen hat usw.) berechnet die KI ihre Chancen. Also ähnlich wie einige Schachcomputer. Der Programmieraufwand ist hier allerdings gewaltig.

Vielleicht habt ihr schonmal Erfahrungen gesammelt in Sachen KI Programmierung und könnt berichten ob sich der Aufwand für eine KI überhaupt lohnt.

PS Das Thema hat jetzt eigentlich nur bedingt was mit Java zu tun aber egal ...
 
J

Johanness

Gast
Na ja, Poker ist nunmal ein Spiel mit "unvollständiger Information". Das heißt, da der Computer die Karten seiner Gegner nicht kennt (und umgekehrt), kann er den 'besten Zug' nur vermuten (mit Wahrscheinlichkeiten), aber nicht exakt bestimmen. Die Gegner müssen mit der gleichen Unsicherheit leben. Ich würde also mal den ersten Ansatz probieren, und prüfen, ob der Computerspieler wirklich so vorhersehbar spielt.

Johannes
 

Gumble

Bekanntes Mitglied
Wenn Du bissl Basteln moechtest, dann schau Dir mal neuronale Netze an. Hab da mal nen Mini-Kurs gemacht in dem der PC in einem kleinen Ratespiel gegen den Menschen antreten musste. Die wenigen Neuronen musste man paar mal antrainieren und dann war der PC irgendwann schwer schlagbar. Die Komplexitaet waere beim Poker natuerlich viel hoeher und das Training muesste man vermutlich auch automatisieren. Ergibt aber sicherlich ein interessantes Projekt dass Du spaeter mal als Referenz vorzeigen koenntest (und uns hier zur Verfuegung stellen).


btw Doc, Du hast nicht zufallig in Ebern Abi gemacht?
 

BLiNK

Mitglied
Ich programmiere gerade auch an einer Art Poker KI, allerdings für Texas Hold'em. Die Berechnungen sind daher auch nicht übertragbar auf andere Varianten wie beispielsweise 5 Card Draw, wofür aber deine erste Variante absolut ausreichen würde, weil du keinerlei Informationen über die Hand des Gegners hast. Welche Poker Variante hast du gewählt?

Meiner Meinung nach ist dein zweiter Ansatz unsinnig. Erstens bekommst du diese Daten nirgends, zweitens kannst du sie wohl einfacher berechnen.
 
G

Guest

Gast
BLiNK hat gesagt.:
Welche Poker Variante hast du gewählt?

Ebenfalls Texas Hold'em! Allerdings funktioniert das Setzen bei mir noch ein bisschen anders. Im Moment läuft noch alles mit gleichbleibenden Grundeinsätzen (Ante) also ohne Blinds etc. Und wie geschrieben die KI geht jeden Einsatz des Spielers mit. Wenn ich die Blinds einbinden würde hätte ich auch wieder ein Problem mit der KI. Da die Position an der man sitzt (bzw. die KI) auch eine Rolle spielt (Blinds attackieren, etc.). Ganz zu schweigen von den speziellen Spielsituationen (Head to Head, Chipleader, usw)

Also die Sache mit den gespeicherten Partien hab ich verworfen. Da wären zuviele Probleme. Ich wollte es halt so ähnlich machen wie ein menschlicher Spieler, der praktisch aus seiner Erfahrung heraus erkennt, ob eine Hand gute oder schlechte Gewinnchancen hat.

Die Sache mit den Wahrscheinlichkeiten scheint die einfachste Lösung zu sein. Dazu könnte man ja der KI ein paar menschliche Eigenschaften geben (z. B. Risikobereitschaft) die variabel ist.

Zum Thema: Neuronale Netze
Ich hab ehrlich gesagt keine Ahnung was genau Neuronale Netze sind. Ich weiss nur, dass ich eine Vorlesung im Hauptstudium (studiere Wirtschaftsinformatik) absolvieren muss, die genauso heißt ;)

PS Ich habe nicht in Ebern Abi gemacht. Hab meins am Berufskolleg in Moers gemacht. Das sagt die jetzt wahrschienlich auch nix ;)
 

DarkwingDuck

Mitglied
Ich würde auch deinen ersten Denkansatz nehmen. Du kannst die KI - Entscheidungen ja mit ein paar Zufallszahlen geringfügig beeinflussen, damit er nicht zu berechenbar wird.
Zudem könnte die KI wenn sie eh schon ne Menge Geld gewonnen hat mehr auf Risiko spielen.
Oder die KI könnte motiviert / demotivert werden. Jenachdem wie oft sie in letzter Zeit gewonnen hat.

gruß
DarkwingDuck
 

BLiNK

Mitglied
Ich weiß ehrlich gesagt nicht genau, wo dein Problem liegt. Du simulierst alle möglichen Karten deiner Gegner und berechnest daraus, gegen wie viele Hände die eigene Hand gewinnt, verliert oder unentschieden spielt. Dann simulierst du die Karten, die noch kommen und schaust, wie oft sich die eigene Hand verbesser bzw. verschlechtert. Die Handstärke setzt du dann in Verbindung mit der möglichen Verbesserung/Verschlechterung und berechnest daraus, ob die KI setzen, schieben oder bei einem Einsatz aussteigen soll. Variieren kannst du das Ganze indem du die Schwellwerte ab denen beispielsweise gesetzt oder erhöht wird, mit Zufallszahlen abänderst.

Für die Pocket Karten würde ich so eine Tabelle nehmen: http://boersebboard.pyrokar.lima-city.de/poker/?blast=HoldemTippsVier

Für den Anfang sollte die reichen, später kannst du ja einfach die von Sklansky nehmen, der sagt ja ziemlich genau in welcher Position man welche Karten spielen sollte.


Um das Spiel weniger berechenbar zu machen, kannst du dann ja Dinge unabhängig von deinen Karten einbauen. Beispielsweise könnte die KI bei jedem zweiten mal, bei dem ein Päärchen geflopt wird versuchen zu bluffen. Da gibt's viele Möglichkeiten.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben