SamurAI Coding 2014

情報処理学会主催のAIプログラミングコンテスト SamurAI Coding 2014 にエントリしましたが、見事に予選で敗退してしまいました。。。ただ、せっかくなので、作ったAIプログラムを簡単に紹介したいと思います。ソースはGitHubで公開しています。

ゲームルール

4人1組でプレイするシミュレーションゲームです。各プレイヤーは大名となり、6人いる領主を味方につけることで兵力を増やし、最終的な兵力を競います。領主と交渉を行うことで親密度が上がり、味方になる可能性が高まりますが、交渉できる回数には制限があります。AIは、各ターンでどの領主と何回交渉するかを決定します。ちゃんとしたルールの説明は公式サイトを参照してください。

戦略

今回実装したAIは、比較的単純なルールベースのAIです。ざっくり言うと次のような戦略で動いています。

      • 各ターンの始めに以下の処理を実行
        • 他の大名と各領主との親密度を予測
        • 予測した親密度と自分との親密度を比較して、自分の位置付け(どの領主なら親密度1位を狙えそうか)を計算
        • 自分の位置付けをもとに、各領主に対する方針を決定。方針は次の3つの中から選択
          • 親密度1位を狙いにいく
          • 親密度4位を避ける
          • 無視する
        • 上記の方針に基づいて各領主との交渉回数を決定。交渉回数が足りない場合は、兵力の多い領主を優先

実装

何となくJavaで実装してみました。

結果

前述の通り結果は予選敗退でした。事前の対戦練習ではそれなりにいい結果が出ていたのですが、やはり単純なルールベースでは厳しかったか。今後、似たようなコンテストにエントリする場合は、ちゃんとモンテカルロとか実装したいと思います。