Schafkopf-Strategie: Strategiesammlung für eifache Computerspieler-Intelligenz

Blubbi95, 03. März 2018, um 21:30

Servus miteinander!

Ich bin gerade drüber, für die Schule ein textbasiertes Schafkopfspiel zu programmieren und hab das auch soweit, dass die Gegner automatisch regelkonforme Züge Spielen. Jetzt ist das ganze aber ziemlich fad, wenn die Gegner keine sinnvollen Spiele ansagen und nur zufällige (aber regelgerechte) Karten legen.

Selbst bin ich leider nicht besonders gut im Schafkopfen, und weiß daher nicht wann welcher Zug sinnvoll ist, beziehungsweise welche Verhaltensregeln dahinter stecken.

Deshalb jetzt die Frage: welches sind die grundlegendsten Regeln, die eine "künstliche Intelligenz" beachten sollte, um die richtigen Spiele anzusagen und dann auch die richtigen Karten zu spielen?

Bisher eingebaut ist die Regel, dass ein Gegner, der entweder 5 Trümpfe mit mindestens einem Ober und einem Unter, oder 4 Trümpfe mit mindestens zwei Ober und einem Unter ein Rufspiel ansagt.

Grüße

hansolo_forever, 03. März 2018, um 22:02

KI programmieren - viel Spaß...
Mit festen Regeln kommst jedenfalls ned weit - da wird deine 'Oma' nie gut spielen lernen ^^
Zehn Grundregeln, die das Programm brav befolgt, und nach 20 Spielen nimmt jeder mittelmäßige Schafkopfer das auseinander - was Du integrieren mußt, ist flexibles Reagieren auf unkalkulierbare Situationen ('Houston, wir haben ein Problem...' ^^).

Ich hab mir da auch schon Gedanken drüber gemacht - aber die Entscheidungsprozesse, die gleichzeitig in einem menschlichen Kartenspieler-Hirn ablaufen (stechen, ja - nein ; schmieren ja - nein, König rein oder Nixxer, weil der König KÖNNT ja no EVENTUELL stechen; Sitzposition beachten, damit der Feind möglichst nicht hinten sitzt...). Und klar hat ein Meta-Programm kein Problem, zu wissen welche Karten schon gefallen sind - aber bring ihm erstmal bei, zu erkennen, wer noch was auf der Hand hat, also Einschätzungen vorzunehmen, die auf... - hüstel... - 'Wahrscheinlichkeiten' und Beobachtung des Gegner-Verhaltens beruhen.

Die Komplexität übeschreitet m.E.
a.) die Möglichkeit der Wiedergabe in Code - zumindest heutzutage
b.) die Rechenleistung - es sei denn, dir steht das NSA-Rechenzentrum in Fort Meade zur Verfügung ^^

Schach programmieren is einfacher ;-)

Stenz1969, 03. März 2018, um 23:31

Wie Han schon bemerkt hat, ein recht ambitioniertes Projekt, in der Tat.
Allerdings soll's ja keine Doktorarbeit werden und und von daher wärs auch nicht schlimm, wenn menschliche Spieler Deine "Oma" zerlegen würden.
Ein Spiel anzusagen ist eine Sache (die einfachere), korrekt zu spielen eine ganz andere.
Du hast ja bereits 2 Deiner Regeln für die Ansage eines Rufspiels beschrieben. Da hab ich noch ein paar Vorschläge für Solo Spiele die mir spontan einfallen, sozusagen als Hausaufgabe ^^

- 1 Unter und 4 Sauen = Wenz
- 5 Trumpf (mit einer Trumpf Schmier), Sau, Sau + kleine gleicher Farbe = Solo
- 6 Trumpf, Sau, +X = Solo
- 7 oder 8 Trumpf = Solo

Abgesehen von diesen 4 gibts halt noch 1.234.567 andere Spielvarianten

Fürs Ausspielen kannst ja zunächst mal versuchen so Dinge wie ...
- Spieler spielt Trumpf, Gegenspieler spielt Farbe
- Langer Weg - kurze Farbe, kurzer Weg - lange Farbe
- etc.
zu implementieren.

keep on coding ...

hansolo_forever, 04. März 2018, um 00:24

