Hallo alle,
Neulich bat mein Sohn darum, die Rasterpapierversion von „Battleship“ zu spielen. Jede Person hatte 5 "Schiffe", die 5, 4, 3, 3 und 2 Einheiten lang (und eine Einheit breit) waren. Die "Schiffe" wurden auf einem 10 mal 10 Raster im XY-Raum platziert; Jedes "Schiff" hatte einen einzigartigen Satz von (x,y)-Koordinaten. Beispielsweise könnte eines der 3 Einheiten "Schiffe" die Koordinaten (3,4), (4,4) und (5,4) haben. Nicht mehr als ein "Schiff" kann dieselbe (x,y)-Koordinate besetzen. "Schiffe" können nur vertikal oder horizontal fahren - keine diagonale Anordnung ist erlaubt.
Dann riefen wir abwechselnd Koordinatenpaare (x,y) aus, um zu sehen, wer einen direkten Treffer auf dem "Schiff" eines anderen hatte. Jeder von uns hatte nur 16 Runden Zeit, um zu versuchen, so viele „Schiffe“ des anderen zu treffen (oder zu versenken). Während wir das durchgingen, dachte ich mir, dass es einen besseren Ansatz geben muss, um die Chancen zu maximieren, das „Schiff“ einer anderen Person zu treffen (und/oder zu versenken), als nur zufällig Koordinaten auszurufen. Natürlich würden Sie keine Koordinate (x,y) aufrufen, die Sie bereits verwendet haben, da Sie wissen würden, ob Sie ein „Schiff“ getroffen haben oder nicht.
Zuerst dachte ich, dass die Custom Design-Plattform vielleicht der richtige Weg wäre, aber wenn Sie ein Design erstellen, bei dem Y „Treffer“ ist (0/1 für nein/ja) und X1 = x- und X2 = y-Koordinaten (diskret numerisch mit 10 Ebenen) generiert die Plattform ein Design, bei dem sie nur die hohen und niedrigen Ebenen für jedes X und Y verwendet. Übrigens sind die Modellterme nur x, y und der Kreuzterm x*y. Leider funktioniert das Custom Design nicht.
Die Full Factorial DOE-Plattform wird nicht funktionieren, weil sie 100 Läufe (10x10 Factorial) durchführen möchte, und wir haben jeweils nur 16 Läufe (Versuche).
Die RSM DOE-Plattform funktioniert nur auf den hohen/niedrigen Ebenen und bei Eingabe von 1 und 10 für die niedrigen/hohen Ebenen. Die CCD-Designoptionen füllen nicht wirklich den Raum des 10-mal-10-Rasters aus, in dem die "Schiffe" platziert würden - zu viele Mittelläufe, um den Rasterraum abzudecken.
Die einzige andere Plattform, die dafür geeignet wäre, wäre das Space Filling Design. Unter Verwendung der gleichen niedrigen/hohen, 1/10-Einstellungen für x und y und „Hit“ als Antwort (dies wäre binär, 0/1 für nein/ja), kann ich eine DOE-Tabelle mit (x,y)-Paarungen erhalten die den Gitterraum ausfüllen. Ich bin mir nicht sicher, was die beste Wahl für die raumfüllenden Designmethoden, FFF oder Uniform oder Latin Hypercube usw. wäre.
Ich denke, noch wichtiger ist, dass das DOE festgelegt ist, es ist nicht "anpassbar" in dem Sinne, dass basierend auf dem Ergebnis des ersten Durchlaufs das DOE dann modifiziert werden würde, um die bekannten Informationen zu berücksichtigen. Unter Verwendung der 3-Einheiten-Bootskoordinaten von oben sagen wir, mein erster Lauf besteht darin, die Koordinaten (3,4) aufzurufen, und ich bekomme einen Treffer. Da ich die Anordnung der "Schiffe" entweder horizontal oder vertikal kenne, würde mein nächster Aufruf nicht darin bestehen, dem DOE überhaupt zu folgen, sondern eher (3,5), (3,3), (2,4) zu rufen. , oder (4,4) -- Ich würde entweder x oder y um eine Einheit erhöhen und sehen, was das Ergebnis ist. Und so weiter, bis das Boot versenkt ist oder zur nächstmöglichen Startkoordinate weiterfährt.
Ich würde gerne eine wissenschaftlichere Methode zum Generieren eines adaptiven DOE finden, das die 16 Läufe zum Generieren von "Treffern" optimieren kann. Das Abschalten eines statischen DOE wird das nicht tun, weil nach jedem Lauf eine Koordinate "aufgebraucht" ist und ich lerne, ob es ein Treffer ist oder nicht. Jeder Lauf informiert den n+1 nachfolgenden Lauf. Soweit ich weiß, gibt es kein DOE, das so etwas handhaben kann, aber ich bin auch kein Experte auf diesem Gebiet.
Ist die zufällige Auswahl eines Startpunkts das Beste, was man bei "Battleship" tun kann? Ich glaube nicht, aber es fällt mir schwer, herauszufinden, wie ich ein adaptives DOE haben kann, das im Grunde "Wenn / Dann" -Anweisungen enthält, damit es die Verwendung meiner 16 Versuche optimiert und gleichzeitig Informationen von berücksichtigt der vorherige Schritt. Es wäre cool, ein "anpassungsfähiges" DOE zu haben, das Ihre Auswahl für jeden Lauf optimiert, um Ihre Gewinnchance bei 16 Versuchen zu maximieren.
Danke für die Diskussion!,
DS
PS, bei der Suche nach JMP und "Battleship" habe ich das gefunden Post durch @Jordan_Hiller das zeigt, wie JMP verwendet werden kann, um verschiedene Spiele zu spielen, und @brady_brady schrieb JSL-Code, um tatsächlich "Battleship" zu spielen. Sehr cool! Werde diese JSL bald herunterladen!
Hi @Jordan_Hiller ,
Danke für den Link zum Blog, der Artikel hat mir gefallen.
Ich verstehe im Allgemeinen das Konzept dahinter, wie sie die Wahrscheinlichkeit berechnet haben, dass sich ein Schiff in einem bestimmten Quadrat befindet – dies wäre für jede Art von Schiff unterschiedlich. Da sich jedoch der Wahrscheinlichkeitszustand für das Brett nach jeder Spielrunde ändern würde, ändert sich die Wahl für das nächste Feld, auf das geschossen werden soll, was für mich nichts anderes als ein neu optimiertes raumfüllendes Design ist, das Treffer/Fehltreffer berücksichtigt. Bootsgröße/und Anzahl der verbleibenden Fahrten.
Das Blog-Poster konnte einen Algorithmus generieren, der das Spiel in 34 Zügen ausführen kann, was genau der doppelten Anzahl von Feldern entspricht, die von den Booten eingenommen werden. Vermutlich wäre es möglich, einen optimalen Entscheidungspfad zu generieren, der die erforderliche Anzahl von Gewinnzügen näher an 17 bringen könnte. Vielleicht nicht genau 17, aber sehr nah dran.
Sicherlich kann ein ML/KI-Ansatz einen Algorithmus bauen, um das Spiel zu gewinnen, aber ich stimme zu, das ist übertrieben und nicht das, wonach ich wirklich suche. Ich interessiere mich mehr für eine Mischung aus dem, was die Blog-Person getan hat, und der Verwendung eines DOE. Die Wahrscheinlichkeitsdichtefunktion für das Spielbrett ist eindeutig kritisch beim Treffen von Entscheidungsentscheidungen. Aber könnte man das von einer reinen Wahrscheinlichkeitsberechnung zu einer ändern, die auf einer optimierten Raumfüllung basiert - fast so, als würde man die Wahrscheinlichkeitsfunktion des Boards als "Gewichtungs" -Funktion für das DOE füttern, so dass das DOE höchstwahrscheinlich Treffer erzeugen würde. Es scheint mir, dass zuerst die höchste Trefferzahl zu generieren und sich dann auf das Versenken zu konzentrieren, zu einem schnelleren Gewinn führen würde als der Blogger, der sich darauf konzentrierte, zuerst ein Schiff zu versenken, bevor er zum Jagdmodus überging.
Wie auch immer, ich fand es interessant, darüber nachzudenken und darüber nachzudenken, und anscheinend haben andere das auch!
Vielen Dank!,
DS