カレーちゃんブログ

Kaggleや競技プログラミングなどのこと

Hungry Geeseコンペの概要

KaggleのHungry Geeseというシミュレーションコンペの概要を説明するための記事です。

私のsolutinは別記事で書きます。

コンペの概要

コンペは、次のゲームで強いガチョウを作ると勝ちというものでした。

どのようなゲームかは、次の動画をみると、何となくわかると思います。

www.youtube.com

ゲームのルール

ゲームのルールは次のとおりでした。公式では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に進まないのが基本戦略。 f:id:currypurin:20210809114230p:plain

このようなゲーム・コンペだったと思います。

これを前提に。どのように強化学習で強いガチョウを作るのかを考えていました。

それは次の記事で書きます。