私は、ミニマックスアルゴリズムを使用してAIを実装したゲーム(グリッドでグリッドに変換)をプログラミングしています(アルファベータ剪定を使用)。それはすべて問題なく機能していますが、AIは良すぎるため、私はそれに勝つことができません。
それでは、ゲームの難しさを紹介したいと思います(簡単、通常、ハードなど)。現状のAIは難しい問題です。
私の質問:ミニマックスAIに複数のレベルの難易度を実装するための最良のアプローチは何ですか。
2つのアイデアのバランスをとっています。
選択した難易度に応じて異なるヒューリスティックを使用する
最善の動きの選択にランダム性を追加します。たとえば、通常の難易度を選択したとします。その場合、x%の確率で、ハードと同じヒューリスティックによって与えられる最高の動きを選択します。
あなたが試すことができる多くのアプローチがあります:
skill
パラメータを使用して、各コンポーネントが最終スコアにどのように貢献するかを重み付けできますskill
パラメーターによって多少制御されます)artificial stupidityトピックはチェスで非常によく研究されています(例 Artificial stupidity-プログラムをひどくする または 筋力の低下 他の多くの興味深いアイデアの場合)。
実際の例としては、ロバートハイアットの Crafty engine を見て、ソースでSKILLを検索できます。
とにかくあなたはそれを考慮すべきです: