Ich versuche, eine KI für ein Kartenspiel zu entwickeln und bin ein bisschen über die Technik / den Algorithmus, den ich verwenden sollte, festgefahren. Hier einige Annahmen zum Spiel:
- Nachdem die Karten an die Spieler verteilt wurden, gibt es keine Zufälligkeit mehr. Ich meine hier, dass jeder Spieler wählen kann, welche Karten er spielt, aber es findet kein zufälliger Prozess statt, wie beim Verteilen der Karten zu Beginn des Spiels.
- Es gibt eine Einschränkung bezüglich der Karten, die gespielt werden können, wenn eine Karte bereits gespielt wurde.
- Der Spieler, der den Stich gewinnt, spielt dann zuerst. ZB Spieler 1 spielt eine Karte, Spieler 2 spielt eine Karte und gewinnt. Dann spielt Spieler 2 eine Karte und dann spielt Spieler 1.
Ich kenne viele Hinweise / Regeln (zB wenn ich weiß, dass der Spieler die Karten A, B, C hat, sollte ich D spielen), die mir helfen, das Spiel zu gewinnen. Daher wollte ich zuerst ein Bayes'sches Netzwerk verwenden, um diese Regeln zu beschreiben. Das Problem ist, dass ich keine zuzuweisenden Wahrscheinlichkeiten kenne, aber ich könnte eine Heuristik unter Verwendung der Geschichte der gespielten Spiele (gegen einen Menschen) berechnen. Zweitens ist es sehr wahrscheinlich, dass ich nicht alle Regeln kenne und dass es einige implizite Regeln gibt, die von der KI benötigt werden, um das optimale Spiel zu finden.
Ich bin mir nicht sicher, ob dies eine gute Möglichkeit wäre, eine KI für ein solches Kartenspiel zu entwickeln.
Ich frage mich auch, ob es andere Techniken gibt, die am besten zu dem Problem passen. Ich habe mir beispielsweise Minimax angesehen (möglicherweise mit einem Beschneidungsalgorithmus), wäre aber eine gute Option für dieses Problem? Ich bin mir ziemlich unsicher, da die wichtigsten Spiele zu Beginn des Spiels sind, wenn es die höchsten unbekannten Parameter gibt (die meisten Karten sind noch nicht gespielt).
Antworten:
Ihr Beispiel klingt ähnlich wie Bridge . Top Bridge-Systeme verwenden Monte-Carlo-Methoden , um Züge auszuwählen. Auf hohem Niveau:
Sobald Sie etwas zum Laufen gebracht haben, können Sie alle möglichen erweiterten Strategien hinzufügen. Variieren Sie beispielsweise Ihre Wahrscheinlichkeiten basierend auf den historischen Spielen eines Spielers, variieren Sie die Wahrscheinlichkeiten basierend auf dem Stil eines Spielers (passiv, vorsichtig, aggressiv) oder berücksichtigen Sie sogar die Auswirkungen bestimmter Spieler, die zusammen spielen.
Bearbeiten Sie den Kommentar von LaurentG:
Letztendlich möchten Sie vielleicht die Idee des perfekten Spiels für alle Spieler aufgeben und etwas Realistischeres ersetzen. Trennen Sie konzeptionell die Wahrscheinlichkeiten für eine Karte auf der Hand einer anderen Person (Kartenverteilung) von der Wahrscheinlichkeit, dass ein Spieler während einer Hand eine bestimmte legale Karte spielt (Kartenauswahl).
Die Kartenauswahl ist reif zum Lernen. Wenn Sie Spiele über Spiele hinweg verfolgen, können Sie lernen, wie ein bestimmter Spieler oder Spieler im Allgemeinen dazu neigen, basierend auf den Karten in ihrer Hand und den Karten, die gespielt wurden, zu spielen. Sie könnten sich sogar etwas einfallen lassen und ihre Annahmen über Karten modellieren, die vor ihnen versteckt sind.
Es gibt auch Lernmöglichkeiten für die Kartenverteilung. Die vergangenen Gebote und die Kartenauswahl eines Spielers während einer Hand können ein "Tell" darüber anzeigen, was in ihrer Hand verborgen ist. Sie können historische Daten verwenden, um die Wahrscheinlichkeiten beim Erstellen der einzelnen virtuellen Spiele anzupassen.
quelle
Ein Fall aus jüngster persönlicher Erfahrung:
Ich habe selbst an einem Kartenspiel gearbeitet (Bisca, ein portugiesisches 2-Spieler-Spiel) und mit Monte-Carlo-Methoden gute Ergebnisse erzielt, insbesondere mit dem neueren Algorithmus für die Monte-Carlo-Baumsuche (ISMCTS, beschrieben mit) Beispielquellcode in Python unter http://www.aifactory.co.uk/newsletter/2013_01_reduce_burden.htm ).
Es spielt sich einigermaßen gut, mit dem gelegentlichen falschen Zug, nur mit der Kenntnis der Spielregeln. Ich versuche gerade, es zu untersuchen, um es verbessern zu können, da es nach den Informationen, die ich darüber (und übergeordnetes MCTS) gelesen habe, möglich ist, das Spiel mit Heuristiken zu verbessern ( http: // www .orangehelicopter.com / ed / papers / aiide13.pdf ) und Rückschluss auf die Gegnerkarte .
quelle
Ich denke, das hängt von den Spielregeln ab.
Folgendes verstehe ich aus Ihrer Frage:
Annahmen :
Beispielspiel nach folgenden Regeln:
Dieses Spiel wird nun durch das Unentschieden entschieden und indem Sie sich merken können, welche Karten gespielt wurden, um die Hand Ihres Gegners zu kennen.
In dieser Situation würde ich die KI nur teilweise daran erinnern lassen, welche Karten gespielt wurden, dh einen gewissen Prozentsatz der gespielten Karten (niedrigere Zahl = höhere Schwierigkeitsstufe KI) aus der Liste entfernen, aber keine wichtigen wie Asse oder Könige. Auf diese Weise weiß die KI beispielsweise, dass es sicher ist, eine Herzdame zu spielen, da sie sich daran erinnert, dass der Gegner weder das Ass noch den König hat, sondern eine Wahrscheinlichkeit berechnen muss, wenn er dann die 10 spielen möchte. weil er sich vielleicht nicht erinnert, ob der Jack noch im Spiel ist.
Dies ahmt die menschliche Aufmerksamkeitsspanne nach.
TL; DR
Begrenze, wie viel die KI weiß, damit ihre Entscheidungen nicht perfekt sind, nur gut genug.
quelle