バランスを取る必要があるコンピューターの対戦相手へのスコアリングアプローチ


16

この質問は、私が作成し、いくつかのコンピューターゲームで現在使用されているか、使用される予定のコンピューターの対戦相手に対するアプローチに関するものです。

バックグラウンド

昨年、「Minesweeper Flags」と呼ばれるゲームでコンピューターの対戦相手を改善しようとしたとき(簡単な説明:対戦相手よりも多くの地雷を奪わなければならない、ターンベースのマルチプレイヤーバージョンのMinesweeper )、アルゴリズムの動作を大きく変えました。 。if-else-if-elseのようなアプローチを使用する代わりに、指定された重みを持つ「スコアラー」のセットを使用して、最適な動きを決定しています。

マインスイーパフラッグのようなゲームでは、地雷を奪う可能性が最も高いのは動きを作ることだけですが、それほど単純ではありません。通常、コンピューターがどの動きをするかは、現在のゲーム状態での特定の動きのいくつかの機能に依存します。機能の例:

  • この動きが地雷を採点する確率はどのくらいですか?
  • ここで相手に何かを明かす確率はどれくらいですか?

システムの説明

システムは基本的に次のように機能します。

  1. 「事前採点者」:現在のゲームの状態に対して事前分析が行われます(掃海艇の旗に関しては、これは通常、すべての確率の計算です)
  2. 「得点者」:通常の得点者のセットは、各可能な動きの得点を決定するように求められ、各得点者はそれ自身の基準に従って得点を適用します。得点者は、行われた事前分析の結果を確認できます。
  3. 上記のステップで計算されたスコアは合計され、移動のスコアに設定されます。
  4. 同じスコアのすべての動きが同じランクになるように、動きはスコアに従ってソートされ、ランク付けされます。
  5. 「ポストスコアラー」:上記の結果は、ポストスコアラー自身のルールに従って、任意のフィールドのスコアを任意の方法で変更できる「ポストスコアラー」に送信できます。

プリスコアラー、スコアラー(ウェイト付き)、ポストスコアラーの束を組み合わせると、スコア構成と呼ばれるものになります

結果例

これは、掃海艇旗にスコアが適用された例です。これは得点されたマップです:

得点された掃海艇旗マップ

そして、これは実際のスコア設定の出力です。可能な動きのランクを示しています。1が最高ランクで、白で強調表示されています。

スコアリングアプローチの出力例

非常に柔軟なコードを記述したおかげで、このAIへのアプローチは他のゲームにも同様に挿入できます。

長所と短所

以下に、このシステムの長所と短所をいくつか挙げます。

長所

  • AIのさまざまな構成を非常に簡単に作成できます。
  • 遺伝的アルゴリズムで使用することは可能です:各スコアラーには関連する重みがあり、重みが遺伝子になることができます。
  • いくつかのツールを使用して、特定の移動が行われた理由と、その移動の主な責任者を確認できます。
  • ツールを使用して、可能な動きの全体的なスコア/ランクのマップを作成することができます(上のスクリーンショットのように)
  • 人間のプレイ方法にスコアを適用することにより、人間が行うと思われる動きをしようとする「#AI_Mirror」を作成することができます

短所

  • AIを可能な限り良好にプレイするために、スコア構成を「正しく」調整することは非常に困難です。

ご質問

  • ここで構築したシステムは、AIの世界で広く知られていますか?実際のAI用語では何と呼ばれますか?

  • このアプローチは理にかなっていますか、または推奨する別のアプローチがありますか?

  • スコア設定を微調整するプロセスを簡単にする方法はありますか?

最後の質問について、私は遺伝的アルゴリズムを使用する可能性を知っています。SARSAについても少し気づいていますここに)。SARSAの問題は、ゲームが終わるまで報酬がわからないことだと思います。最良の動きは、報酬(地雷)をまったく与えない動きであることが多いです。現在の勝つ可能性は、現在のスコア(あなたと対戦相手が何個の地雷を奪ったか)と、現在のマップがどのようなものかによって異なります。


この質問はもともと、今では機能しない人工知能サイトに投稿されまし
このアプローチに使用される(Java)コードは、現在Code Reviewに投稿されています

回答:


7

