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 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.
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.
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 :)
Schwarze Tulpe
Clarko