1

私は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.最初に染色体を作成すると、標準的な分布に従うランダム世代が最も最適であると言われています。しかし、私の場合の遺伝子は大きな偏差を持っています。無作為に染色体を生成するのはまだ大丈夫でしょうか?

答えて

1

これはフィットネス機能の実行可能な代替品ですか?

はい、そうです。ボードゲームのフィットネス機能を定義するのは、かなり一般的な方法です。おそらく、1回のラウンドでは十分ではありません(しかし、実験しなければなりません)。エージェントが(交換ではなく、自己の試合を回避する)集団からMランダムに選択された相手に演じて

double fitness(Agent_k) 
    fit = 0 

    repeat M times 
    randomly extract an individual Agent_i (i <> k) 

    switch (result of Agent_k vs Agent_i) 
     case Agent_k wins: fit = fit + 1 
     case Agent_i wins: fit = fit - 2 
     case draw:   fit doesn't change 

    return fit 

すなわち:

わずかな変形は、のようなものです。

増加するとノイズは減少しますが、シミュレーション時間が長くなることが必要です(M=5は一部のチェス関連の実験で使用される値です)。アルファベータアルゴリズムの特性の

2.Because

...

質問のわかりません。非常に大きな値は、勝利条件を通知する静的な評価関数の標準的なアプローチです。

正確な値はあまり重要ではないため、おそらく最適化の対象にすべきではありません。

3.最初に染色体を作成すると、ランダムな世代が標準的な分布に従って最も最適と言われます。しかし、私の場合の遺伝子は大きな偏差を持っています。無作為に染色体を生成するのはまだ大丈夫でしょうか?

これは、使用する特定の遺伝的アルゴリズム「フレーバー」と多少関連しています。

標準的な遺伝的アルゴリズムは、完全にランダムではない初期値でうまくいく可能性があります。

他の変異体(例えば、差動進化)は、この側面に対してあまり敏感ではない可能性がある。

はこの質問/答えでも見てみましょう:Getting started with machine learning a zero sum game?

+0

あなたはどう思いますか、それはモンテカルロ木探索とアルファベータ剪定を交換することが可能でしょうか? –

+1

@TodorBalabanovおそらく、はい。 GAは、静的評価関数のパラメータについてここで提案されたのと同じ方法で、MCTSヒューリスティックのパラメータを最適化するために使用することができる。実際に私はChess/Alpha-Beta/GAsを実験しましたが、私はMCTSの経験を直接経験していないので、重要な側面を見落とすかもしれません。また、最適化時間も大きな問題になる可能性があります。 – manlio

+0

MCTSはABPよりも実装がはるかに簡単であるため、私はそれがより好きです。また、MCTSは、十分な計算資源がない場合、時間制限される可能性がある。 –

関連する問題