Danke erstmal für die GlückwünscheHat echt Spass gemacht sich intensiver mit dem Thema auseinanderzusetzen ! An dieser Stelle natürlich auch nochmal ein Danke an Barny und J0hn für die Organisation! Für die nächsten Coding Conteste stelle ich mich auch gerne als Organisator/Helfer zu Verfügung
Der Code vom Bot ist inzwischen ins Repo gepusht. Ich werde noch ein paar Kommentare hinzufügen und die Test-Spieler auf ein einheitliches Level bringen, gibt also noch paar Commits.
Ich hatte mehrere Ansätze die ich über seeeehr viele Simulationen und Tests evaluiert habe. Dabei habe ich stehts ein Feature in einen Spieler implementiert und diesen gegen den bisher besten Spieler antreten lassen. Schließlich hat sich "HumanStrategy9" als bestes rausgestellt, knapp nach "HumanStrategy4c" und "HumanStrategy6"Ich bin total gespannt auf deinen Code! Vielleicht schreibst du noch ein paar Zeilen darüber?
Die wichtigste Erkenntnis war dabei: Wenn man die Möglichkeit hat eine Karte von Farbe X zu spielen oder eine Karte der Farbe Y zu spielen sollte man die Karte spielen wovon man weniger hat. Das scheint erstmal nicht logisch, hat sich aber in den Tests als besser rausgestellt:
mit der sonst gleichen Strategy.Player 1 vs Player 2: 5402 vs 4598 =54.02%
Gegen einen Spieler welcher zufällig Karten legt und sich zufällig Farben wünscht hatte ich am Ende eine Gewinnrate von 72%. Dieser Wert war stehts mein Referenzwert wie gut der Spieler wirklich ist.
Über weitere Strategien wird es bald noch etwas auf meinem Blog geben.
Ein weitere Ansatz der leider nicht so viel Benefit gebracht hat war ein Suchbaum. Das Problem bei MauMau ist einfach die hohe Komplexität wenn man die Gegnerkarten nicht kennt. Daher macht ein solcher Suchbaum erst Sinn wenn man die Gegnerkarten auf ein Minimum einschränken kann bzw die eigene Hand so wenig Karten hält dass der Suchbaum einigermaßen Berechnenbar ist.
Dadurch war es auch möglich Situationen zu Erkennen die zu einem 100%igen Sieg führen, Beispielsweise:
Dadurch dass Karo 7 und Karo 8 bereits gespielt worden können sich diese nicht in der Gegnerhand befinden. Wenn man zuerst den Bube mit Wunschfarbe Karo spielt kann man nicht mehr verlieren, wenn man als erstes allerdings die Karo 9 spielt ist noch ein Verlust möglich (wenn der Gegner darauf mit einem Bube Antwortet).Code:TopCard: Karo 10 Player 1 Hand: Herz Bube, Karo 9 Player 2 Hand: [ALLE KARTEN AUßER Karo 7, Karo 8]
Solche Situationen ergeben sich auch wenn man viele 8ter auf der Hand hat und den Gegner mit "einem Zug" besiegen kann ohne dass er Antworten kann.
Eine Suchbaumevalution durch eine Heuristik mit Suchbaumstufe 4 ist zwar implementiert, hat aber keinen wirklichen Vorteil gebracht (1-2% gegen Spieler ohne Heuristik).
Bei Fragen gerne stellen
Grüße



Hat echt Spass gemacht sich intensiver mit dem Thema auseinanderzusetzen ! An dieser Stelle natürlich auch nochmal ein Danke an Barny und J0hn für die Organisation! Für die nächsten Coding Conteste stelle ich mich auch gerne als Organisator/Helfer zu Verfügung
Zitieren