一言で言えば、それはエキスパートシステム(ファジーロジックなど)です。出力に基づいて決定パラメーターにフィードバックを実行するアルゴリズムを実行していないため、実際には学習していません。ただし、フィードバックを実行することが、対数がAIであるかどうかを示す唯一の指標ではありません。それがインテリジェントに見える方法で動作する場合、それはすべての問題であると主張することができます-特にゲームが人間の対戦相手によってプレイされる場合。

指定したアルゴリズムの種類は、実際にはパラメーター化された方程式であり、保険の計算で見つかる種類です。各移動の後、入力スペースは変化しますが、アルゴリズムは前の状態のメモリを必要としないため、各移動を新しい別個のボードとして扱います。

遺伝的アルゴリズムの使用

遺伝的アルゴリズムには2つの明確なオプションがあります。

  • ゲノムのパラメーターを使用します(提案どおり)。持っているルールを最適化しますが、まだエキスパートシステムが残っています。
  • 学習分類システム(LCS)を使用して、ルールを選択します。LCSは、ルールとパラメーターをエンコードする一種の遺伝的アルゴリズムです。それらは収束するのに時間がかかり、フィットネス関数に敏感です。結果として生じる遊び方は、それにとってより興味深いかもしれないと思います。

焼き鈍し法

問題を解決する別の方法は、シミュレーテッドアニーリング(SA)を使用することです。問題は入力空間の制限であり、任意のシナリオで選択するのに最適な正方形を見つける関数を分析的に記述することができます。Simulated Annealingを使用すると、パラメータに最適なグローバルが見つかります。

作りすぎ

アルゴリズムを最高のものにしたいのですが、人間がそれと対戦していることを忘れないでください。これらの種類の決定論的ゲームをプレイするための戦術的に完璧な方法があり、AIプレイヤーがそれを受け入れた場合、プレイヤーが勝つことを意味するのは純粋に運だけです。


あなたの答えは私に多くの勉強を与えてくれました、ありがとう!私はよく分からないが、私は「決定論」..として、この特定のゲームを分類に同意
サイモン・フォースバーグ

私がそれが決定論的であると言う理由は、任意のゲームの可能性の数が制限されているためであり、人間のプレイヤーはランダムな選択をするように見えるかもしれませんが、彼らは決定論的であるような厳密に定義された空間内でそうしています。経験則として、乱数ジェネレーター(または制御しない外部要因)を使用している場合は、確率論的です。そうでない場合、それは決定論的です。
ロブラング博士

まあ、掃海艇確率論的だと思います。フィールドを明らかにする動きをするまで、フィールドの内容がわからないからです。
サイモンフォースバーグ

1
それを確率論的にしない私見。次の場合は確率的です:同じ開始条件(非表示のボード)を指定すると、正方形をクリックするたびに結果が異なる可能性があります。
ロブラング博士

2
確率的/決定論的および完全に観測可能/部分的に観測可能なものは、厳密に異なる直交特性です。定義により(たとえば、Russel / Norvig "環境の次の状態が現在の状態とエージェントによって実行されるアクションによって完全に決定される場合...")マインスイーパは決定的ですが、完全には観測できません。
ペテルス14

0

はい、位置の特定の側面に基づいてスコアを割り当てる手法は、ゲームをプレイするAIを作成する際の標準です。たとえば、ほとんどすべてのチェスプログラムは、使用可能な駒に最も大きく基づいて位置をスコアリングすることで機能し、位置に基づいて小さなボーナス(ポーンがお互いを保護するなど)を使用します。次に、アルファベータなどの敵対的検索アルゴリズムを使用して、利用可能な最善の動きを計算します。

分岐要因が大きいため、ここでは敵対的な検索が困難になる可能性があります。どの位置でも、未知の正方形をマークまたは明らかにすることは合法的な動きです。一方、ヒューリスティックによって分岐要因を大幅に削減できる可能性があります。たとえば、何も知らない正方形にマークを付けたり、明らかにしたりすることは、最高の動きになることはめったにありません。逆に、マークされていない地雷の位置を知っている場合、それらの1つをマークすることは、ほとんどの場合、おそらく最高の動きです。転置テーブルを維持することもおそらく役立つでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.