AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PoKerBoT

Ein Thema von delphor · begonnen am 14. Jul 2006 · letzter Beitrag vom 10. Feb 2007
Antwort Antwort
delphor

Registriert seit: 13. Jul 2006
2 Beiträge
 
#1

PoKerBoT

  Alt 14. Jul 2006, 02:15
HaLLo zusammen,

weis nicht, ob ich hier richtig bin, hab noch nicht mit dem Coden begonnen, sondern nur mal grob Gedanken über die Realisation gemacht.

Es geht um einen PokerBot, ein Programm, welches automatisch online Poker spielt.

Viele werden nun sagen gibts schon oder einfach uninteressant ...

Den Ersten gebe ich Recht und stelle aber die Frage nach der Funktionalität und Effektivität dieser Programme, welche wohl bisher nicht sehr hoch einzuschätzen ist.

Die Idee ist es einen datenbankbasierten Bot zu programmieren, der der Effizienz eines guten menschlichen Pokerspielers wenigstens nahe kommt...

Vorausgesetzt die grundlegenden Dinge wie Kartenerkennung und Steuerung sind gelöst, könnte man durch Spieleranalyse mittels Datenbanken bzgl. Spielertyp die Effizienz des Botes maximieren. BAsierend auf einer Fülle von statistischen Daten für jeden Mitspieler am Tisch könnte man so einen sehr flexiblen Bot erschaffen.

Die grundlegenden Strukturen/evtl Probleme aus meiner Sicht sind z. B.:

#1 die Kartenerkennung in den Pokerfenstern, welche wohl nur grafisch möglich sein dürfte, ebenso wie die Erkennung der Accountnamen der Mitspieler, BLindposition usw. ...


#2 Ki allgemein (grundlegendes gutes preflop und postflopspiel, natürlich auch viel abhängig von statistischen Werten der Mitspieler


#3 Datenbankverwaltung und Art und Weise der Einbindung derselben in die KI


etc.
.
.

Ist wie gesagt alles nur ein Grundgerüst an Gedanken, würde gern erstmal sehehn, obs überhaupt jemanden interessiert sowas ...

Freue mich auf Resonanz

Delphor
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: PoKerBoT

  Alt 14. Jul 2006, 07:54
Herzlich Willkommen in der DP...

In die Kategorie OpenSource gehören in diesem Forum fertige Programme mit Quelltext rein und nicht Fragen, wie das geht. Dazu gibts genügend andere Kategorien

und jetzt etwas was nichts mit delphi zu tun hat: du willst doch nicht damit dann Geld verdienen bei europoker oder irgendwoas anders oder?
vlees91
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

Re: PoKerBoT

  Alt 14. Jul 2006, 07:56
Ich würde die KI erstmal mit einer eigenen Oberfläche trainieren. Die Schnittstelle zu Online-Plattformen kann man später immernoch drauf setzen.
  Mit Zitat antworten Zitat
14. Jul 2006, 14:53
Dieses Thema wurde von "Phoenix" von "Open-Source" nach "Programmieren allgemein" verschoben.
Jupp, das ist ne Programmierfrage, also raus aus OpenSource und hinein in die allgemeinen Programierfragen
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: PoKerBoT

  Alt 14. Jul 2006, 15:57
Zitat von delphor:
preflop und postflopspiel
Texas Hold 'Em?

Da würd ich halt einfach meine Karten und das, was auf dem Tisch liegt, analysieren und der Hand eine Punktzahl geben - wenig Punkte für ein Pärchen, viel Punkte für Royal Flush, ein paar Punkte für n guten Kicker etc.

Und dann aus dem was auf dem Tisch liegt (blöd wenn einem das Fachwort nicht einfällt ) die Chance der Gegenspieler errechnen, gute Karten zu haben, und aus bisherigen Spielen, wie oft die gegenspieler geblufft haben, ausgestiegen sind etc.

Das kann man dann alles verrechnen und bekommt zum Schluss (hoffentlich) raus, ob man mitgehen, halten, aussteigen oder selber erhöhen soll.

Eigentlich ein ideales Einsatzfeld für NN (neuronale netze), oder? Mit genügend Statistik gehts aber sicher auch.

Ich würde das Interface für die Kartensituation in ein DLL-PlugIn auslagern. In dieses kannst du dann erstmal ein eigenes Trainings-GUI für den Bot bauen, und später deine eigenen APIs für Online-Umgebungen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: PoKerBoT

  Alt 14. Jul 2006, 16:23
