KMC活動ブログ

京大マイコンクラブの活動の様子を紹介します!!

第一回2048AIコンテスト 結果報告

KMC2回生のprimeです。

追記: ソースコードへのリンクを追加しました。 (2014/05/16)

概要

2014年5月12日(月)にKMCの部室で第一回2048AIコンテストが開催され、7つのAIが参加する活気のあるコンテストとなりました。

今回はコンテストの様子をUstreamでも配信しました。

事前にアナウンスしていたルールではAIひとつにつき20分の持ち時間としていましたが、参加するAIが多くなったため、1AIにつき10分に変更しました。

結果

順位 得点 AIの名前 製作者 ソースコード
1 71664 nona7 asi1024
2 71640 greatAI prime Github
3 51512 sio16384 siotouto
4 35976 parrot chir Github
5 26572 koyone nona7 Github
6 26560 yaruze2048 nonylene
7 7952 SuperStrongAI Mk-Ⅱ lp6m

AIに使われている技術

今回の2048AIコンテストで出場したAIたちのとった戦略は大きく分けて全探索とモンテカルロ法の2つの戦略に分けられます。

全探索

この方法では、盤面それぞれから「盤面の良さ」を計算する関数をつくり、動かしたあとの盤面をすべて列挙し、それぞれ盤面について「盤面の良さ」を評価して、「盤面の良さ」が最も大きくなるように動かします。また、必要に応じて更に先の盤面を読み、その盤面の「盤面の良さ」も計算することで更に精度を高めています。

この方法はオセロや将棋などのAIでよく採用されています。

一般にオセロや将棋などのAIではたくさんの手数を読んだほうが有利とされていますが、今回参加したsio16384というAIは1手しか読んでいないにもかかわらずかなりの高得点をたたき出しています。

全探索を使ったAI

  • nona7(71664点)
  • sio16384(51512点)
  • koyone(26572点)
  • yaruze2048(26560点)
  • SuperStrongAI Mk-Ⅱ(7952点)

モンテカルロ法

この方法では、ゲームオーバーになるまで、あるいは数十手先までランダムに動かして、最後の盤面について評価関数で評価したり、ゲームオーバーになるまでかかった手数などを評価して、最もふさわしいと思われる手を選択していく方法です。すべての手を評価するわけではないので、読み落としなどが発生することがありますが、多くの場合確率的に有利な手を選択できるという利点があります。

この方法は囲碁のAIでよく利用されています。

モンテカルロ法を使ったAI

  • greatAI(71640点)
  • parrot(35976点)

全体のまとめ

今回の2048AIコンテストでは、どちらの手法のほうが強い、という事が判断できるほどの差は見当たりませんでした。また、どちらの手法にせよまだ改良の余地があるように思われる点もいくつかありました。改良していった際にどちらが強いのかも気になるところです。

今後について

次回の2048AIコンテストは2014年6月4日(水)に開催します。 今回はどのAIも作ることのできなかった8192やそれ以上のタイルを作るAIは登場するのでしょうか?また、更に強いAIを作る技術は登場するのでしょうか?ご期待ください!