私はAlpha-Beta Pruningを使用してGomoku(5行で)AIを作成しました。それはあまりにも愚かなレベルで動きます。まず、Alpha-Betaアルゴリズムのグレーディング機能をぼんやりと説明しましょう。ゲームAIの遺伝的アルゴリズムにおけるフィットネス機能アルファ
ボードを入力として受け取ると、最初に石の繰り返しがすべて検出され、長さによって決定される脅威としての有用性に応じて4つの可能な値の中からスコアが付けられます。そして、すべての反復スコアの合計を返します。
しかし、問題は明示的にスコア(合計4つ)を決めたことであり、最良の選択肢のようには見えないということです。だから私はこれらのスコアを生成する遺伝的アルゴリズムを実装することに決めました。各遺伝子は4つのスコアの1つになります。たとえば、ハードコードされたスコアの染色体は次のようになります。[5、40000,10000000,50000]
しかし、遺伝的アルゴリズムを使用して評点関数のスコアを作成しているため、どのように私は遺伝的適応機能を実装する必要がありますか分からない。だから代わりに、私は次のことを考えました:
私は2つの染色体AとBを持っていて、1つを選択する必要があります。各AIのAとBの両方の染色体を使用してゲームをシミュレートし、勝つ染色体を選択します。
1.これはフィットネス機能の実行可能な置き換えですか?
2. Alpha-Betaアルゴリズムの特徴のため、私は最大条件を勝ち条件に与えなければなりません。ほとんどの場合、無限に設定されます。しかし、私はInfinityを使用することができないので、私はちょうど馬鹿げた数を使用しました。このスコアを染色体に加える必要がありますか?あるいは、それは重要ではなく、グレーディング関数の値を変更しないので、それを定数のままにしますか?
3.最初に染色体を作成すると、標準的な分布に従うランダム世代が最も最適であると言われています。しかし、私の場合の遺伝子は大きな偏差を持っています。無作為に染色体を生成するのはまだ大丈夫でしょうか?
あなたはどう思いますか、それはモンテカルロ木探索とアルファベータ剪定を交換することが可能でしょうか? –
@TodorBalabanovおそらく、はい。 GAは、静的評価関数のパラメータについてここで提案されたのと同じ方法で、MCTSヒューリスティックのパラメータを最適化するために使用することができる。実際に私はChess/Alpha-Beta/GAsを実験しましたが、私はMCTSの経験を直接経験していないので、重要な側面を見落とすかもしれません。また、最適化時間も大きな問題になる可能性があります。 – manlio
MCTSはABPよりも実装がはるかに簡単であるため、私はそれがより好きです。また、MCTSは、十分な計算資源がない場合、時間制限される可能性がある。 –