KaggleのHungry Geeseというシミュレーションコンペの概要を説明するための記事です。
私のsolutinは別記事で書きます。
コンペの概要
コンペは、次のゲームで強いガチョウを作ると勝ちというものでした。
どのようなゲームかは、次の動画をみると、何となくわかると思います。
ゲームのルール
ゲームのルールは次のとおりでした。公式ではOverviewのrules-of-playに記載があります。
- 4匹のガチョウが対戦
- 盤面は縦7、横11のサイズ
- 左端と右端、上と下は繋がっている
- 最大200ターンであり、1ターンにガチョウは左右上下のいずれかに移動する必要がある
- 盤面には常に2つのfood(食べ物)が出現する
- foodを食べるとガチョウの体が1つ長くなる
- 40ターン毎に体が1つ短かくなる
- 相手の体や自分の体に進んでしまうと、消滅し負ける
- 長く生存した方が勝ち、同じターン生存した場合は、体が長い方が勝ち。
レーティング・評価
サブミット後のスコアのつき方は次のとおり。
- サブミットされたガチョウは1日に5〜10試合ぐらい、他のチームが提出したガチョウと試合を繰り返し、その結果によりレーティングが変動。
- レーティングは、対戦相手のレーティングと自分のガチョウの順位に応じて変動
- 順位は、1位、1.5位、2位、2.5位、3位、3.5位、4位の順に良く、その順位に応じて変動する
- レーティングは、Kaggleでは次のように説明されている
Each Submission has an estimated Skill Rating which is modeled by a Gaussian N(μ,σ2) where μ is the estimated skill and σ represents our uncertainty of that estimate which will decrease over time.
- 同じ長さのガチョウ同士で頭が衝突すると、同じ順位になる
- 例えば、残り3匹の状況で、同じ長さのガチョウ同士が衝突すると、衝突したガチョウは2.5位となる。(衝突しなかったガチョウは1位)
- 違う長さのガチョウが衝突した場合、長いガチョウの順位 > 短いガチョウの順位となる
- 例えば、残り3匹の状況で、違う長さのガチョウ2匹が衝突すると、長いガチョウが2位、短いガチョウは3位となる。
基本戦略
ゲームに勝つための基本戦略は、次のような感じです。
強いagentはみんな長く生存するので、foodを相手よりたくさん食べつつ、長く生存する必要がある。ただfoodを食べるのにはリスクがあったりするので、なるべく安全にfoodを食べるような行動が必要になる。
- 長く生存した方が勝ちなので、相手にぶつからず、生存することが大事
- 同じ生存ターンの場合、体の長さで勝敗が決まるので、なるべくfoodを食べて体を長くする
- 次の画像のようにfoodを他のガチョウと同時に食べられる状態の場合に、両方のガチョウがfoodに進むと、両方が消滅してしまうため、foodに進むか進まないか駆け引きの要素が大きい
- この場合、体の短い方のガチョウは、foodに進まないのが基本戦略。
このようなゲーム・コンペだったと思います。
これを前提に。どのように強化学習で強いガチョウを作るのかを考えていました。
それは次の記事で書きます。