0

私はコードの後ろにルールを指定するボードゲームのヒューリスティックな機能を理解しようとしています。示すように、最初のボードは、緑と赤のトークンを保持しているボードゲームのヒューリスティック機能AI

def evaluate(self, board): 
     score = 0 
     for i in range(board.LENGTH): 
      for j in range(board.WIDTH): 
       if board.board[i][j].token == "G": 
        score += 100 * (i+1) + 50 * (j + 1) 
       if board.board[i][j].token == "R": 
        score -= 100 * (i+1) + 50 * (j + 1) 
return score 

Board

:私の評価関数がこれです。 AIが最初に動いて、あなたのトークンを攻撃してあなたの反対の色をプレイします。黒のセルでは、トークンは直交(左、右、上、下)または斜めに移動できます。それが白いセル上にある場合、あなたは直角にしか移動できません。

相手のトークンの隣に自分のトークンを移動すると、その方向の相手のトークンがすべて削除されます。例:緑のトークンをC4からC5に移動すると、C-6からC-9までのすべてのRトークンを削除します。これを前方攻撃といいます。同様に、相手のトークンの隣にトークンがある場合、そのトークンから離れて、その行のすべてのトークンを取り除くことができます。明らかに、黒色セル上のトークンは、より可能性のある移動を有する。

AIのヒューリスティックな機能は何でしょうか?現在の機能で何を変更する必要がありますか?

+0

私はそれがすべてのルールになるとは思わない:あなたは勝利の基準を与えていない。 – Prune

+0

勝利の基準は、すべての対戦相手トークンが完了したときです。そして、それぞれの側から5回の連続した不成功の動きがあった場合、引き分けがあります。 – Bob

+0

反対のトークンから別のトークンに行を移動する場合、移動の両端でトークンを削除しますか? – Prune

答えて

2

あなたの持つ機能は、実際には非常に悪いです。右下隅とピースの数量を評価します。 D8でのシングル作品は、中央で3つ以上の価値があります。

AIで現在の技術を採用することをお勧めします。研究を依頼する代わりに、空間を探索するプログラムを開発します。ワイドベースの評価関数を開発し、その関数のパラメータを最適化するために遺伝子検索を実行します。例えば

、作品の全てを反復するが、代わりに行& COL番号

  • の機能を使用するには、上
  • 隣接敵ピースを
  • 隣接優しい部分を黒四角を占有または近くの端/コーナー
  • 利用可能な移動

ここで、評価関数をこれらの機能の線形結合にしてください。たとえば、100セットのパラメータを選択します。これらのプログラムをラウンドロビントーナメントで互いに実行します。

トップ20フィニッシャーを保管してください。突然変異と交叉によってさらに80組のパラメーターを作ります。トーナメントを繰り返す。

プログラムの強さが収束するか、少なくともあなたを満足させるレベルに達するまで、これらの繰り返しを続けます。

+0

私は既にミニマックスと検索アルゴリズムを持っていて、ツリーを反復処理しています。私は、AIプレーヤーの効率を損なうことなく、ヒューリスティックな機能をどのように実装するのかよく分かりませんでした。黒いセルにもう少し重みを付けることを考えていましたが、白いセルに移動する方が良い場合でも、トークンは黒に移行し始めました。 – Bob

+1

だからこそ私はアルゴリズムを見つけるためにこの研究を提案しています。あなたはこれを戦場に残さないでください。この実験を完了して実行し、全体の勝者を新しい評価関数として使用します。 – Prune

関連する問題