こんにちは、みんな、
先日、息子に方眼版の「戦艦」をやってほしいと頼まれました。 各人は、長さが 5、4、3、3、2 単位 (および幅が 1 単位) の 5 つの「船」を持っていました。 「船」は XY 空間の 10 x 10 のグリッドに配置されました。各「船」には、(x,y) 座標の一意のセットがありました。 たとえば、3 つのユニット「船」の 1 つが座標 (3,4)、(4,4)、および (5,4) を持つことができます。 複数の「船」が同じ (x,y) 座標を占めることはできません。 「船」は縦か横にしか走れません。斜めに配置することはできません。
次に、座標 (x,y) のペアを順番に呼び出して、誰が他の誰かの「船」に直撃したかを確認しました。 私たちには、他の人の「船」と同じ数の「船」を攻撃する (または沈める) ための 16 ターンしかありませんでした。 これを行っていたとき、ランダムに座標を呼び出すよりも、他の人の「船」にぶつかる(および/または沈む)可能性を最大化するためのより良いアプローチがあるに違いないと思いました。 もちろん、「船」に衝突したか衝突しなかったかがわかるので、既に使用した座標 (x,y) を呼び出すことはありません。
最初は、カスタム デザイン プラットフォームが適切な方法ではないかと考えていましたが、Y が「ヒット」(いいえ/はいの場合は 0/1)、X1 = x および X2 = y 座標のデザインを作成する場合(10 レベルの離散数値)、プラットフォームは、X と Y ごとに高レベルと低レベルのみを使用する設計を生成します。 ところで、モデルの項は x、y、および交差項 x*y だけです。 そのため、残念ながらカスタム デザインは機能しません。
Full Factorial DOE プラットフォームは、100 回の実行 (10x10 の Factorial) を行う必要があり、それぞれ 16 回の実行 (試行) しかないため、機能しません。
RSM DOE プラットフォームは高/低レベルでのみ機能し、低/高レベルには 1 と 10 を入力します。 CCD 設計オプションは、「船」が配置される 10 x 10 グリッドのスペースを実際には埋めません。グリッド スペースをカバーするには中央のランが多すぎます。
これに適用できる唯一の他のプラットフォームは、スペース フィリング デザインです。 同じ低/高、1/10 の設定を x と y に使用し、応答として "Hit" (これは 2 進数、いいえ/はいの場合は 0/1) を使用すると、(x,y) ペアリングを持つ DOE テーブルを取得できます。グリッドスペースを埋めます。 スペースフィリングの設計方法、FFF、ユニフォーム、またはラテンハイパーキューブなどに最適な選択が何であるかはわかりません.
もっと重要なことは、DOE が固定されていることです。最初の実行の結果に基づいて、既知の情報を考慮して DOE をどのように変更するかという意味で「適応可能」ではありません。 上記の 3 単位のボートの座標を使用して、最初の実行で座標 (3,4) を呼び出し、ヒットしたとします。 「船」のレイアウトが水平または垂直のいずれかであることを知っているので、私の次の呼び出しは DOE にはまったく従わず、代わりに (3,5)、(3,3)、(2,4) を呼び出します。 、または (4,4) -- x または y を 1 単位増やして、結果を確認します。 ボートが沈むか、次の可能な開始座標に移動するまで、というように続きます。
「ヒット」を生成するために16回の実行を最適化できる適応DOEを生成するためのより科学的な方法を見つけたいと思います。 静的な DOE から外れても、実行のたびに座標が「使い果たされ」、それがヒットしたかどうかを学習するため、そうはなりません。 各実行は、n+1 回の後続の実行に通知します。 私の知る限り、このようなことを処理できる DOE は存在しませんが、私もこの分野の専門家ではありません。
「戦艦」でできることは、ランダムに開始点を選択することですか? 私はそうは思いませんが、基本的に「if/then」ステートメントを含む適応型 DOE を使用する方法を理解するのに苦労しています。前のステップ。 16回の試行で勝つ可能性を最大化するために、実行ごとに選択を最適化する「適応可能な」DOEがあればクールです.
議論をありがとう!,
DS
PS、JMPと「戦艦」を検索すると、これが見つかりました役職に@ジョーダン・ヒラーこれは、JMP を使用してさまざまなゲームをプレイする方法を示しています。 @brady_brady 「Battleship」を実際にプレイするためのJSLコードを書きました。 とてもかっこいい! そのJSLをすぐにダウンロードします!
やあ@ジョーダン・ヒラー、
ブログへのリンクをありがとう、私は記事を楽しんだ。
私は、船が特定のマスにいる確率を計算する方法の背後にある概念を一般的に理解しています.これは、船の種類ごとに異なります. ただし、ボードの確率状態はプレイの各ラウンドの後に変化するため、次に発砲する正方形の選択は変化します。これは、私にとっては、ヒット/ミス/ボートのサイズ/残りのラン数。
ブログの投稿者は、ボートが占有する正方形の数のちょうど 2 倍である 34 回の移動でゲームを処理できるアルゴリズムを生成することができました。 おそらく、勝つために必要な手数を 17 に近づける最適な決定パスを生成することは可能でしょう。 正確には17歳ではないかもしれませんが、非常に近いです。
確かに、ML/AI アプローチはゲームに勝つためのアルゴリズムを構築できますが、それはやり過ぎであり、私が本当に求めているものではないことに同意します。 ブログ担当者が行ったことと、DOE を利用したことのブレンドにもっと興味があります。 明らかに、ゲーム ボードの確率密度関数は、意思決定の選択において重要です。 しかし、それを純粋な確率計算から、最適化された空間充填に基づく計算に変更することはできます。これは、DOE が最も可能性の高いヒットを生成するように、ボードの確率関数を DOE の「重み付け」関数として供給するようなものです。 最初に最大のヒット数を生成してから沈没に集中するほうが、ハント モードに移る前に最初に船を沈没させることに集中するというブロガーのやり方よりも、より迅速な勝利につながるように私には思えます。
とにかく、私は考えたり考えたりするのが面白いと思いました。どうやら他の人もそうだったようです!
ありがとう!、
DS
楽しいアイデアだ、ディードリッヒ!
これは、このトピックに関する古いブログ投稿です。誰かが、特定のゲーム状態のグリッドの各正方形に船が存在する確率を計算する方法を見つけました。 https://www.datagenetics.com/blog/december32011/その後、モデルも必要ありません。最も可能性の高い正方形を選択するだけです。 機械学習プロジェクトもいくつかありますが、それはやり過ぎのようです!
ヨルダン