Als erstes mal würde ich je nach Pokerspiel (Texas Hold'em, Draw Poker, Omaha) alle notwendigen Funktionen bauen die ausgehend von einer jeweiligen Spielsituation (Karten des Spielers, Karten im Flop, dann Turn und River, die gesetzten Beträge usw.) die exakten mathem. Wahscheinlichkeiten berechnet. Das ist wie auf DSF die Prozentzahl die wir sehen zum Deck des Spielers.

Das wäre erstmal das was eine stupide Machine (FSM) ansich machen kann, mehr nicht.

Jetzt begint das Problem wo der Mensch intuitiv und psychologisch seine Vorteile gegenüber einer Machine entwickelt. Du müsstest also diese Intuition in ein Program hineinbekommen. Das einzigste was mir dazu einfällt sind die Neuronalen Netzwerke. Diese sind lernfähig und können eine Abschätzung für auftretende Muster (Spielerverhalten) liefern die angenähert zu schon antrainierten Verhalten sind. Nur NNs oder Fuzi Logik können sowas. (letzeres fällt eigentlich flach).

Das Problem mit den NNs dürfte aber nicht sein sie zu programieren sondern ihnen den richtigen Input zu geben. Das heist, wir müssen die Spielerzüge wie Raise, Reraise, Check, sogar das Offenlegen einzelener Karten, usw. so umkodieren das es ein NN verstehen kann. Das dürfte sehr schwierig sein und ich zZ. keinen Weg wie man das machen könnte. Die Ausgabe die ein NN geben muß ist dagegen recht simpel, weiterspielen, check, raise usw.

Angenommen wir könnten diese Infos so logisch aufbereiten das wir NNs damit trainieren können, so bleibt immer noch dieses Training. Ein Training eines NNs setzt immer vorraus das mein eine möglichst große und auch repräsentative Datenmenge an Trainingsdaten zur Verfügung hat.

Wenn das geklärt ist und unser NN nun auch trainiert ist bleibt noch das finale Problem der Feinanpassung des NNs an ein jeweiliges und aktuelles Spiel. Das besondere an Pokerspielern ist es ja das sie in ihrem Verhalten quasi unvorhersehbar sein sollten (also nicht nur ihre Mimik/Gestiken unter Kontrolle haben, sondern auch aktiv in ihrer Pokerspielweise manipulieren).

Tja, all dies sind schwere Hürden für einen Programmierer der mit NNs das Problem lösen möchte. Poker ist und bleibt ein Glücksspiel und Software/NNs etc.pp. haben nicht mit Glück am Hut

Falls du mit NNs experimentieren möchtest so findest du hier in der DP einen Source von mir.

Gruß Hagen
  Mit Zitat antworten Zitat
delphor

Registriert seit: 13. Jul 2006
2 Beiträge
 
#7

Re: PoKerBoT

  Alt 14. Jul 2006, 22:12
Find sind alles gute Ideen, vor allem die NN Geschichte, vielleicht die einzige Möglichkeit, ob der komplexität des ganzen ein vernünftiges Pokerspielen des Bots zu gewährleisten.

Werd mir mal deine NN source zu Gemüte führn Negah

Für die einfachere aber wahrscheinlich realistischere Möglichkeit halte ich ein ähnliches System wie es luke vorschlägt, vernünftige KI Entscheidungen basierend auf eigenen Karten, Community, SPieleranzahl etc .., gepaart mit Informationen aus der Spielerdatenbank ...

Wichtig sind natürlich auch Sondersituation, von denen es doch mehr gibt als man vielleicht glaubt, z.B.


SPiel gegen einen verbliebenen Spieler (Heads-up) nach eigenen Raise preflop, (Gegner callt): nun kommt der flop und man ist wieder als erster dran. Nun empfiehlt es sich hier z.b. immer zu raisen, auch ohne flop hit, wenn man eben preflop schon geraised hat.

Generell sollte unser Bot nur den sog. Tight aggressive style spielen, also nur hochwertige pockets cards und die dann kontrolliert aggressiv. durchziehen, wenns Sinn macht.

Unabdingbar ist auch die Kartenunabhängige Bewertung der Qualität der Mitspieler. Als schlechten Pokersil muss man einfach alles andere als den Tight aggressiven (TAG) bezeichnen.

Wann ein Spieler diese Kriterium erfüllt, lässt sich aus der Datenbank erkennen, wobei es natürlich nur Sinn macht, wenn unser Bot gegen nicht tight/agrr Spieler, also schlechte Spieler (schlecht nicht in Bezug auf das Agieren mit einem Blatt, sondern auf sehr viele Blätter gesehen) antritt.

So ist es wohl eher wünschenswert für unseren bot, wenn 3 von seinen 3
Gegner keine TAGs sind also mutmassl. schlechtere Pokerspieler, die auch evtl mal nicht streng nach odds und outs spielen, oder schlichtweg falsches Betverhalten an den Tag legen, als mit 2,3 sharks in der Hand zu sein.
Solche Situationen werden schlichtweg gemieden, gespielt wird nur gegen mutmassl schwächere Pokerspieler.

Klar, wenn dem Bot AA etc. zuflattert, dann wäre es wohl vermessen auf Grund dieser Regel kein Spiel zu wagen, auch wenn mit einem nur TAGS in der Hand sind ...

Nochmal zum Vorgehen:


Die Idee zuerst ne vernünftige Poker KI und dann die Schnittstellenverarbeitung mit den Pokerfenster zu probieren halt ich auch für sinnvoll. Nützt ja alles nichts wenn der bot nicht besser wie meine Oma spielt...

Interessant wäre allerdings im Vorfel vielleicht doch n progi zu machen, welches einfach mal auf nem Portal Spielerdaten sammelt.

unser bot sollte natürlich auch die richtige zielsetzung bzgl des gewinnerblatts realisieren.

z.b. sollte es unserem bot genügen im 1on1 mid oder high pair am ende zu halten, um aggressiv bis zum river spielen zu können, mit 5,6 spielern in der hand, muss natürlich ein höheres blatt wie straigth oder flush als Ziel ausgegeben werden.
Ein bestehendes High pair gegen 5 kann bei viel bettingaction von Seiten der Gegner getrost gefoldet werden.

Auf der anderen Seite ist die Möglichkeit auf flush oder straight oder beides gegen mehrere Spieler wünschenswerter, als nach dem Flop nur ein pair getroffen zu haben.

Also eine wichtige im Vorhinein zu ermittelnde Statistik wäre die Höhe der Gewinnerhand abhängig von der Spielerzahl zu ermitteln, damit unser Bot realistische Zielsetzungen auf den Weg mitbekommt.

Eine sinnvolle Hierarchie innerhalb all dieser Entscheidungsregeln zu finden, dürfte sich als nicht ganz einfach erweisen.

Mach mir das Ganze mal auf Papier klar ...

Freut mich, dass der Bot doch jm interessiert



Gruss Delphor
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: PoKerBoT

  Alt 15. Jul 2006, 11:50
Zitat:
Die Idee zuerst ne vernünftige Poker KI und dann die Schnittstellenverarbeitung mit den Pokerfenster zu probieren halt ich auch für sinnvoll. Nützt ja alles nichts wenn der bot nicht besser wie meine Oma spielt...
Ich habe ja nun schon einige Erfahrungen beim Durchziehen von Projekten und ich meine das du dich auf den für dich spannensten Teil zuerst konzentrierst. Dabei zäumst du aber das Pferd von hinten auf, meiner Meinung nach.

Mit der korrekten Grundbasis an Programmcode, also erstmal Karten,Spielregeln und die Berechnung der mathematischen Wahrscheinlichkeiten, kommst du autom. später zu einer KI. Denn meiner Meinung nach hast du die Problemstellung eben noch nicht richtig analysiert und möchtest sofort mit einer KI anfangen. Verständlich aber meiner Meinung nach der falsche Schritt. Denn gerade bei der Entwicklung der KI ist es wichtig ganz genau zb. die math. Wahrscheinlichkeiten des Spieles zu kennen. Weist du das aber nicht so kann ich dir jetzt schon prophezeien das deine KI alles macht nur nicht das was sie machen sollte. Gerade bei den KI's ist es also wichtig ganz exakt zu wissen wie das Spiel technisch/wissenschaftlich funktioniert, damit die KI dann an der richtigen Position in der Programmlogik eingebaut werden kann.

Es sei denn du verstehst unter KI was anders als ich -> Künstliche Intelligenz und keine stupide Machine wie eine FSM -> finite State Machine.

Alle Spiele mit KI sind immer gleich aufgebaut. Es gibt eine stinknormale FSM zb. einen MiniMax Algo etc.pp. Entscheidend bei diesen Algos. ist die Bewertungsfunktion zur Ermittelung der Gewinnaussichten. Und exakt da wird im späteren Verlauf der Programnmierung die eigentliche KI reingebaut. Sie soll nämlich dann

1.) schneller eine Gewinnabschätzung liefern, sprich die Denktiefe der normalen FSM reduzieren
2.) mit ihrer Wissensdatenbank (Standardzüge, Züge der Gegner etc. pp. der Verdrahtung in einem NN zb.) clevere Gegenzüge ermitteln
3.) die fehlende Intuition, als quasi-Mustervergleich (NN), in das Program implementieren

Auf alle Fälle handelt es sich aus Sicht des Neuronalen Netzwerkes um einen sequientiellen Lern-/Bewertungsprozess. Dh. für dich wäre mein Recurrentes Netzwerk ideal da es auf Grund seiner Recurrencen quasi ein Gedächtnis bekommt und so bei der Bewertung von Spielzügen auch immer alle davor gemachten Spielerzüge berücksichtigen kann. Normale neuronale Netzwerke, wie einfache BP Netzwerke, können sowas einfach nicht. Du solltest also unbedingt nach Recurrenten NNs Ausschau halten.

Ich meine das dein Bot eine echte Herausforderung darstellt und du noch einiges interesantes und auch spannendes Grundwissen der Wahrscheinlichkeitsrechung, Spieletheorie, Neuronalen Netzwerke usw. erlernen kannst. Leider fehlt mir die Zeit sonst würde mich das ebenfalls sehr reizen

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#9

Re: PoKerBoT

  Alt 10. Feb 2007, 15:11
Auf mehrfachen Wunsch wurde die Diskussion über Erlaubte Bots / Pokersucht hier getrennt.

Diese Beiträge findet ihr jetzt hier in der Spinoff-Diskussion.

Mit freundlichen Grüßen,

Phoenix
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz