Wie fange ich an, einen Poker-Bot zu bauen?

Ich lerne seit einigen Jahren hobbymäßig Programmieren und habe Grundkenntnisse in Python, C++ und Javascript. Ich würde gerne ein neues Projekt in Angriff nehmen, bei dem ich meinen eigenen NLHE-Poker-Bot programmiere.

Ich verstehe, dass dies ein RIESIGES Projekt ist, aber gibt es Ressourcen oder Open-Source-Bibliotheken, die Sie empfehlen würden?

Ich habe gesehen, dass OpenHoldem früher gut war, aber es sieht nicht so aus, als wäre es in ein paar Jahren berührt worden.

Ich liebe diese Idee! Ich möchte einen Discord-Poker-Bot erstellen, aber ich habe keine Ahnung von Codierung, vielleicht werde ich jemanden damit beauftragen, denke ich.
Sie können den Discord-Bot von Poker Now ausprobieren, ein guter Ort für Inspiration. Vielleicht können Sie den Ersteller auch für einige Tipps ausfindig machen

Antworten (3)

Ich schlage vor, dass Sie zuerst einen Eigenkapitalrechner schreiben, da ein Bot einen braucht. Wenn Sie Sachen auf Eigenkapital basieren, ist es so viel einfacher. Dann nur eine binäre oder gezogene Hand.

Dann können Sie einfach eine Quote für den Call machen und eine feste implizite Quote auf ein Unentschieden geben. Wenn Sie 3:1 benötigen, um auf ein Unentschieden zu callen, gehen Sie mit einem 2:1 weniger. Alles, was Sie noch haben, ist die Höhe des Einsatzes für Open und Re-Raise. Bluffs sind etwas schwieriger, aber wenn Sie nur Ihre kaputten Draws wie 1/3 bluffen, werden Sie ziemlich nah dran sein.

Call-Bluffs sind etwas schwieriger, aber Sie werden einige Statistiken darüber erhalten, wie oft sie bluffen, wenn Sie nur nach Equity callen. Rufen Sie etwa 1/3 ihrer Bluff-Rate zurück, wenn Sie einen Bluff-Catcher haben.

Weisen Sie jeder Position und Wettgröße einen offenen Bereich zu. Eine Flop-Größe wie 1/5 reicht aus, um sie abzuwerfen.

Ich habe einen GTO-basierten Bot ausprobiert, aber es war eine Katastrophe. GTO Sie spielen, um nicht zu verlieren.

Basierend auf dem Spiel können Sie die Reichweite der Gegner anpassen. Wenn Sie Logik auf Billigkeit stützen, brauchen Sie keine komplizierten Regeln.

Laut einem neuen Beitrag kann dies mit maschinellem Lernen geschehen.

Das ist mehr oder weniger das, was ich vorhabe. Ich hoffe nur, dass es eine gute Bibliothek gibt, die bereits OCR- und Quoten-/Equity-Berechnungen enthält. Versuche so weit wie möglich im Voraus zu starten.
Dann viel Glück für Sie

Es ist etwas, das ich in Betracht gezogen und vor ein paar Jahren angefangen habe, aber aufgegeben habe.

Sehen Sie sich Tesseract OCR an. Dies sind die "Augen" Ihres Bots.

Als nächstes haben Sie ein genaues Verständnis der Pokervariante, die der Bot spielen soll.

Schauen Sie sich als Nächstes maschinelles Lernen an, z. B. Klassifizierung wie mit neuronalen Netzen (und auch Merkmalsextraktion / Dimensionsreduktion, um die relevantesten Statistiken zu erhalten).

Endlich nicht stören. Daran wird bereits gearbeitet (siehe Video von Doug Polk). Pokerstars verfügt über Anti-Bot-Technologie, daher müssen Sie eine sehr fortschrittliche KI entwickeln, die in der Lage ist, den Turing-Test für diese Website zu bestehen, und Websites, die Bots zulassen, werden Bots haben, die Ihren Bot zerstören. Außerdem könnte Online-Poker bereits von fortgeschrittenen Bots zerstört worden sein, wenn Sie die Entwicklung abgeschlossen haben!

Wenn Sie WIRKLICH begeistert sind, können Sie sich mit github vertraut machen. Eine Google-Suche brachte einen Poker-Bot hervor, der auf Github entwickelt wurde, zu dem Sie beitragen oder zumindest einige Ideen bekommen könnten.

Könnten Sie einige Beispielfunktionen bereitstellen.
Ich kam nur so weit, Informationen von bis zu vier Tischen zu lesen und den Spielstand zu verfolgen, z. B. wer an der Reihe war, wo war der Knopf usw.
Wie gehen Sie mit Equity als Feature um?
Nun, ein Ansatz könnte darin bestehen, maschinelles Lernen zu verwenden und mit Handverläufen zu trainieren (viele davon!). Ihre Klassifizierungen (die Entscheidung des Bots) wären „Fold“, „Call/Check“ und „Raise“. Dieser Ansatz ist nicht besonders gut, da er von festen Raise- und Call-Größen ausgeht. Sie könnten jedoch weiter verfeinern und Klassifizierungen für Half-Pot-Wetten und Full-Pot-Wetten usw. haben. Sie möchten, dass der Bot die Klassifizierung auswählt, die den höchsten EV gemäß Definition in den Handverläufen hat, aber auch die nächste Aktion im gegenwärtigen Moment Geschichte der Hand.
Sie hätten also eine "nächstliegende" Funktion, die auf die aktuelle Aktion angewendet wird, multipliziert mit den EVs jeder Entscheidung. Die höchste Zahl gewinnt und der Bot wählt diese Option aus. Dies ist nur eine Möglichkeit, dies zu tun, und es würde eine große Anzahl von Handverläufen erfordern, um etwas Gutes zu tun. Die andere Möglichkeit besteht darin, einen Bot zu erstellen, der tatsächlich Wahrscheinlichkeiten berechnet. Der übliche Fall beim Rechnen ist, dass eine Art Kompromiss zwischen den beiden für die Leistung am besten ist.
Danke für den Einblick! Was den Teil „Mach dir nichts aus“ angeht, denke ich, dass ich ihn respektvoll ignorieren werde. Meine Absicht, es zu bauen, wäre nicht unbedingt, es im Echtgeldspiel zu verwenden, sondern nur, um meine Programmierkenntnisse aufzubauen. Da ich ziemlich neu beim Poker bin, denke ich, dass es Spaß machen würde, wenn es Aktionen vorschlagen würde, die auf GTO basieren, anstatt 15 Tische für mich zu spielen.
Kein Problem. Ehrlich gesagt denke ich, sei es Programmierpraxis oder finanzieller Gewinn, es ist Zeitverschwendung, aber wenn Sie nur wirklich daran interessiert sind, einen Poker-Bot zu bauen, dann viel Glück für Sie!
Hast du einen Link zu dem von dir erwähnten Video?

Erkunden Sie zunächst Projekte auf GitHub. Dort finden Sie viele Beispiele für bereits funktionierenden Code. Zweitens müssen Sie verstehen, dass "Poker Bot" eine Mehrkomponentenaufgabe ist, die aus grundlegenden Teilen ähnlicher Programme besteht - Hauptschleife, Spiellogik, GUI, Daten (Speicherung, Konzeption, Verarbeitung), API, externer Code und so weiter .

Insbesondere wird die API implementiert, um mit externem Code wie "PokerTracker" zu arbeiten. Die ähnlichen Programme befinden sich in der Wurzel der Hintergrunddaten. Außerdem sind Metadaten ein Bildschirmbild dessen, was auf dem Spieltisch passiert. Diese Art von Informationen müssen für eine konstante Zeit erhalten und verarbeitet werden!!!

Lösungen, die während der Implementierung von künstlicher Intelligenz erhalten wurden, sollten durch Aktionen auf dem Spieltisch auf dem Monitor angewendet werden.

Meiner Meinung nach muss der Algorithmus, der in PokerBot verwendet werden sollte, einen Lösungsbaum erstellen, einen Algorithmus für Runden und Sortieren wie MiniMax und einen Algorithmus für relationale Speicherung wie NestedSets.

Die Diskussion der Technologien, die in diesem Projekt verwendet werden sollten, ist Gegenstand eines separaten Gesprächs :)