キングオブザヒルチャレンジに参加するボットを作成するための一般的なヒントは何ですか?チャレンジを検討してからボットを作成するまでの戦略は何ですか?どのデータ構造が最も便利だと思いますか?
回答ごとに1つのヒントを投稿してください。
キングオブザヒルチャレンジに参加するボットを作成するための一般的なヒントは何ですか?チャレンジを検討してからボットを作成するまでの戦略は何ですか?どのデータ構造が最も便利だと思いますか?
回答ごとに1つのヒントを投稿してください。
回答:
これは、KOTHが比較的単純な決定セットを含み、少数のプレーヤー(通常2人)のみを含み、決定論的である場合に非常に重要な概念です。ナッシュ均衡は「グリッドロック」ポジションを表します。2人のプレイヤーが2つの戦略を決定した場合、2人のプレイヤーはそれらのポジションに効果的にロックされます。
ナッシュ均衡が重要なゲームの例:
平衡を見つける方法
実際に均衡を見つけることは、実際にはほとんどの単純なゲームで非常に簡単であり、多くの場合非常に直感的です。トンの様々な方法についての詳細は、インターネット上で見つけることができます。通常は適用される基本概念は、2人のプレーヤーが使用できる戦略のリストを作成することです(ゲームで提供されるオプション)。ある戦略が別の戦略に「支配されている」場合、その戦略はリストから削除され、プロセスが繰り返されます。「支配」とは、戦略Aが戦略Bよりも常に同等以上の結果を与える場合、残りのすべての敵戦略に対して、戦略Bをリストから削除できることを意味します。
例:じゃんけん
RPSには「混合」平衡と呼ばれるものがあります。これは、分布が関係していることを意味します。同じ動きを繰り返しプレイするのではなく(クイック敗北につながる)、1/3のロック、1/3のペーパー、1/3のハサミをランダムな分布でプレイします。ランダムにプレイする場合、対戦相手が私に有利になるためにできることは何もありません。対戦相手がランダムにプレイしないことを選択した場合、それは彼の側に脆弱性を作成するだけです。
混合平衡のゲームは、おそらくPPCGで最も一般的です。なぜなら、それらは多くの形をとることができるからです(純粋な平衡で考えることができる唯一の興味深いゲームは、囚人のジレンマです)。混合平衡は一様にランダムである必要はなく、単に毎回同じ動きをすること以外の何かに注意する必要があります。
この情報を使用する
ゲームのナッシュ均衡は、多くの場合、操作を試みる必要がある「ベースライン」を表します。RPSでは、ランダムにプレイすることで、パックの中央付近でのフィニッシュスポットが保証されます。トップに移動するには、他のプレーヤーの弱点を特定し始める必要があります。
これを行うには、相手の弱点が不確かな場合に均衡を保つ必要があります。それらの弱点が特定されたら(相手が平衡状態にないことを検出したら)、平衡状態から穏やかにシフトして、相手を利用する必要があります。このアクションは、次に、あなた自身の弱点を作成します。その後、対戦相手が戦略を変更していることを検出する必要があります。これにより、攻撃を停止してランダムプレイを再開できます。
平衡からの変動の検出
これはかなり難しく、私は専門家ではありません。バリエーションにはさまざまな形式があります。
通常、チームを支援するタスクを完了するために単独で動作するボットを作成できますが、ゲームの内外で調整する場合には、はるかに大きな利点があります。この典型的な例は、赤対青ピクセルチームバトルボットで見ることができます。
開発中、チームはチャットを行い、ボットを調整して単独よりもうまく機能させる方法を話し合うことができました。技術的には同じボットですが、SphiNotPi3000は他のボットと連携して動作するように記述されており、単独で存在する場合に直面する脆弱性を考慮した方法で移動することができました。最終的な結果は、他のチーム全体に対して2人だけだったとしても、彼らが戦場をほぼ完全に支配できたです。
ゲーム外で、どの戦略をカバーするかについてチームメイトと計画し、調整します。多分誰かが地図を斜めにスキャンするボットを持っているでしょうか?水平方向にスキャンしてください(ほんの一例)。ゲーム内で、チャレンジがチームコミュニケーションを可能にする場合は、それを利用します。たとえば、バトルボットゲームでは、視界外のボットの位置についてチームメイトにメッセージを送信し、それらの信号を使用するために互換性のある方法でボットを書くように促すことができます。
ほぼすべての巧妙な戦略には、それを打ち負かす別の戦略があります。たとえば、対戦相手は次の動きを予測してそれを打ち消すためにあなたとまったく同じ推論を使用するかもしれません。対戦相手をもう一度推測しようとするかもしれませんが、いつ停止するかを知るのは困難です。
別の問題は、賢い相手を推測するのが得意な戦略は、より単純な相手に対して最適とはほど遠いことです。
どうすればこれを解決できますか?ボットに、どの戦略を使用するかを即座に決定させます!
このために、ボットにさまざまな戦略のレパートリーを与えることから始めます。次に、各移動の前に、ボットはこれまでに記録されたゲームの履歴を見て、これらのさまざまな戦略がどのように成功したかを評価します。それはそれから最も成功したであろうものを写真にします。
そもそも強力な戦略を含めることは、ボットから選択するための適切なオプションを提供するのに役立ちます。しかし、非常に単純なものも含める必要があります。なぜならば、それらはしばしば愚かな相手に対してより良く機能するからです。
オーバーフィッティングを回避する(たとえば、対戦相手がランダムに行動するパターンに勝とうとする)ため、またはまだ多くの情報がないときに特定の戦略を優先するために、いくつかの戦略にバイアスをかけることを検討できます。
もちろん、このアプローチは特定の種類のキングオブザヒルチャレンジでのみ機能します。Rock-Paper-Scissors-Lizard-Spockの試合では、私にとってはとてもうまくいきました。他のゲームでは、特定の戦略が実際にプレイされなかった場合にどのように成功したかを評価することはほとんど不可能です。
この不正なアプローチ(不正行為との境界線)の極端な形は、他のすべてのボットの既知の動作を自分のボットに含めて、その動きを完全に予測できるようにすることです。