SamurAI Coding 2014
情報処理学会主催のAIプログラミングコンテスト SamurAI Coding 2014 にエントリしましたが、見事に予選で敗退してしまいました。。。ただ、せっかくなので、作ったAIプログラムを簡単に紹介したいと思います。ソースはGitHubで公開しています。
ゲームルール
4人1組でプレイするシミュレーションゲームです。各プレイヤーは大名となり、6人いる領主を味方につけることで兵力を増やし、最終的な兵力を競います。領主と交渉を行うことで親密度が上がり、味方になる可能性が高まりますが、交渉できる回数には制限があります。AIは、各ターンでどの領主と何回交渉するかを決定します。ちゃんとしたルールの説明は公式サイトを参照してください。
戦略
今回実装したAIは、比較的単純なルールベースのAIです。ざっくり言うと次のような戦略で動いています。
- 各ターンの始めに以下の処理を実行
- 他の大名と各領主との親密度を予測
- 予測した親密度と自分との親密度を比較して、自分の位置付け(どの領主なら親密度1位を狙えそうか)を計算
- 自分の位置付けをもとに、各領主に対する方針を決定。方針は次の3つの中から選択
- 親密度1位を狙いにいく
- 親密度4位を避ける
- 無視する
- 上記の方針に基づいて各領主との交渉回数を決定。交渉回数が足りない場合は、兵力の多い領主を優先
実装
何となくJavaで実装してみました。
結果
前述の通り結果は予選敗退でした。事前の対戦練習ではそれなりにいい結果が出ていたのですが、やはり単純なルールベースでは厳しかったか。今後、似たようなコンテストにエントリする場合は、ちゃんとモンテカルロとか実装したいと思います。