123.457.798^² * c² - und des san nur die guten moves
Biesler-Gekartel gibts [(gespielte Spiele ever)²*c² - (die wenigen guten)²*(Deppnklopfer-Ramsch) / (Frustspiele+Kontra) + Oma-Faktor] (welcher bis heute nicht definiert ist und daher erstmal vernachlässigt wird (wir setzen ihn mal auf NULL).

Ganz im Ernst, aber: nice attempt, läßt sich zumindest heute mit Hausmitteln nicht verwirklichen.
Würde mich interessieren, ob die coder-Fexe von Sauspiel was launiges beitragen können ? !

Interessant is des Thema allemal...

Traumbefreiter, 04. März 2018, um 00:48

es gab vor so gefühlt 20 jahren schon ein schafkopfspiel-programm (bekam ich amal auf diskette geschenkt!), programmiert von jemand aus der münchner gegend. das war ein richtiges "ich-hau-immer-mit-einem-höheren-trumpf-drüber-programm! grausam! nach kurzer zeit konnte man kaum noch dagegen verlieren, alles war allein vom stand der karten bestimmt!
ebenfalls ist es lange her, als ich irgendwann amal den begriff "fuzzy logic" aufgeschnappt habe; könnte hier evtl. anwendbar sein.
auf alle fälle solltest du dich hier mit der (ökonomischen) spieltheorie für oligopol-spiele beschäftigen. formal-mathematisch ist das themengebiet die hölle, sobald es ins detail geht.
stimmt schon, was oben geschrieben wurde: ein gutes schachprogramm ist viel leichter programmierbar! und den "menschlichen faktor", und wenn es nur die risikobereitschaft ist, bekommst die nie in den griff! allein die oben genannten regeln zur spielansage: da gibt es nur ein schnalliges grinsen 😄

kamiko, 04. März 2018, um 01:57

nun verderbt ihm doch nicht den Spaß.
wenn man die richtigen Regeln einbaut, kann man schon ein ganz anständiges Programm hinbekommen.

Bspw. bei einer noch nicht gespielten Farbe mal die As reinlegen, wenn man sie hat.
ist in den wenigsten Fällen verkehrt.
Oder als Spieler nicht selbst die Ruf spielen, sondern Trumpf und als Gegner die Ruf suchen.

wenn ne Farbe angespielt wird, dann hast ja nicht so viele Möglichkeiten. bei nur einem musst eh zugeben, bei 2 oder mehr - wenn der Feind hinten sitzt hältst die Schmier zurück, ansonsten, wenn die As noch nicht fiel, kannst ja auch mal nen 10er setzen. die Entscheidung überlässt dem Zufallsgenerator und verkehrt liegt man auch nicht, da die Kartenverteilung auch immer anders ist.
Mal ist es grottenfalsch, mal goldrichtig.

so ein Programm spielt dann zumindest ned so langweilig wie manche in real^^

hansolo_forever, 04. März 2018, um 02:28

Da hast au wieder Recht - wie ma's macht, is eh' verkehrt - da können die IC's au ned mehr verkehrt machen als die Synapsen.
Und des Lustige is - beide tun dabei so, als würden se denkn ^^

Blubbi95, 04. März 2018, um 16:24

Da waren ja schon paar gute Ideen dabei, vorallem das von Kamiko und Stenz halte ich für machbar.
Dass das ganze keine perfekte KI wird ist mir schon bewusst, sowas müsste man dann mit Alpha-Beta-Pruning oder ähnlichem forcieren, dann machts aber als Spieler auch keinen Spaß mehr, wenn der Gegner immer den perfekten Zug auf Lager hat 😄.
Die Idee mit dem Zufallsgenerator der bei zwei fast gleichwertigen Zügen entscheidet finde ich gut. Generell mit Zufall zu arbeiten sorgt auch dafür, dass der Gegner nicht berechenbar ist, obwohl man genau weiß wie er "denkt".
Ich probier das mal einzubauen, bei Interesse kann ich das Teil dann ja auch mal irgendwo hochladen.
Danke derweil.

hansolo_forever, 05. März 2018, um 00:11

Der Witz ist ja, dass es keinen 'perfekten Zug' gibt - beim Kartln (beim Schach oder bei ähnlichen Brettspielen schon).
Zu implementieren, dass die KI flexibel 'mitdenkt' und reagiert - gleiche Positionen, gleiche Kartenverteilung, aber einer am Tisch spielt eine andere Karte aus - dann ist schmieren statt stechen angesagt.
Ihr wißt, was ich mein.
Es IST möglich, sowas zu codieren - die DNA macht ja nix anderes - aber dafür brauchts wirklich die Rechenleistung von Fort Meade (Greetings to Maryland ! ^^) und die Fähigkeit, eben nicht zufällig zwischen zwei FAST gleichwertigen Zügen zu entscheiden.
Den etwas besseren vom sub-optimalen Zug unterscheiden zu können, is der Punkt...

kamiko, 05. März 2018, um 00:59

es gibt schon den "perfekten zug" - zumindestens "einen perfekten"; es kann sein, dass es mehrere "gleichwertig perfekte" gibt, jedoch lässt sich immer ein Zug ermitteln, der von keinem besseren überboten wird.

das Prinzip ist ganz einfach - es wird davon ausgegangen, dass der (die) Gegner immer den absolut besten Zug spielen.
man sucht also den eigenen Zug, bei dem die Gegner am wenigsten Gewinn machen können.

die Schachcomputer machen das ganz genauso
(https://de.wikipedia.org/wiki/Minimax-Algorithmus)
der Algorithmus lässt sich aber genauso auf mehrere Spieler anwenden, wenn man "seinen besten Zug" gegen alle für sich möglichen negativsten Varianten die durch das Spiel der anderen auftritt sucht.
Der Algorithmus ist deterministisch und findet garantiert einen nicht zu überbietenden optimalen Zug.

das Problem ist aber - wie Du schon anmerkst - dass die Rechenleistung der Computer für solch einem Problem -um es im Gegensatz zu Schach vollständig durchzuspielen- nicht mal im Ansatz ausreicht.

hansolo_forever, 05. März 2018, um 01:30

kami - d'accord. Datür brauchst a Gehirn, und selbst des glangt ned bei allen, wie wir wissen ^^
Und dann no Sachen wie 'Instinkt' (wie auch immer man das definieren will) oder 'a Näsle beim Anzug',

ich will dich echt ned entmutigen, Blubbli, ich hab mir eben nur Gedanken über eine eine wirklich 'intelligent' spielende software gemacht - has not to be your goal.
Ich wünsch dir viel Erfolg, und sorry, wenn's von meiner Seite ned so produktiv war...

Traumbefreiter, 05. März 2018, um 01:38

jessas na, schafkopfn iss schoo ohne "menschlichen" faktor so komplex, dass die optimalen züge ned amal in oana Hesse-Matrix, oda in aa geränderten Hesse-Matrix, unterbringen kannst!

hansolo_forever, 05. März 2018, um 01:40
zuletzt bearbeitet am 05. März 2018, um 01:41

Tu ned so, als würdst was von der Sache verstehn... ^^
Des Solo ohne Acht vom stef saggt ja scho ois - grins

Traumbefreiter, 05. März 2018, um 01:41

da kannst nur mit high-level-statistik rangehen: mit vielen multinominalen logit-schätzungen in zeitreihen; also, die software muss im laufe von spielen "statistisch" auch noch dazu lernen!

Traumbefreiter, 05. März 2018, um 01:44

grundsätzlich vasteh ii doch NIX, hani 😄
nur oans woß ii: da stefan wui mii vom acker jagen! ii gönns ihm ... aba: da gabs doch amal an film, so mit aam imperium, und am strike, so backmassig 😄

wär soo goil: du, da stefan, und ii live im mai 😄

hansolo_forever, 05. März 2018, um 01:49

Dann muß sie erstmal zwischen 'Erfolg' und 'Mißerfolg' unterscheiden können - okay, des is sogar no relativ einfach machbar.
Aber dieses 'saggra, beinah, wenn I na... oder wenn der ned...', die 'Zwischentöne' - des is des, was es eben unberechenbar macht.
Zumindest als Absolutum - bleibt Schafkopf (genau wie andere Sachen mit Zufallsverteilung) UNberechenbar !
Habe fertig, schau weiter 'Star Wars' ^^

zur Übersichtzum Anfang der Seite